Almost 50 years ago, Gerald M. Weinberg authored The Psychology of Computer Programming. In it, he listed The Ten Commandments of Egoless Programming, which have remained relevant for programmers who were born well after the book was published in 1971.
Weinberg is regarded as a pioneer in taking a people-oriented approach to computing, and his work endures as a guide to the intelligence, skill, teamwork, and problem-solving power of the developer.
While his commandments have become more readily available with the advent of the internet, the commandments still are new to some developers. When they appear to inspire and instruct, we find that they can apply to just about every business area, and even to life itself.
Topics include motivation, personality, problem-solving ability, team formation, and other factors that developers can use to avoid social problems in the programming environment and during any large project.
With that in mind, here are the 10 important lessons developers, project managers, and stakeholders would do well to keep in mind during the project lifecycle.
- Understand and accept that you will make mistakes.
- Don’t wield a title like a badge of "rightness.” Mistakes are rarely fatal in our industry, so find them early, before they make it into production, learn from them, and move on.
- You are not your code.
- The point of a review is to find problems. Don't take it personally when one is found.
- No matter how much "karate" you know, someone else will always know more.
- Seek and accept input from others. You can learn new moves if you just ask.
- Don't rewrite code without consultation.
- Know the difference between "fixing code" and "rewriting code." Inject your ideas within the framework of a code review, not as a lone enforcer.
- Treat people who know less than you with respect and patience.
- Anger and impatience reinforce the stereotypes non-technical people have of developers. Don’t be a bully.
- The only constant in the world is change.
- Look at each change to your requirements, platform, or tool as a new challenge rather than a serious inconvenience. Be open and accepting to them.
- The only true authority stems from knowledge, not from position.
- If you want respect in an egoless environment, cultivate knowledge. That leads to authority, which leads to respect.
- Fight for what you believe, but gracefully accept defeat.
- Sometimes ideas are overruled. When it turns out that you were right, don't take revenge or say "I told you so."
- Don't be "the guy in the room."
- The coder who stays burrowed into the corner cubicle and comes out just for food and energy drinks is out of touch and out of sight. That doesn’t fit in an open, collaborative environment.
- Critique code instead of people – be kind to the coder, not to the code.
- Try your best to keep comments positive and oriented toward improving the code.
Still incredibly relevant. Maybe more than ever. Keep them close, and over the long haul they'll make you a better developer and co-worker — and perhaps a better person.