by ColinCochrane on 11/3/17, 6:50 PM with 29 comments
by mabbo on 11/3/17, 7:57 PM
The experience that lead me to this was a particular team I was on where a previous developer had said "aha! All of these pieces of code relate to the same domain model, so we should build a common package of domain model objects and have all the modules share those objects! That way, we don't have to write them all over and over again!"
These weren't just model objects for data passing, but actual business logic inside these models. Usually very simple stuff, but occasionally a particular module would need some special logic on those objects, so in it went.
The problem was that over time, there modules started drifting. Their domains became different ever so slightly and the owners of those modules became different teams. Now if you wanted to modify the domain object, you had to check it wouldn't break code the other teams were developing.
It became a real mess. And all to avoid writing the same simple pojo classes more than once.
by drawkbox on 11/4/17, 12:26 AM
Redundancy vs dependencies is a constant battle, even internally or inside your own head.
Many times it depends on the project, team size and ability of libraries to be maintained whether budget, time or goal of the project and its lifeline.
For instance in gaming, you might have common libs for product purchasing, profile systems, networking, data, serialization, and platform libs to abstract calls. But systems like game objects, physics, gameplay and ui aren't as lib-able unless it is a series of the same type of game or system.
It is better sometimes to just get it out, prototype it and iterate to ship, then harvest and integrate useful/obvious items into dependencies/libraries for the next one. If you are always organizing to dependencies first, you will end up doing lots of unnecessary optimization and sometimes impact shipping speed.
The balance on this is a tough one to learn and changes as you grow more experienced.
by segmondy on 11/3/17, 10:59 PM
When I start developing I encourage redundancy. Premature abstraction is a very dangerous thing that can pin you into a tight corner.
Dependency is also fine, I keep things coupled together a bit close when they are still in development and malleable and decouple once they start to solidify.
It's my personal style of development when working alone. When working in a team, I follow whatever convention that works best for the team.
by austincheney on 11/3/17, 8:15 PM
Unfortunately many applications, or their programmers, never reach maturity. Also there is greater security and dependability in managing certain critical functionality more directly instead of relying upon support from a third party that may not exist with the same level of compatibility in the future.
by marcosdumay on 11/3/17, 9:02 PM
There is something to be said about libraries quality and trivial pieces of code. But I feel that this is just a rant about some environment that lacks a good command line parsing library.
by rdiddly on 11/3/17, 8:35 PM
by everdev on 11/3/17, 9:43 PM
by dozzie on 11/3/17, 8:16 PM
by ivanhoe on 11/4/17, 9:48 AM
by rwmj on 11/4/17, 7:45 AM