I hate to admit that I got the idea for this article from one of my bosses (think Office Space, but smarter and distributed over multiple companies). In a project management seminar he talked about feature responsibility vs. layer responsibility.
In software development (especially in large and rigid organisations), it is common practice to have designated gui-guys, business-logic people, middleware-staff and database-personal. It is also common practice to give specific responsibilities based on experience and knowledge. So the datebase-guy is responsible for the database-layer, the middle-ware guys are in charge of optimizing anything in between, the business-logic people do the actual work and the gui-department makes everything look splendid. Sounds resonable. Lets call this scheme layer responsibility.
But how get new features added to software. Features go through all layers. There are part gui, part logic, part middle-ware, part database. The work needs to be distributed among experts. Does everyone feel responsible? Yes, but only in their specific field of experience. No one pushes the feature as a whole. Therefore, someone needs to take responsibility for features. Feature responsibility means single developers get responsibility for whole features, no matter what their field is. The datebase guy in charge of the user-management part of the application has to talk to the UI forms developer and the gui developer in charge of stock-management has to argue about database tables with the database pros.
Feature responsibility is a management tool. Delegate responsibilities for features to members of your development team and let let them push features from the drawing board to implementation. You already guess the advantages:
- you delegate responsibility and work
- your team is forced to work together even more closely
- your team is sharing expertise
- no more playing the blame game
Is there a downside? Engineers take layer responsibility on their own. They feel comfortable in their field. Feature responsibility is different. Feature responsibility has to be forced upon them. Not everyone likes taking responsibility outside her or his experience. Like anything knew, some people need to get used to it and will make mistakes.