While surfing internet I came across this piece of wonderful ‘tips’ to write bad code. Re-Sharing.
How is bad code written?
1. Lack of technical seniority among team members.
2. Lack of resourcefulness to tackle the problems at hand.
3. Unavailability of coding standards, and lack of an enforcement model.
4. Lack of a clear software architecture.
5. Lack of software design.
6. Lack of theoretical knowledge which will leverage haphazard coding.
7. Lack of good QA, code review sessions and most importantly accountability.
8. Lack of frequent performance reviews for developers.
9. Lack of goto gurus in the teams (These savvy developers who can find a solution for any problem at hand.)
Solve the above issues and you will have a solid team running your production operation.
I tend to disagree with the assumption that hiring only the best is the solution for the following reasons:
1. Scarcity of talent.
2. Lack of financial resources to bring talent from abroad.
3. Talent comes with some levels of personal ego.
4. Coding talent alone is not enough, multi-disciplinary talent is also important.
5. Investment in junior developers and caring about their personal growth is much better (on the long run) – slightly higher cost but less risk.
Disclaimer: A small production operation of 2 to 3 members doesn’t follow the above. In this situation specifically [which could be the case for many startups] hiring “la creme de la creme” could be the one and only solution for quality.
1. Strict code standards and quality guidelines.
2. Strict enforcement policies accompanied with clear and transparent accountability measures.
3. Frequent code review sessions held by your team leads for their subordinates, and sessions for the team leads held by their superiors in the chain.
4. Clear workflow and production process (Architecture, coding, documentation, QA, coding, more documentation etc…)
5. Iteration, iteration, iteration! Iterative cycles are key to quality! No it’s not as inefficient as you might think. The maintenance cost of bad code quality is much higher than the production cost in the iterative model.
6. Inspiring team leads and goto gurus in each team.
7. Teams composed of different skill-sets. This will contribute to the learning process of your team members. They will learn from each other the different disciplines.
8. Define metrics for performance. This can be achieved by rating review sessions and tracking the progress of team member. Rewarding good performance and pressuring less performing team members.
9. Keep the team number reduced, smaller groups are more efficient than larger ones.
10. Choose wisely your team leads. Intellectual respect is the highest form of respect (in my personal point of view). Having team leads with high intellect and maturity levels will empower them to lead.
Quick solutions implementable overnight?