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

Comments

  • Anonymous
    May 22, 2008
    PingBack from http://www.anubhavh.com/blog/?p=36

  • Anonymous
    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.aspx

  • Anonymous
    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 (by

  • Anonymous
    February 22, 2009
    Следующую статью можно считать вольным переводом топика The 7 Habits of Highly Effective Developers (by

  • Anonymous
    May 10, 2009
    effective development by microsoft..... don't push it

  • Anonymous
    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.com

  • Anonymous
    August 17, 2011
    You forgot about the Jedi Skills: jeffwhelpley.com/.../highly-effective-developers

  • Anonymous
    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