Sunday, January 17, 2010

Thoughts on Passionate Programmer (part 1 of 3)

I read Chad Fowler's book Passionate Programmer over a weekend. I liked the book because it puts structure around what it takes to have a successful career in software. That is something I have been looking for as a developer at the beginning of my path (developers at early stages of their careers are the target audience for this post). I wouldn't take it as gospel, as there are many ways to a great career, but I think its full of useful ideas. In the book, Chad describes the career as a composite of four key processes:

  • Choosing your market
  • Investing in your learning
  • Executing and
  • Marketing yourself

Given there is quite a bit of content to cover, I've broken this post up into three parts: The first installment covers the 'Choosing your market' and 'Investing in learning'.

Choosing your market


Reading the first part I reflected on my plan of things I would like to learn. It needed the right mix of upcoming vs mainstream technologies, generalist and specialised knowledge, and people & process skills.

To tell apart which technology is which, we have developers' blogs & TIOBE index. Knowing the role of these sources helps allocate time to reading them in a productive manner, and avoid sinking in the sea of press releases and news stories wasting valuable time.

Investing in your learning


The author suggests four key ways of investing in learning, these are:
  • Reading literature,
  • Practicing,
  • Reading code and,
  • Finding & working with a mentor

Reading literature
At my current employer, we run a book club which is a fantastic forum for reading texts that move us towards being better developers and consultants. However, I feel I would benefit from doing more practice. I have a couple of pet projects that I work on periodically, but according to Fowler that would barely qualify as practice.

Practicing
To explain practice, the author brings out an analogy with music. It's not about delivering a finished product, but about working on its elements, learning about the moving parts and stretching the limits. To quote the author:

"When you practice music, it shouldn’t sound good. If you always sound good during practice sessions, it means you’re not stretching your limits. That’s what practice is for. The same is true in sports. Athletes push themselves to the limit during workouts so they can expand those limits for the real performances. They let the ugliness happen behind closed doors—not when they’re actually working."


Reading code
Reading code is another area I've been neglecting (outside of working hours), but I see some great value in doing it. When talking about reading code, Fowler compares it to the same practice as done by various types of artists: musicians, painters, composers.

"Studying the work of masters is an essential part of becoming a master."

Mentors
Fowler really emphasised the role of mentors, comparing it with the Jazz scene. He said that when a jazz musician is asked who his mentor is, its a normal thing, like asking a player "how are you". The suggestion is to look for people who you can see as a mentor and approach them. The benefits of having a mentor are many: they can help shape a longer term career vision, give a bit of structure to your learning process, help guide and judge your progress.

The Mentor - Mentee relationship is not one way, it is the mentee's role to support and promote the mentor.

As a takeaway from this chapter, I'm going to mix up my ways of learning to include more practice and reading code.

No comments: