Ravi Mohan's Blog

Tuesday, September 13, 2005

A Nostalgia for Guilds And Other Dangerous Ideas

After some thought provoking conversations over email with Dave , Ade and Rajesh recently, I read Pete Mc Breen's book on Software Craftsmanship .

The book's fundamental thesis is interesting. It says that the "software engineering" way of creating software is broken (I agree) and it posits a "craftsmanship" approach to software as the solution .(I disagree).

Let me clarify that statement.

I don't disagree with the idea that viewing software development as a craft rather than some kind of factory process will yield insights into how to progress along that craft.

The basic problem with the book is that it proposes what is essentially a medieval socioeconomic structure as a solution to a 21st century problem ,and selectively focusses on the virtues of the old "guild" system where practitioners of a craft were classified into 3 categories - apprentices, journeymen and masters .

Now let us examine how Mr McBreen proposes to solve the "software engineering problem" .

he says, (all emphases mine)

"Rather than attempt to industrialize and deskill software development, the software craftsmanship approach looks back into history to see how the problems of expensive labor and arcane skills were handled. " ( Chapter 5 )

While the book doesn't go into too much detail on which nation's history of what period is being "looked back at" , it is fairly obvious from the sorrounding context and talk of "Apprentice, Journeyman and Master" that he refers to the guild system that flourished in Medieval Europe.

So Mr Mc Breen, on the one hand says that a methodology originating in the 1960s and continously evolving since then (software engineering) doesn't work for software development in the 21st century so we should go back to the 14th , for solutions ! Interesting !

There are two ways to use labels like "apprentice", "journeyman " and "master".

One is that of a rough guide to where on a skill spectrum a practitioner of a craft falls.In any time period, in any craft or art, there will always be a fairly consistent ranking of people in terms of skill and it sometimes helps to mentally divide that spectrum into n categories and name those categories whatever you want.Yes, if n ==3 you can name the categories , "apprentice", "journeyman" and "master" .This is only a way of seeing the progress along a craft .Those labels have no real validity .

The second way is to use such terms as rigid unchanging classifications of people(however derived) and attaching separate privileges to these labels .

Thus you couldn't run a craft based business in medieval Europe unless you were a member of the appropriate guild and presumably of an appropriate "rank" to do so . Today anyone can start a business and thrive or crash based on the economic logic of the business. Which system would you prefer to live under ?

the fact that Pete Mc Breen supports the second ,"rigid label", way is evident from a paragraph that states

"A master craftsman may learn a new technology from an apprentice, but it does not mean that she is no longer a master. If anything, it reinforces her mastery because it illustrates a willingness to learn from everyone."

Hmm thus, irrepective of whether a so called "master" is demonstrably expert *in the technology being worked on * or not, he is always a master .And the poor fool who does, in this case, know enough to "teach the master" is still an apprentice . The labels are rigid .Once someone becomes a "master", even a situation where the practitioner fails totally does not remove "masterhood" .Nice!

You might think it would make sense to say that in this context where the new technology is relevant , the "master" and "apprentice" labels are reversed .Thus if an acknowledged superior programmer, say Linus Torvalds and I are pairing on creating a j2ee leasing system ,(I presume Linus will kill himself before he has to do this , this is all hypothetical, bear with me ), then, in the context of j2ee, logic would seem to indicate that *I* am the "master" (or "journeyman " or "Lord and Master" or "King Skeletor" .. use whatever labels you think cool ) and he is the "apprentice" (or "teeny weeny toddler" or whatever , as long as the label is "lesser" than mine ) .But no! Once a master always a master! it doesn't matter if you don't have a clue.

The more significant question of course is "does this kind of labelling make any sense" ? hmmmmm....

Other paragraphs in the book identify mastery with "peer recognition" . There is a very subtle fallacy here .In other words,as per the book , Bruce Lee was not a master martial artist because he could fight better than anyone, but because he is *seen* to be a good martial artist by his peers . This confuses cause and effect .

To see the fallacy embedded here, you can drop each condition in turn. Suppose Bruce Lee never became famous but retained as much of his fighting skill as he did . Is his "mastery" now non existent because he was not recognized ?

Now let us try it the other way . If Bruce Lee was much much more famous amongst "peer" (of course it is not defined how these "peers" would be selected. maybe they are people with the same label from the guild? ) martial artists but could never demonstrate his skill in combat (an analogous situation would be a large number of book authors having no really significant software to back up their supposed "expertise") would he still truly be a "master" ?

This labelling based on irrelevant attributes is the least part of the nonsense embedded in the book . More tragic is the notion of a whole set of practices to solve the "software crisis" built on this "labelling". Some of it is just common sense. Most of it is just misguided, intellectually unsound rubbish.

Thus two separate concepts of "apprentice, journey man and master" --one, a rough measure of skill , and two, artificial "labels" used to recreate an outmoded economic system-- are conflated. Now let us look into the guild system from which this terrible classification scheme is borrowed .

From the wikipedia entry for "Guilds" ,

" The guild was made up by experienced and confirmed experts in their field of handicraft. They were called master craftsmen. Before a new employee could rise to the level of mastery, he had to go through a schooling period during which he was first called an apprentice. After this period he could rise to the level of journeyman." This is almost a word for word description of the system McBreen wants us to replace present day practice with . Let us read further (the wikipedia article, not the book ) . " Apprentices would typically not learn more than the most basic techniques until they were trusted by their peers to keep the guild's or company's secrets. ".

Duh ? secrets ? "Journeymen were generally paid by the day and were thus day laborers. After being employed by a master for several years, and after producing a qualifying piece of work, the apprentice attained the rank of journeyman and was given a letter which entitled him to travel to other towns and countries to learn the art from other masters."

duh right . Does anyone else feel an increasing disconnect between the socio economic situation in the 14th century vs the present day ?

Continuing to quote "After long periods of apprenticeship to a master" ( an apprentice had to pay for this privilege !What do you think of having to pay a "master" or "journeyman" to learn programming? ) "and after producing a qualifying piece of work, the apprentice attained the rank of journeyman and was given a letter which entitled him to travel to other towns and countries to learn the art from other masters."

entitle him to travel ? a qualifying piece of work ? duh?

Now let us give Mr McBreen's ideas the best possible interpretation and decide that your "level" in software needs to be demonstrated, say by showing samples of your code , maybe your contributions to open source, before you get a job. Will this miraculously improve the success rates of projects ? Not at all, because the problem is that the need for programmers is well above what can be met by the "truly skilled" minority . If less than say ,250 people worldwide are truly "masters" and say another 3,000 or so of "journeymen" status in, say, Tennis (going by ratings and being generous) why should there be a greater number in software development ?

The difference is of course most people who play tennis do so because they at least minimally enjoy the game! To think that adopting some half baked scheme based on an ill defined outdated idea will raise these numbers(which is about the only way to "solve" the software engineering "crisis") is , at best , self deception and at worst .. hmmm ...let us not go there .

In other words the "software problem" is economic, not technical in nature . Unless a compelling economic argument can be demonstrated for this switch to an out moded way of "improving" programmers , the only readers of this book are likely to be the mediocre programmers who fantasize about achieving "master" status and earn 250 k $/year (as Mc Breen reccomends) .

Note to Mr McBreen . People who are that good are already earning 250k or more!! so what was the problem again ?

Pete has written another half baked book on "Questioning Extreme Programming ".Far be it from me to say that XP needs no challenging , but this book does such a shoddy job, setting up and destroying a sequence of strawman arguments that wouldn't stand up in a high school debate,that you'd be surprised publishers would let this through their editorial board .

Anyway if you want some good ideas on how to become a master programmer , go read this article . It has more wisdom in it than Mc Breen's Book of Mumbo Jumbo.

So what is my take on this "apprentice,jouneyman,master" trichotomy ? Well I believe that in these days of universally available internet access and open source software any half way decent programmer is aware of where on the skill scale he (and any of his fellow programmers) falls , in any given context . Taking these "rating" labels seriously (for eg: on a site like Advogato,where you can see comments like " hey i became a journeyman while i wasn't looking !! wow ! " ) is, at best, like wearing your karate belt over your street clothes, to advertize your fighting skills .

As Bruce Lee said ,"On the street, no one asks you your belt before they hit you " .

Translated to the software development domain, that means

"shut up and write code" .


Anonymous said...

I have seen several talented writers during my school and college days. I have also seen real good bloggers, but not anyone as prolific as you. You come up with "worthy" stuff so frequently.
Hoping to read more here.

Ravi said...

Thanks. But I am not really very prolific . There are many months in w hich I don't write at all .It's just that when i feel strongly about something I try to wrestle it on to paper or html before i forget !
Thanks anyway .Good to know you enjoy my meanderings !

chandrakant said...

Excellent post - instead of posting a comment, I blogged about this here http://programmingnirvana.blogspot.com/2005/09/craft-of-classification.html

Please read and let me know your thoughts if any.

Tanton said...

Great blog. I think there is much to be learned when we think of software as a craft rather than an engineering discipline. However, there is little to be gained by attributing artificial monikers to people just to stroke their egos. As you said, the truly great developers know who they are and don't need us telling them that. I was not a huge fan of Pete's book either, but I feel he is focusing on the wrong areas of craftsmanship. Instead, he should focus on the areas of mentoring, community, love of the craft, and signing your work. I was really expecting a lot more from the book and the entire time I read it I kept feeling that he was so close, but so far away.

Anonymous said...

why denigrate the testers? I have come across real good testers who have excellent programming skills too.

Ravi said...

It is obvious from Sriram's post that his whole idea is satire. If you want to take satire seriously and start discussing his "theory" seriously (sriram it looks as if there ARE people ready to take what you say seriously so start writing !!),please write sriram directly ,offline , and not here .

This is not Slashdot .

The point of a joke is you read it, laugh (or groan ) and move on . :-)

Thank you both for your co operation.

I don't want to resort to deleting comments , but I will if I have to.

Ravi said...


I have read your blog (and commented there). Tanton . Thank you for your comment . Fwiw, i think Mc Breen's book is a piece of fluff and a big waste of time . Just my personal opinion .You maybe onto somethomh when you say that maybe he whould have focussed on other aspects . But given what he has done with his two books, i doubt if a simple change of focus would have helped.

Sriram, my point exactly . Anyone can create such claasifications and write a book (or many books) on what "should be" true according to some vague ideology .

I was told recently (very sewriously) that Linus Torvalds could not be considered a "master" because he doesn't "mentor people" .

How about that ? :-)

Anonymous said...


I think you have misunderstood what Sriram is trying to do. He is being satirical. Please do read the last two paragraphs of his post. Also it might be better to ask first before assuming.

Rajesh Babu

Anonymous said...

Hi Ravi,
This is regarding your statement that some one mentioned to you that Torvalds is not a master as he does not mentor people.
Let me say that i agree with that person, who ever he/she is. A Master or Guru is expected to share his knowledge with the world and also leave behind worthy successors. As per the hindu scriptures, a Guru is a torch who shows the way to the benighted. A Guru who does not share his knowledge is doomed to hell. A Master is what a guru is to the Indian culture. They are expected to share their knowledge, groom his successors to whom he can pass on the torch.
Knowledge is to be shared so that the generations to come can build upon it. It is not to be stashed away. Who ever does that, whether it is Torvalds or anyone is yet to graduate to the level of a Master.
What do you opine ?

Ravi said...
This comment has been removed by a blog administrator.
Ravi said...

This is the same intellectual fallacy the original commenter made.

"Master" and "Guru" are two different words meaning two different things.They have some degree of overlap in that both are expected to know something well enough to teach others but the words don't translate directly . Especially in the sense that the word "master" is used in "apprentice, journey man, master" which is what we are doing here.

You should be very careful to differentiating degrees of competence with one's personal ideology .

eg : "A Guru who does not share his knowledge is doomed to hell. " .This is religious mumbo jumbo and has no place in a rational debate.

Anyone who says Linus Torvalds is not a Master Programmer is kindly requested to show me code he wrote of comparable quality .

"They are expected to share their knowledge, groom his successors to whom he can pass on the torch."

Nonsense . This is your idea of what a "master" would do . There are masters who do this and there are those who don't. It all depends .

When you say someone is , say , master at writing (eg: Shakespeare ) it only means he is very very good at it . Nothing more .Nothing less. Any other imposition of expected behaviour is foolish and often reflects on the person doing the expecting than the master himself.

It may be nice in a particular cultural context if a master n a field shows behaviour like teaching others. But to make that part of the definition of mastery is silly .

Anonymous said...

I agree with Ravi .

Making software development into some kind of religious /mystical experience or "high art" or "arcane mystery" is crazy ! This is a disturbing tendency I see in some writing (including McBreen's ) .

Nobody calls an excellent scientist or businessman ,"Master Scientist" or "Guru Buisness man " .

As Ravi says in his blog , just focus on writing better code and don't worry about the labels .

As for the chap who wanted Linus to "teach" before he is considered a "master" (so what is he in the meantime ?What is the right "label" for Linus ?).

I consider Linus to be at the very top of the talent pyramid . Whether that is called "master" or anything else is irrelevant (as Ravi rightly points out in his blog) . Anybody who wants to spend time creating abstract theories of mastery without being a master himself is welcome to do so.

As the word "master" is used in English (I was born and live in the United Kingdom ), Linus is certainly a master programmer.

If you think otherwise , perhaps the profession of programming is not be the right one for you . If you go into a programmers' meet and say this out loud you will be laughed out of the room .

Ravi, nice blog . Very thought provoking. Have you read the book "Mastery" by George Leonard ?

Anonymous said...

Hoooooi !! I had just gone out for a cuppa coffee and i see so many comments !! :-)
Gentlemen, Enough ! lets go back to our seats and write some code. atleast, iam !
Joe, Praksh, Sriram...why trouble yourselves with the words ? let me quote Ravi "Shut up and write Code" ;-)(Praksh, pls dont take this seriously.hehe.)
and as regards what you end up being called...leave that to posterity.

Anonymous said...

Please put all those sarcastic arrows back into your quivers.Let us try to accomodate views from different angles.
I do not in anyway disparage or belittle Torvald's contribution. No man in his senses would. My works or my vision/dreams would be nothing compared to such stalwarts. Agreed. That being said, let me request you to understand the gist of my reasoning.
Sriram, If i say Don Bradman is not the greatest cricketer, i do not have to go out to the field and prove that iam better than him if i have to make such a comment. Please try to find the reasoning behind it before rushing to conclusions. The blogger here, Ravi has not written/published any book so far. So that does not mean that he cannot criticize McBreen.
Now, coming back to my point. The gentleman from England should remember that in Bible it is Jesus who is referred to as the Master. And for us indians ( i hope the rest of us are indians or atleast have indian roots) should remember that although Arjuna was a better archer than Dronacharya, it was Drona who was the Master/Guru and not Arjuna. Arjuna is referred to as the Greatest Archer, but why is he not called the Guru or the Master? The reason is that he did not mentor anyone! Jesus is the Master, not Peter. Drona is the MAster not Arjuna.
When did technology reach India? We should not get carried away by such western thoughts on Mastery. The terms Master/Guru have a divine aura around them.
Ravi, i am not taking sides with Mr.McBreen or justifying his theory. All iam saying is that the terms Guru/Master should not be conferred on someone just because he is the best in that field. It should be done, only if he passes on the torch and leaves behind successors.
Sriram, i have been in this industry for a long time. The first computer i worked on had 8KB memory. I wrote my first piece of code in 1981, what were you doing then, son ? :-) Was it then that you learned to walk? :-).
Let us accomodate views and not be sarcastic. Thats how such discussions should go on. Else this old man might not post a comment here again. :-). And yeah, i don't need that FEMA job.

Anonymous said...

Brilliant reference to the usage of 'Master' in Bible. I wonder what Christ meant when he said this though: "A disciple is not above his teacher, nor is a servant or slave above his master. It is sufficient for the disciple to be like his teacher, and the servant or slave like his master" (Matthew 10:24-26)

Perhaps he was referring to the slave getting slaving lessons from the Master?

And by the way, you forgot some of our own "Indian" references.

Indian movies have always used 'Master' to mean 'young boy'. You may remember "Master Aravind" or "Master Appu".

There is also the reference to 'Post Master' - a guy who "teaches" the "post-men" to do their job, the 'Station Master' guy who teaches train/bus drivers to drive and passengers to travel and so on. Perhaps the Brits are to blame for not knowing the meaning of the word when they named these titles.

And for 'Guru'? The references are too many to cite. In Sikhism - a uniquely Indian Religion - 'Guru Granth Sahib' is not even a guy! It is a book! Darn you, Punjabi language!

Everybody knows how partial Veda Vyas was. He refers to Drona as Guru, but not Balarama, Bhishma, Arjuna even though they have respectively taught Duryodhana, the Pandavas and Kauravas and Uttara (Remember those dance classes which he gave as a eunuch? Or does being a eunuch disqualify one?).

Ravi said...

whoa .

I go to sleep and come back to find a full fledged flame war .

ok. Enough is enough.

Sriram, you are way off line.While you have a good argument in your initial paragraph,the second is purely inflammatory .This will not be tolerated.

Pappu, if you are as experienced in the Industry as you claim , I would expect more maturity from you.If someone starts flaming you. please let me as the owner of the blog take appropriate action.Do not respond in like fashion. As i said this is not Slashdot.

Both your comments ought to be deleted.I am leaving them here for now as an example to others on how NOT to write comments.

( I apologize in advance to non Indian readers for this detour into Indian mythology)

Your religious comparions are way off base.

If you believe that only a person who "teaches" is a "Master", fine.Good for you .You have made that point before and I rejected the use of religious and mythological concepts in a non religious discussion.

And anyway your analogies are flawed . And the flaw comes from conflating the words Guru and Master.(Again if you wish to do so, please go ahead. It is just that the words are being abused.)

Drona was the Guru (along with a few more people as Monoj pointed out ) .

But it is perfectly right to say "Arjuna was a master archer" .

.Arjuna was NOT an apprentice archer. He was NOT a journeyman archer .He was a master archer because his skill levels were among the highest .

Now other people too learned Archery, including Bhima, Duryodhana etc. And both of them did use bows and arrows in the Battle of Kurukshetra .But they were not master archers. They were Masters of the Mace.

And one of thesets of terms used to measure skill (refer to the discusion between
Duryodhana and his commanders on the day before the war starts ) is that of "Rathi, AtiRathi and Maharathi".

Thus Drona is a Maharathi.So is Arjuna . Not so skilled(and thus less dangerous) people are Atirathis. Even less skilled(but still significant) are the Rathis.

Many of these people have a teacher-taught relationship between them .This has nothing to do with skill levels.And teh teacher -taught relatiosnship is not always formalised as Guru shishya. Witness Krishna telling Arjuna how to break into the Chakra Vyuha (part of which Abhimanyu hears) . Arjun is hardly a shishya of Krishna.

To repeat "Guru" and "Master" maybe the same in a religious context (that can also be argued. I am not going into it because it is totally irrlevant in this discussion) but it certainly is not the same in talking of a craft .(I notice you ignored my "Shakespeare as a master writer" argument ?Or for that matter Kalidasa ? No teaching == no mastery? )

And this is what I meant when I said "show me code of equal quality" . I did not say "be as widely known as Linus" .I said write as good code (whether it is widely known or not ) .

Yet you conflate the signs of visible achievement with the skill levels .

(as does Sriram).Please re read my post(both of you ) .

*I* never said you have to achieve success which is recognized by others to be called a "Master" . This is a very McBreen ish idea .

I said the exact opposite, that your skill level is the only thing that determines mastery whether you have achieved fame and money or not.

And imo McBreen is not amster writer His writing style is very turgid. This has nothing to do with how many books he has published or not. As a contrast, if you want to see a true master of technical writing, look at Martin Fowler.

" The terms Master/Guru have a divine aura around them."

Yes and this is exactly what I opposed. I don't believe there is a "divine aura" around anything. The use of "divine auras" to justify an argument makes it theology .

It also assumes that the partcipants in a discussion are all Theists and believe in the sanctity of Mahabharatha, the Bible etc.. This kind of argument is simply not relevant as a response to this posting amd illustrates yet another logical fallacy known as "Appeal to Authority".

Please cut down on religious terminology and appeals to divinity and sanctity and we will all get along better.

This is not the forum to discuss religion (at least religion as being something "divine").

"And for us Indians ( I hope the rest of us are indians or atleast have indian roots) "

This is also invalid logic. Whether I remember my roots or not has nothing to do with the logic of his argument."remembering roots" is irrlevant and not necessarily a positive trait.

Also , how much time you spent in the industry is irrelevant to the logic of your arguments.And while i can understand you getting annoyed with Sriram's style, let me remind you that you are the one who started this by treating a satirical piece of writing as a serious one and attempted to attribute motives to him.

Both of you, chill. Drop it.

Naren , Thanks for the attempted intervention to cool things down.
Much appreciated.

I suggest both you gentlemen (Sriram and Pappu) take an ice cold shower, and come back, shake(virtual) hands and behave like gentlemen . If you have personal issues, please settle it outside this blog (I suggest pistols at 10 paces .The winner can let s know what happened).

Else don't bother to post here. I am not writing my blog to create a community around it. If I meet intelligent rational people that is a bonus . If I have to waste my time ,dealing with these ego clashes, I will just delete any comments that offend my sensibilities.

I understand that both of you are intelligent, passionate people. Please confine that passion into formulating logical(repeat logical) arguments and we will all benefit .

The purpose of discussion , as i see it to enable greater understanding, not to score points off each other.

ok. Enough said. Let us all go on with our lives.

Joe, I have not read "Mastery" but I hear good things about it . I hope to get my hands on it by the end of this week. It is on its way to me from Amazon.And I will definitely post a review when i finish reading it.

Ravi said...

Apology Accepted.

Excellent Comment . (You should start a blog!) .

Anyone who wants to comment on the meaning of mastery etc is requested to NOT comment here. This post was more about McBreen's book and all commenters seem to agree that it wasn't all that hot.

Prakash and Sriram , please do not snipe at each other . Your comments are valued. All i ask is that you focus on the argument and not the person making the argument.I also request that you not invoke "divinity" etc . If you need to counter an argument please focus on countering with logic, not rhetoric. If you think someone is denigrating etc, as Rajesh said "ask! don't assume" . If somoen is being persistently irritating let me know off blog and I will handle it .

Any commenst i deem unworthy , will, from now on be summarily deleted. Nothing personal. I just don't have the time to go through each post and pick out the pearls, quieten flame fests etc. So far this blog has seen mostly intelligent and rational commenting.Please help me keep it that way .Thanks in advance .

Anonymous said...

Hi Ravi,
I agree that we have drifted too far away from the main topic. If you feel that your blog has been used as a slash dot, please do accept my sincere apologies.

Ravi said...

No harm done! Don't worry about it.

I am a little curious as to what exactly you are doing and where? I am curious to know about your work with the 8k ram systems.If you would, pleae tell us more? (if you don't want to use the blog, please write to my email id !)

Anonymous said...

I had done two years of schooling in US way back in 80-82 when i stayed with my uncle who was with the Myrtle truckers. It was then that we set up a water level indicator and warning system for the school using 8008. We used to wire wrap memory to come up with a maximum of 16 K.
Currently iam in US, working as an accounts manager for an Indian service provider.

Anonymous said...

hi ravi...i jus went back and read this whole stuff again...looks interesting :-)..hehehe..Need to ask you somethin....let me quote you..." "remembering roots" is irrlevant and not necessarily a positive trait."
Why did you say that remembering roots is not necessarily a positive trait ?

Ravi said...


Anything can be positive or negative.
Thus determination is good, stubbornness is bad . But they are both in essence a refusal to let go of an idea/way of being etc .They are two sides of one coin.Flexibility is good. Fickleness is bad . you get the picture.

Thus "remembering roots" is good, if the remebering is done clearly, and both good and bad are remembered , and processed logically. It is bad when it means "recreate a mythical , illogical, view of a golden past and treat it as a reality ". Thus for example while there is much that is good in (for e.g.)India's past , there is an equal amount of absolutely horrifying evil .When we "remember the past", we should recognize both, salute the former and *condemn the latter*. And History should never be confused with Myth.