The project was large enough and management communications poor enough to prompt many members of the team to see themselves as contestants making brownie points, rather than as builders making programming products. Each suboptimized his piece to meet his targets; few stopped to think about the total effect on the customer. This breakdown in orientation and communication is a major hazard for large projects.If you are a student of human nature, it's no surprise the contestants are still at it. In some organizations, it is all about maximum visibility for minimum effort. The truly frightening thing is how far the tools for self-promotion have evolved since the 1970s. These days contestants wield PowerPoint presentations, electronic mail, and instant messaging in their quest for maximum visibility. There's nothing wrong with Joe Programmer using such tools to communicate, but in some cases, he should be spending more time with his favorite IDE.
Of course, the above quote is from The Mythical Man-Month. Having stated the problem, Dr. Brooks begins framing the solution in the very next sentence:
All during implementation, the system architects must maintain continual vigilance to ensure continued system integrity. Beyond this policing mechanism, however, lies the matter of the attitude of the implementers themselves. Fostering a total-system, user-oriented attitude may well be the most important function of the programming manager.In other words, when a software project is in trouble, it is ultimately not the fault of individuals who "suboptimize". It is the architect's job to monitor the integrity of the system and the project manager's job to foster the right attitude. This is a classic system of checks and balances. It may be human nature for developers to minimize effort, but in a healthy organization, the leadership encourages and rewards behavior that results in a better product.
The above quotes come from Chapter 9, Ten Pounds in a Five-Pound Sack. In this context, Dr. Brooks was describing how to safeguard performance when developing large systems. He might just as well been describing how to safeguard the health of a development organization. Only a dysfunctional organization allows a developer to choose building a better career over building a better product. In my opinion, the only way to build a better career should be by building a better product first.