
Coding is the process by which programmers turn a design into computer programs. Coding is the most people-intensive activity of any project, and therefore requires a finely tuned environment that empowers individual creativity and maximizes team efficiency.
We have worked hard to create a fine-tuned programming environment by concentrating on a few key areas.
The larger the programming team, the more likely the project will fail. To keep the team size small, we hire hyper-productive programmers who are 3 to 5 times more productive than average programmers. Why doesn't everybody do this? Because less than 3% of the programmer population is hyper-productive, they are generally not available when you are in a rush to find them. Most organizations rush to hire when they have a serious project schedule pressure and settle for less. We, on the other hand, are on the lookout continuously and when we find good ones, we grab them!
Simply hiring smart programmers isn't enough to ensure success. A good process and strong tools are equally crucial. Every year, we invest about $20,000 per programmer on tools to aid our object-oriented development process. To get the maximum benefit out of this investment, we continually mentor the programmers on effective usage of our process and tools. We have found that such continual mentoring of programmers is a lot more effective than sending them to short training courses. Short courses can only give good overviews, but long-term mentoring gives the wisdom needed to attack serious projects.
We don't write code unless we absolutely, positively must. For over six years, we have been creating a library of reusable code; some we own, some we license. Reusing code from this library speeds up your project delivery and reduces cost.
For most projects, cost of ownership is more important than the cost of building. If the programs are hard to understand, the maintenance costs will soar. That is why we have a "Telephone Test" rule for coding. If a programmer reads his/her code to another programmer on the telephone, and the person on the phone doesn't understand, the code should be rewritten.
Here are some of our other rules:
We also pay attention to several other coding issues, such as defensive coding, instrumentation, sufficiency, completeness, and internationalization. These rigorous coding practices have enabled us to rapidly deliver several complex projects. If you would like us to help you build your system, or if you simply want us to share more of our coding practices with you, please contact us.