..... think better and better manage yourself, and be more productive and less wasteful with your time and energy. In short, you will do more with less.
The Mythical Man-Month:Assigning more programmers to a project running behind schedule, may make it even more late.
The Second-System Effect:The second system an engineer designs is the most bloated system she will EVER design.
Conceptual Integrity:To retain conceptual integrity and thereby user-friendliness, a system must have a single architect (or a small system architecture team), completely separate from the implementation team.
The Manual:The chief architect should produce detailed written specifications for the system in the form of the manual, which leaves no ambiguities about any part of the system and completely specifies the external spcifications of the system i.e. what the user sees.
Pilot Plant:When designing a new kind of system, a team should factor in the fact that they will have to throw away the first system that is built since this first system will teach them how to build the system. The system will then be completely redesigned using the newly acquired insights during building of the first system. This second system will be smarter and should be the one delivered to the customer.
Formal Documents:Every project manager must create a roadmap in the form of formal documents which specifies milestones precisely and things like who is going to do what and when and at what cost.
Communication:In order to avoid disaster, all the teams working on a project, such as the architecture and implementation teams, should stay in contact with each other in as many ways as possible and not guess or assume anything about the other. Ask whenever there's a doubt. NEVER assume anything.
Code Freeze and System Versioning:No customer ever fully knows what she wants from the system she wants you to build. As the system begins to come to life, and the customer interacts with it, he understands more and more what he really wants from the system and consequently asks for changes. These changes should of course be accomodated but only upto a certain date, after which the code is frozen. All requests for more changes will have to wait until the NEXT version of the system. If you keep making changes to the system endlessly, it may NEVER get finished.
Specialized Tools:Every team should have a designated tool maker who makes tools for the entire team, instead of all individuals developing and using their private tools that no one else understands.
No silver bullet:There is no single strategy, technique or trick that will exponentially raise the productivity of programmers.
Saturday, March 15, 2008
"....constantly improve yourself, constantly seek to improve others, and be knowledgeable of your business and customers. ....common sense ... Don't base your career on one technology.... Surrounding yourself with really good people is a lot better way to learn than being the best....Love it or leave it. The people I like to work with the most are the people with passion for what they do. They are the ones that are constantly seeking to do things the right way. They are the ones who are innovating..."