Software development as an Individual practice
As we evolve we came to a conclusion, that most of the time great achievements require cooperation and collective effort, despite that the technique is essential for most practices that can’t be done by one man that doesn’t mean it’s a silver bullet, and programming is no exception.
When we invented programming we where thinking of an abstraction layer that translate human being logic and thought into a form machine can understand and execute, and overtime software needed more and more collaboration, and as we practice we discovered that we need some rules and conventions, like coding style, line ending character, patterns and paradigms.
After years of successful applications we faced another problem, applications grow larger that one person can comprehend, that is because our collaboration resulted a complex logic, a mashup if different people ideas and mentalities, so a single person cannot possibly digest all of these parts and different point of views.
So we decided that we need to separate stuff, just make smaller parts that communicate over a channel with a standard format like REST, an architecture we now call it SOA (Service Oriented Architecture), when you build a service that isn’t just because loosly coupled modules is a good thing, but also because separating ideas and mentalities is essential for a person to comprehend and extend a module.
In my opinion if your service is still developed by anyone in your company then you’re doing it wrong, the idea is to make the service internal structure as consistent as possible, and that require the minimum number of people to work on this service, preferable even one developer per service.
Maybe we should rethink the practice of programming, collaboration is essential to build larger systems, but which level should we collaborate on is the important point, should we collaborate on class level, packages level, services level.
Remember that every time you collaborate on a project you put part of your mentality in it, and also you shift the consistency of the structure to suit your way of thinking, and the more poeple collaborate the more distorted the project it.