Process, People, and Pods

Wednesday, 25 July 2007

Building a Better Programmer, Part 2

To increase the productivity gains promised by the Master-Journeyman-Apprentice (MJA) model, programmers must progress up in the model. In Part 1 of Building a Better Programmer, we detailed the techniques by which programmers can gain the skills resulting in improved productivity. In this post, I will discuss paths to programmers enrichment, likely timeframes for the process, and failure rates. I will again draw from the MJA model for learning OO skills, a key enabler for Agile application developement.

Apprentice to Journeyman

If you can move your Apprentices to Journeymen, you can effectively double your productivity for those complex, business critical systems you maintain and enhance. There are certain enablers that are required for this transition:

  • Willing Apprentices (supported in their efforts by management)
  • Journeymen or Masters from which to learn

I have used a couple of paths to assist the transition of programmers from Apprentices to Journeymen, both in ThoughtWorks and in the industry with good results in both cases. For OO programming, the goal is the same in both cases: Teach the Apprentice to think like an object programmer. That means teaching the Apprentices to break problems down in a different way, to recognize when programmers are structured poorly per OO principles, and build up a repertoire of techniques by which to do this.

Path 1 involves a combination of training and mentoring. Training assists in quickly providing the new vocabulary for the Apprentice, and mentoring provides the continued support for applying the new techniques to the daily problems the programmer addresses. Without mentoring, the value of the training is significantly diminished. Without mentoring, the pressures of delivery will drive the Apprentice to apply the old, familiar techniques to solve the problem. Old habits are reinforced; new techniques are forgotten. And worse, the new techniques become labeled "theoretical" or "academic" or "irrelevant to real problems." Net result: education wasted.

Path 2 forgoes the training, and simply provides the mentoring. The training is gained by working closely with Journeymen and Masters. Pair programming is important in this environment; collocation is absolutely essential. Path 2 takes longer; the Apprentice must pick up the vocabulary in the course of the work. Path 2 is probably more expensive; the productivity gains come later, and the time of Journeymen and Masters is taxed in doing bits of training here and there as the need arises.

There is a Path 3: Pick it up from reading the books. Self-taught Journeymen are rare, but I have met them. They also took a frighteningly long time to make the transition, with a lot of discarded bad code in the wake. I cannot recommend this approach for even the brightest of programmers.

If you can adopt Path 1 (training and mentoring), you should expect most of your programmers (60% or more) to make the transition from Apprentice to Journeyman in about six months. Some will be there quicker; some will take a bit more time. Expect failures; in my experience, about 20% cannot make the transition at all. The individuals who will not make the transition can be identified pretty quickly (a month or less); they can be placed back in the roles they had before and continue to be productive for the organization. The usual cause of the failure to transition is that they lack the conceptual skills to be effective OO programmers. I have seen a few other cases of failures in senior people. In these cases, the senior person realizes that the junior people understand this better than they do, and choose to disengage rather than reveal the lack of a gap. I take these failures personally; I feel I didn't create an environment where they could learn safely.

I developed specific training for this transition over a decade ago. The first class affectionally called it OO Bootcamp. I brought the course with me to ThoughtWorks several years ago, and it still carries that moniker today. I will post more on OO Bootcamp in the near future.

Journeyman to Master

The transition from Journeyman to Master is much more difficult. You should not expect more than 20% of your staff to ever make the transition. Most of your good candidates have deviated from strict application development, and are probably serving as your system and application architects, effectively ceasing their learning as programmers.

But with the whopping productivity boost and the ability to leverage Masters to make more Masters, it is well worth investing in their growth.

Masters must be excellent programmers. Their vocabulary is deep and wide. By and large, they have extensive experience applying their knowledge to real world problems. Similarly, their conceptual skills are excellent. This allows them to manipulate objects in their heads, forming solutions to difficult problems. Finally, domain knowledge is helpful, but not quite essential.

If you describe a business problem to a Master programmer, she will see objects dancing in her head, forming patterns that solve the problem. This comes from developing an inherent sense of object relationships, a suite of problem-to-object-solution maps, and confidence born of solving similar problems before.

Hence, the transition from Journeyman to Master can take a while. In general, expect a couple of years. I have seen a few instances of faster transitions (only six months or so); in all cases, the individuals were extremely bright, conceptual thinkers, and had many years of programming experience under their belts. (They were also colleagues from ThoughtWorks India!)

Managing Programmer Improvement

In the prior post, I listed the techniques to enable programmer skill growth. In order of importance, they are pair programming, collocation, communities, and training. Project managers and senior managers should facilitate these practices as much of this as possible.

There is one other charter I would give a project manager when a focus on skills is important: Bring back better programmers. In other words, measure the project manager on both delivery and skills growth. If the project manager delivers the project but doesn't grow the people, then, well, at the least a permanent productivity boost to the organization has been lost; at worse, gross negligence has occurred, and I don't want to use that project manager again.


koundinya said...

Hi Fred,

Thanks for a great post. I am an admirer of thoughtworkers, i regularly follow the thought blogs.I agree the OO thinking forms the fundamental skill to solving complex problems. Could you please point me to some articles/books on how to improve the concept of thinking in oo ? or in your language "dancing objects in the head". Thanks for a great post once again. I feel i am an journeyman and would like to move to Master.

Fred George said...

The transition to Master is quite difficult. I had a mentor, someone from the original OO team of Ward Cunningham and Kent Beck. The mentor saved me a couple of years of figuring it out for myself. But one big step I did take was from a book: Kent Beck's Smalltalk Best Practice Patterns. If you are not in the Smalltalk space (and few are anymore), I would quickly recommend Martin Fowler's Refactoring. It is almost the Jave version of Kent's book, plus some other great stuff. For Martin's book, read the chapter on Code Smells (Kent co-wrote it). As each smell is discussed, chase down the references to the patterns that fix it. Then park the book in your lap as you code. When you see a smell, chose a refactoring that fixes it, following Martin's recides carefully. When all the refactorings are in your head, I think you will be a big step closer to Master. Enjoy the journey!

otyce said...

Thank you for a great blog, I hope to see more articles from. When I started reading M-J-A articles I thought I was at the J stage but now I realize I am at the Apprentice stage. I am working in an environment were we are only to programmers. And the guy I am working with is still an apprentice though more knoledgeable than I am. In such an environment how do I grow to journeyman. I also came across a blog by Justice Gray where he tags a couple of people on what they are going to do to become better developers in six months, so I bored those ideas and made them my own. Let me know what you think.

Fred George said...

By the way, recognizing you are not a Journeyman is probably the first step to getting there. You now realize you are missing knowledge (not to be confused with experience. The above response to koundinya would be my first recommended step. Next would be find an OO-oriented user group in the area. Ruby groups will tend to be more OO, but no guarantee. Agile groups may be productive, too. My favorite question? Ask the average size of their methods. If you hear "5" or less, you may have found a Journeyman or Master!

phil said...

This is a great series.

Just a question of clarification... Do you mean 5 lines or less?

Fred George said...

Yes, Phil. I mean an answer of 5 lines or less in each method. I have done Java projects with an average of 2.3; my mentor using Smalltalk had an average of 1.2 lines per method on one of his projects. I am looking forward to getting that small in Ruby soon.

Ravi said...

Great blog!

To add to your answer to koundinya, one alternative somewhere between working on your own vs working with a "Master" ( I don't believe in the validity of the AJM model hence the quotes , but that's another discussion ) is to learn from the "Master"'s code. This is what has worked for me.

(1) Find an small source code base from the "Master" of your choice (Junit for Kent, FIT for Ward, etc. Peter Norvig, Paul Graham all have lots of code online). I am ver leery of "masters" who don't have any code I can look at, but that's me.

(2) *Before* looking at their code, write your own code duplicating the functionality.

(3) do a diff between your code and theirs.

(4) Think about the differences in design, coding style etc.

You'll learn quite a bit from this exercise if you have the patience to go through with it

Fred George said...

Ravi, you have described another nice tactic. I did refine my skills by reading Smalltalk source code (in Smalltalk). It was replete with excellent examples of beautiful code. Unfortunately, I can't say the same of the Java code libraries. Kent Beck's and Erich Gamma's JUnit is a very good example, albeit against Java 1.2 (1.5 implementation would be even lovelier).

David said...

Great post! I think I am journeyman but am not able to find a mentor in my company to improve my skills. The best way is like Ravi said to find some great source code to learn how those masters write.

Anyone could recommend some good open code written in C# or ruby?

Fred George said...

Sorry, David, but I don't have any good examples in the open source community for C# and Ruby. But I haven't really looked, either.

I would venture to suggest the unit testing frameworks are probably first rate because I know the authors. For C#, look at NUnit that was written by current and former ThoughtWorks colleagues that I hold in high regard. For Ruby, the RUnit framework that ships with Ruby was done by Nathaniel Talbot, a programmer who was a Master in his teens!

Other good examples from someone else?

Fred George said...

My apologies to Nathaniel: It is Nathaniel Talbott (with 2 t's). Spell it with one 't' and you do get more hits about him! :-)

Ravi said...


For Ruby, Anything by JIm Weirich is worth looking at (imo). I am sure there are many others worth learning from in the Ruby community.You could just ask on the Ruby mailing list and they'll help you out.

Even better, if you spend some time with smalltalk(squeak is a good option) you'll be better OO (including Ruby) programmer. smalltalk, like Lisp, is seriously mindbending.

My 2 cents.

OnlinePharmacy said...

aC9tcY Your blog is great. Articles is interesting!

uk viagra sales said...

XRicvT Nice Article.

meridia dosage said...

actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.

credit card number hacking said...

Hello all!

name said...


bob dylan tour schedule said...

Good job!

alaskan discover rv tour said...

Please write anything else!

slow credit car loans said...

Thanks to author.

ringtones said...

Nice Article.



archive buy cialis info online personal php reme said...

9sXuGZ Magnific!

blues free ringtones down said...

Wonderful blog.

mineral makeup said...

black mold exposureblack mold symptoms of exposurewrought iron garden gatesiron garden gates find them herefine thin hair hairstylessearch hair styles for fine thin hairnight vision binocularsbuy night vision binocularslipitor reactionslipitor allergic reactionsluxury beach resort in the philippines

afordable beach resorts in the philippineshomeopathy for big with great mineral makeup bargainsmineral makeup wholesalersprodam iphone Apple prodam iphone prahacect iphone manualmanual for P 168 iphonefero 52 binocularsnight vision Fero 52 binocularsThe best night vision binoculars here

night vision binoculars bargainsfree photo albums computer programsfree software to make photo albumsfree tax formsprintable tax forms for free craftmatic air bedcraftmatic air bed adjustable info hereboyd air bedboyd night air bed lowest pricefind air beds in wisconsinbest air beds in wisconsincloud air beds

best cloud inflatable air bedssealy air beds portableportables air bedsrv luggage racksaluminum made rv luggage racksair bed raisedbest form raised air bedsaircraft support equipmentsbest support equipments for aircraftsbed air informercialsbest informercials bed airmattress sized air beds

bestair bed mattress antique doorknobsantique doorknob identification tipsdvd player troubleshootingtroubleshooting with the dvd playerflat panel television lcd vs plasmaflat panel lcd television versus plasma pic the bestThe causes of economic recessionwhat are the causes of economic recessionadjustable bed air foam The best bed air foam

hoof prints antique equestrian printsantique hoof prints equestrian printsBuy air bedadjustablebuy the best adjustable air bedsair beds canadian storesCanadian stores for air beds

migraine causemigraine treatments floridaflorida headache clinicdrying dessicantair drying dessicantdessicant air dryerpediatric asthmaasthma specialistasthma children specialistcarpet cleaning dallas txcarpet cleaners dallascarpet cleaning dallas

Anonymous said...

ralph Lauren polo shirts , Lacoste Polo Shirts, Burberry Polo Shirts.wholesale Lacoste polo shirts and ralph Lauren polo shirts with great price. offers lot of 10 lacoste polo shirts and lot of 20 cheap polo shirts. offers classic fit polo shirts. polo clothing All our shirts made in original factory.

Anonymous said...

nike tnEnter the necessary language
translation, up to 200 bytes winter, moves frequently in Chinanike chaussures showing that the deep strategy of the Chinese market. Harvard Business School, tn chaussures according to the relevant survey data show that in recent years the Chinese market three brands, Adidas, Li Ning market share at 21 percent, respectively,

Anonymous said...

mens clothing men's sweate, cheap columbia jackets, lacoste sweater, ralph lauren polo shirts,ski clothing. Free Shipping, PayPal Payment. Enjoy your shopping experience on mensclothingstore.UsPuma shoes , Ugg Boots , nike max shoes, NIKE AIR MAX TN ,nike max shoes ,PUMA CHAUSSURES, NIKE SHOX Torch ,puma Ferrari F1 ,PUMA DRIFT CAT

Anonymous said...

chaussures puma stores offer you the most popular fashion shoes, including the puma basketpuma puma BanXie and shoes. All the puma product factory direct sale, special processing, create the most inexpensive puma stores.National Weather Service Meteorologist Jason puma CAT said this week's temperatures will mirror seasonable averages of highs around 71 and lows about 42 degrees ...

Anonymous said...

puma mens shoes
nike air max ltd
NIKE air shoes
ed hardy clothing ed hardy clothes ed hardy shirtsed hardy clothing ed hardy clothesed hardy shirts

Anonymous said...























Anonymous said...

Hello !.
You may , probably curious to know how one can manage to receive high yields .
There is no need to invest much at first. You may commense earning with as small sum of money as 20-100 dollars.

AimTrust is what you thought of all the time
The firm incorporates an offshore structure with advanced asset management technologies in production and delivery of pipes for oil and gas.

It is based in Panama with offices everywhere: In USA, Canada, Cyprus.
Do you want to become a happy investor?
That`s your chance That`s what you desire!

I`m happy and lucky, I began to take up income with the help of this company,
and I invite you to do the same. If it gets down to choose a correct partner who uses your savings in a right way - that`s AimTrust!.
I make 2G daily, and what I started with was a funny sum of 500 bucks!
It`s easy to get involved , just click this link
and go! Let`s take this option together to become rich

Anonymous said...

Hello !.
You may , probably very interested to know how one can make real money .
There is no need to invest much at first. You may begin earning with as small sum of money as 20-100 dollars.

AimTrust is what you haven`t ever dreamt of such a chance to become rich
The company incorporates an offshore structure with advanced asset management technologies in production and delivery of pipes for oil and gas.

It is based in Panama with affiliates everywhere: In USA, Canada, Cyprus.
Do you want to become really rich in short time?
That`s your choice That`s what you wish in the long run!

I`m happy and lucky, I began to get income with the help of this company,
and I invite you to do the same. If it gets down to choose a proper partner who uses your funds in a right way - that`s the AimTrust!.
I take now up to 2G every day, and my first investment was 500 dollars only!
It`s easy to start , just click this link
and lucky you`re! Let`s take this option together to feel the smell of real money

Edwin said...

Buy Kamagra
Earn Google
Viagra Cialis
Cheap Kamagra
Cheap Viagra
Cheap Cialis
Make Money on Google
M65 Jacket
M65 Field Jacket
Airline Dog Carrier
Airline Dog Carriers
Viagra Cialis
Earn Google
Airline Dog Carrier
Airline Dog Carriers
Airline Approved Dog Carriers
ED Hardy Wholesale
Copy DVD Software
How to Send Fax
14k Yellow Gold
Redneck Costume
14k Gold Heart
Tandem Baby Stroller

Anonymous said...

Often we forget the little guy, the SMB, in our discussions of the comings and goings of the Internet marketing industry. Sure there are times like this when a report surfaces talking about their issues and concerns but, for the most part, we like to talk about big brands and how they do the Internet marketing thing well or not so well.

Anonymous said...

Often we forget the little guy, the SMB, in our discussions of the comings and goings of the Internet marketing industry. Sure there are times like this when a report surfaces talking about their issues and concerns but, for the most part, we like to talk about big brands and how they do the Internet marketing thing well or not so well.

Anonymous said...

Good day!

We are not acquainted yet? It’s easy to fix,
my name is James F. Collins.
Generally I’m a social gmabler. for a long time I’m keen on online-casino and poker.
Not long time ago I started my own blog, where I describe my virtual adventures.
Probably, it will be interesting for you to read my travel notes and reports about winnings and losses on this way.
Please visit my web site. I’ll be glad would you find time to leave your comments.

Anonymous said...

酒店經紀 酒店打工 酒店工作 酒店上班 酒店兼差 酒店兼職 打工兼差 打工兼職 台北酒店 酒店應徵 禮服酒店 酒店 經紀 打工 兼差

Anonymous said...

Wow, indeed great info. Where can I get your RSS?

Jane Meetington
security shop

Anonymous said...

I'm Glad i discovered this site.Added to my bookmark!

viagra price said...

this post really very good and effective for me thanks for sharing this nice post

Anonymous said...

It's going to be end of mine day, however before end I am reading this impressive piece of writing to increase my know-how.

Feel free to surf to my page :: diets that work

dong dong23 said...

kate spade handbags
coach outlet online
oakley vault
caoch outlet
marc jacobs
christian louboutin outlet
michael kors outlet
michael kors outlet clearance
jordan 8s
louis vuitton handbags
louis vuitton handbags
michael kors handbags
toms shoes
nike sb shoes
ray ban sunglasses
christian louboutin shoes
michael kors outlet online
coach outlet
coach outlet
instyler curling iron
longchamp outlet
jordan retro
rolex submariner
rolex watches
asics running shoes
kobe shoes 11
polo ralph lauren
michael kors outlet
michael kors outlet
ray ban sunglasses
oakley vault
polo ralph lauren
beats headphones
fake watches
michael kors outlet clearance
nike factory outlet
christian louboutin outlet
hollister clothing
mont blanc pens
adidas outlet