The Clean Code Blog

by Robert C. Martin (Uncle Bob)

Novices. A Coda

25 November 2013

There has been some confusion about my recent post: Hordes of Novices. Many people who aspire to become craftsmen took the article to mean that I don’t want new people to enter the craft. Nothing could be farther from the truth. We do, in fact, need a growing stream of newcomers entering our craft. Some folks who run code academies or boot camps took the article to mean that I didn’t think those schools were useful. Again, nothing could be farther from the truth. We need a growing and effective supply of accessible software education.

What we don’t need is to throw masses of newly trained novices into mission critical projects without careful supervision, monitoring, and continuing education. What we don’t need is to expect novices to behave like professionals. What we don’t need is to continue in the absurd belief that a degree in computer science, or the completion of a boot camp, is sufficient to produce a professional software developer.

The fact is that gaining competence in software development requires several years of supervised probationary experience. Novices should not be able to check code into the main line. Their coding behavior should be carefully supervised and their code should be just as carefully reviewed by senior craftsmen. This period of probation should last several months, after which the novices should gradually and incrementally gain greater and greater trust and responsibility.

This is the way any reasonable trade or craft works. Interns don’t do heart surgery upon getting their medical degree. Lawyers don’t litigate supreme court cases upon getting their law degree. Electricians don’t allow novices to wire up houses without supervision. Plumbers don’t allow novices to connect all the water pipes in a house without supervision.

Demographics.

Our problem is one of demographics. Our industry is young, and it is young in two dimensions. The first dimension is that the entire software industry is barely 60 years old. There hasn’t been a lot of time to learn the lessons that other industries and crafts and learned. There also haven’t been enough programmers to learn those lessons.

I got my first job as a programmer when I was 17. That was in 1969. How many programmers do you think were in the US in 1969? I don’t know the answer, but I’d be willing to wager that the number was below ten thousand, perhaps below five thousand. Now the number is orders of magnitude larger. There are no less than ten million IT professionals in the US alone. Worldwide the number must approach, or exceed, a hundred million.

And that leads us to the second dimension of youth in our industry. Most programmers are young.

How many of those hundred million are under thirty? Again, I don’t know the answer, but the fraction is likely to be very large, because most of the hiring has been in the last decade. Indeed, the median age of programmers has gone down in the last decade.

How many old guys, with 30+ years experience, are available to show these youngsters the ropes? Not very many. Firstly there just weren’t that many programmers 30 years ago. Secondly, most of those programmers stopped coding 20 years ago in order to go into management or marketing. This might have been good for them, but it hasn’t been good for our industry; because we sorely need some battle hardened leaders to guide the novices.

A Structural Change

The fix for these problems has already begun. Several software firms are now employing good solid apprenticeship programs that produce competent software engineers and then turn them into competent leaders. Other companies are sure to follow. In the coming decades all those companies will have a distinct competitive advantage: They’ll be the companies who know how to get software projects done, and done well.