The 7 Habits of Highly Effective Developers
If you want to achieve your highest aspirations and overcome your greatest challenges, identify and apply the principle or natural law that governs the results you seek. How we apply a principle will vary greatly and will be determined by our unique strengths, talents, and creativity, but, ultimately, success in any endeavor is always derived from acting in harmony with principles to which the success is tied. This advice comes from Steven Covey in his best-selling book, The 7 Habits of Highly Effective People. If you haven't read this book yet, you must. It's about effecting change from the inside out for success in both your personal and professional life by aligning your values with principles through practicing seven habits. Before reading this book, I felt like a passenger on a career freight-train. like something put in motion that I was powerless to control. What I was practicing in my career, my habits, was misaligned with my values, and my values were misaligned with unmovable principles. Although I was powerless over the career train, I came to realize I had the power to choose which train I was on. So here I am at a company that allows me to follow my passion: developing software.
The 7 Habits book is broadly focused, and it made me think about habits specific to my profession. What do those software developers that I consider effective (if not brilliant) have in common? What values drive their decisions and what habits do they practice that make them successful? Here are the seven habits that I think effective developers practice:
Passionate
The most brilliant people I've worked with are passionate about what they do. They aren't driven by money and fame and, I say this with tongue in cheek, if they didn't have families to feed, would develop software without compensation. If I had two candidates for a development position, I'd rather hire a less-experienced person with passion than a more experienced person without. If you aren't passionate about software development, find what you are passionate about and follow that path.
Able to Learn, Unlearn and Re-learn
I believe that learning is an extension of passion, and effective developers operate in a continuum of improvement and innovation. They learn from their and others' mistakes and don't apply old solutions to new problems just because they worked before. Effective developers follow technology, but are careful to not let new approaches become solutions looking for a problem.
Balance Principle and Practice
Principle and practice are the Yin and Yang of software development. Effective developers don't design impractical solutions for the sake of principle and don't implement solutions without overarching values. They are willing to compromise based on time, cost, scope and quality constraints, but can also obtain compromise from others based on sound principles.
Keep It Simple Software (KISS)
Effective developers implement the simplest possible thing that will work while not painting themselves into a corner. They don't implement anything more than is needed right now, remaining mindful about what might be needed in the future. Effective developers know that the less moving parts there are, the less likely it will break and favor elegance and simplicity over convoluted cleverness.
If You Don't Know the Answer, Know Someone Who Does
Software developers aren't renown for their social prowess, but some of the most effective developers I know are excellent at networking. If you give a random 100 question test to a group of people, no one individual will score 100%, but collectively, with few exceptions, the group can answer all the questions correctly. There is so much technology, so many areas of speciality, you can only be an expert on one, maybe two subject areas. Effective developers know the limit of their knowledge, aren't afraid to admit when they don't know something and have many friends and colleagues in their network they can reach out to for help.
Focus on Value
Effective developers understand the forces driving the project, its stakeholders and their goals. Using this knowledge to guide their decision making, they focus on delivering tangible value to their customers over anything else. Effective developers prioritize work based on its value--the so called "bang for the buck," and avoid projects and features they don't believe in.
Puts the Needs of the Many Before the Needs of the One
I've seen small teams accomplish extraordinary things; it's amazing what "two guys and a laptop" can accomplish. Call it teamwork or synergy or whatever you like, when a group of people put common goals before their own, they converge like light into a laser beam. Contrast this with the arrogant, rogue and cowboy developers who go against team standards or design intents because "that's how I do it" or "that's how you should do it." The message they are really sending is "I am smarter than the team."
Conclusion
These seven habits give me something to work towards and keep me focused. I only had room for seven habits in this article, and I'm sure you can think of many more or define effective in your own way. The important thing is to take a value-driven approach to your software development career and do intentional things that move you towards your definition of success.
Additional Reading
- Stephen Covey Speaks at Microsoft
- 7 Habits of Highly Effective Freelance Programmers
- Seven habits of effective developers
- 7 Habits of Highly Effective ColdFusion Developers
- Talent isn’t everything: 7 habits of highly effective junior designers
- The 7 Habits of Highly Effective Web Sites
- 7 Habits of Highly Effective Bloggers
Comments
Anonymous
May 22, 2008
PingBack from http://www.anubhavh.com/blog/?p=36Anonymous
May 22, 2008
Nice distillation -- you hit the keys. I particularly like -- "ability to learn, unlearn, and relearn" and "focus on value" ... and nothing happens without "passion." I think success is a combo of playing to your strengths, reducing liabilities, and following your passion. Here's a related post you might enjoy -- 7 Habits of Highly Effective PMs - http://blogs.msdn.com/jmeier/archive/2007/04/09/7-habbits-of-effective-program-managers.aspxAnonymous
May 22, 2008
Great post! I totally concur, except for the last habit. I think sometimes you have to stand up and raise your voice - thus go against the group - in order to make a difference in a team. That said, you shouldn't do that all the time :-)Anonymous
May 22, 2008
Greate post. I think passion is the most important "requirement" :)Anonymous
May 23, 2008
Absolulte a great post! As for the above comments about the last habbit, IMHO, John was talking about the hard-headed arrogant programmer who wont 'listent' to the team and is convinced that theirs is the right/only way. Opinions from team members are very important. They usually lead to discussions which result in great ideas. Sometimes the 'heated' discussions are related to the 'Passionate' habbit.Anonymous
May 27, 2008
Great Points! You noticed some major areas on which we should focus, good work.Anonymous
June 03, 2008
re: Contrast this with the arrogant, rogue and cowboy developers who go against team standards or design intents because "that's how I do it" or "that's how you should do it." The message they are really sending is "I am smarter than the team." hey guess, what? sometimes the' rogue' or 'cowboy' really is smarater then the 'team' yeah, not politically correct, but it happens a lot i have been in more than one mediocre oganization; in fact they are the stastical norm and dont' tell me go somewhere else, because in practice that's not always easy, due to economy or location, etc 'agile' and 'teams' etc are nice buzz-phrases, but sometimes reality doesnt quite fit the latest fad; sometimes life isnt fair; sometimes some people really are better btw: i did not dumb myself down the last time this happened, but it did take almost a year to find a better job; meanwhile i tried to mentor the junior programmers around me, with mixed success; i was careful not to be arrogant, but if you could see their code.....Anonymous
June 03, 2008
Good post. Thanks Prashant Jalasutram http://prashantjalasutram.blogspot.com/Anonymous
February 22, 2009
Следующую статью можно считать вольным переводом топика The 7 Habits of Highly Effective Developers (byAnonymous
February 22, 2009
Следующую статью можно считать вольным переводом топика The 7 Habits of Highly Effective Developers (byAnonymous
May 10, 2009
effective development by microsoft..... don't push itAnonymous
May 11, 2009
For the first point, I would like to balance passion with feelings/behaviours like personal satisfaction, self-centeredness which are difficults things to detect when you try to evaluate passionate people. Otherwise, interesting post for junior developers.Anonymous
August 03, 2011
copy from another http://www.daniao.comAnonymous
August 17, 2011
You forgot about the Jedi Skills: jeffwhelpley.com/.../highly-effective-developersAnonymous
December 09, 2013
thanks for your listing, it looks useful! And your description has the same principle with my pim software. EfficientPIM. you can see more at: www.efficientsoftware.net/pim