Red Squirrel Reflections
Dave Hoover explores the psychology of software development

Dave Hoover

All [Atom]
Craftsmanship [Atom]
Dynamic [Atom]
Intersection [Atom]
Learning [Atom]
Links [Atom]
Polyglot [Atom]
Projects [Atom]
XP [Atom]
Old Blog

Obtivian Blogs

Andy Maleh
Colin Harris
Fred Polgardy
Jim Breen
Kevin Taylor
Todd Webb
Turner King
Tyler Jennings


March 2009 (1)
January 2009 (1)
December 2008 (1)
October 2008 (3)
September 2008 (1)
June 2008 (4)
April 2008 (3)
March 2008 (1)
February 2008 (1)
August 2007 (1)
July 2007 (1)
June 2007 (1)
May 2007 (4)
April 2007 (3)
March 2007 (5)
February 2007 (6)
January 2007 (6)
December 2006 (10)
November 2006 (5)
October 2006 (8)
September 2006 (8)
August 2006 (5)
July 2006 (12)
June 2006 (7)
May 2006 (5)
April 2006 (5)
March 2006 (4)
February 2006 (2)
January 2006 (5)
December 2005 (5)
November 2005 (3)
October 2005 (3)
September 2005 (6)
August 2005 (4)
July 2005 (7)
June 2005 (14)
May 2005 (6)
April 2005 (8)
March 2005 (9)
February 2005 (11)
January 2005 (16)
Old Archives


Tue, 12 Apr 2005

A Thread of Patterns

I learned about pattern sequencing in Organizational Patterns and thought I'd try out the idea on the software apprenticeship pattern language I'm playing with. Here's a first pass at stringing a few of the patterns together...
  Find Your Master -> Be The Worst -> Accurate Self Assessment -> Expose Your Ignorance
To become an exceptional software developer, a master craftsman, you are going to need to work closely with exceptional software developers. Your desire to become a master craftsman implies that you recognize that you are not yet a master craftsman. Recognize this, dwell on this, anticipate the long road ahead of you.

Now begins your quest: you must seek out a master to apprentice under. For an exceptionally few people, this quest will result in a formal master/apprentice relationship. For the rest of us, this quest will become a series of relationships, as masters come and go with assignments, jobs, and contexts. Seek out the exceptional developers in your area and make contact.

Along the way, reflect on the teams and projects you are affiliated with. Would you consider yourself the worst developer in these contexts? If you are lucky enough to answer in the affirmative, congratulations, you are in an excellent position. Not only are you surrounded by people who you can learn from but you possess the humility to capitalize on your situation.

If you find yourself in the position of being the best developer on your team, either start looking for a new team or work to bring in more senior developers. While being the best is flattering and can build confidence, your rate of learning will diminish. Even worse, a lack of oversight by master craftsmen or journeymen increases your liklihood of falling into bad development habits.

Becoming a master craftsman requires that you maintain an accurate assessment of your abilities as you work your way through your apprenticeship. While believing that you have achieved greatness makes it easier to justify your paycheck, it will only hinder you on your quest. You must expose yourself to exceptional developers in order to keep your ego in check and cultivate your humility. Even if you succeed in working side-by-side with a master craftsman, continue seek out other masters: in articles, books, mailing lists, and blogs. Appreciate how far you have to go.

To maintain an accurate assessment of your abilities, resist the natural instinct to hide your many zones of ignorance. You may have in-depth knowledge into a few threads of technology, but a master has the ability to weave a tapestry out of myriad threads. By embracing and exposing your ignorance, you will spin the missing threads much more quickly.

[/craftsmanship] permanent link

powered by blosxom