|
Red Squirrel Reflections
Dave Hoover explores the psychology of software development
|
|
Wed, 13 Apr 2005A Thread of Patterns (upon further review) Pat notes that the sequence of the thread of patterns that I threw together didn't fit for him chronologically. This made me realize that I didn't intend for them to be read chronologically. I sort of just arbitrarily threw them together and wrote about them in that sequence.The next time I do that, I'll put a bit more thought into the ordering. It really should be chronological, as Pat assumed. 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 IgnoranceTo 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. |