the developer certification problem

2010-03-07 @ 15:42#

i saw a great post from @unclebobmartin on dealing with the terrible state of software developer skills. it reminds be of an effort i got involved in several years ago to promote government licensing of software developers (ala Steve McConnell's "After the Gold Rush"). that fell flat, of course.

IMO, the issue of poor quality software is tied up in how developers want to 'cast' their work. IOW, is the discipline of writing code primarily art, craft, or engineering?

if software is an engineering discipline, then the way to ensure quality and value is through boards and standardized testing. the way architecture, structural engineering, and other disciplines are managed.

if software is a craft, then the way to ensure quality and value is through a stringent master/apprentice model the way many building trades (plumber, electrician, etc.) are handled.

if, on the other hand, software is primarily an art, then it's future lies in the establishment and promotion of 'schools' and styles and standard-bearers similar to the way most other artistic endeavors are judged and sustained.

personally, i favor the 'craft' model. in this case, what is currently needed are master developers willing to take on apprentices. these masters need to be of the caliber that industry accepts their advice and favors their apprentices. in this way, masters can protect and promote the quality of software development for future generations.

IMO, Robert Martin would make a fine master developer. i'm sure he can identify others worthy of that title. from there, it's up to those masters to take on the responsibility of training apprentices and making sure they carry forward the high craft of software development.

of course, we need folks willing to accept the role of apprentice, too. people willing to figuratively 'sit at the feet' of the master and take in all the master has to offer. from what i've seen over the last several years, there are too few developers willing to accept that relationship. instead they are anxious to create 'the next big thing' in software. the result is usually a weak idea poorly implemented. occasionally i see a good idea poorly executed. rarely do i see evidence of a great idea implemented by true software craftsmen.

code