Saturday, June 19, 2010

Apprenticeship Patterns

In my investigating on what it means to be a professional programmer I came across a great on-line book that combines patterns and software craftsmanship:

Apprenticeship Patterns, Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye.

Like many of the blogs, books and sites I've been reading lately, this book reinforces my thoughts that I need to move on, and become proactive about taking my developer career to the next level.

The book's stated goal is

....to share solutions to the dilemmas that are often faced by inexperienced software developers....the dilemmas that we focus on are more personal, concerning your motivation and morale.

Part of the conclusion really resonates with me:

Software development is a craft precisely because we don’t understand it well enough to make it a codified discipline like science or engineering. Despite the best efforts of groups like the Software Engineering Institute and the Agile Alliance, our field is still one where individual skill is often the most significant determining factor in a project’s success. When we use the word skill, we don’t just mean how much computer science you know or the effectiveness of your development process or how much experience you have. We mean the union of all the things it takes to deliver working software.

The book contains 34 patterns, or common solutions to common problems, that got me to focus on my feelings about where I am professionally. I fit some of the books insights:

Restless

You need to grow your skills, your confidence, and your portfolio of successful work. You feel the need to challenge yourself with bigger things. This may involve bigger projects, larger teams, more complex tasks, new and business domains, or new places.

You are beginning to realize how little you know

As you are introduced to the vast reaches of your ignorance you are overwhelmed.

Need to collaborate face-to-face with some exceptional software developers.

“Just” a software developer.

Current environment stifles your passion for the craft.

You find that your vision of yourself is not in accord with your employer’s vision for you, and there doesn’t seem to be a way to reconcile the differences

Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow.

You are months or years into your apprenticeship and you find yourself discouraged by the culture of your development organization.

You find yourself stranded without mentors and in an atmosphere that seems at odds with your aspirations.

There's a lot of great information in the book and I'm going to keep it handy in order to keep up my motivation, morale and learning.

No comments: