What does discipline mean to you? Looking at the definition from Merriam-Webster Dictionary, it could mean:
- punishment
- (obsolete) instruction
- a field of study
- training that corrects, molds, or perfects the mental faculties or moral character
-
- control gained by enforcing obedience or order
- orderly or prescribed conduct or pattern of behavior
- self-control
- a rule or system of rules governing conduct or activity
In the software community, we seem to equate discipline to specific techniques. Therefore, in talking about disciplines of a software developer, it isn’t uncommon to hear things like Test-Driven Development, Pair Programming, etc. But to me, those are all practices of specific camps. My definition of discipline is more in line with this:
Discipline is what kicks in when motivation takes a holiday. It keeps you going to class, keeps you pushing yourself even when you’ve hit a never-ending plateau and you just want to go home and curl up in bed. Discipline will keep you training until you fall in love with your art all over again and the cycle starts again.
In other words, to me discipline is a cross-cutting concern. You may do RUP, I may do XP, Sara may do Scrum, someone else may practice Crystal Clear. Or, to equate it back again to martial arts – I may do Judo, you may do Jujitsu, Sara may do Kung-Fu, and someone else may do Karate. But there are concrete disciplines that the students from all the camps have: Respect, Honor, Practice, Mentoring. These things make up some of the core disciplines that defines a martial arts student.
In a similar vein, there are core items that students from all software camps can articulate. Certainly Respect is one. Mentoring is another. Things that are not just concepts held across camps, but concepts which can be articulated. For example, if I kick you in the face at the beginning of a match as we’re bowing to one another, I’ve violated the discipline of Respect, and rightfully should be tossed out of martial arts. I may still practice the same things, I may still be able to perform the same moves, but I’ve forfeited my right to be called a student of the art. I’m a thug.
Looking at an initial shot at a Software Craftsmanship Charter some of those things are on there – Respect, Responsibility, Mentorship. I’m wanting more. I’m wanting things that we can take to students – whether they be high school, college age, or just from the school of life – and say, “Regardless of the specific techniques practiced at your company, these are steps you can take to becoming a true craftsman”. We’ll likely find some overlap with Team Building, accountability and others.
But the one thing that should hold true is that, no matter the camp, no matter the practice, we can hold it to the litmus test of the core disciplines and know where it stands. Which also means we can hold us to the same test, the same disciplines. And that might be scary for some. But if we want to truly turn this industry around, we have to start defining foundations that are unshakable.
What are your disciplines?
Great thoughts, Cory. I’m really looking forward to coming down to Florida and having some time to talk in person with you. Face-to-face communication has a much more appropriate bandwidth for this kind of discussion.
Cory: Interesting article. You mention at the end that we need to turn the software industry around. In what way do you mean? Do you mean the current economic / employment crisis, or are you referring to some deeper ill?
Hi Ted!
It’s a deeper issue. We as an industry have gone a long time without viewing the software development profession as a craft, with developers as true professionals. Instead, we hire Junior developers (calling them senior), hand them shiny IDEs and vague requirements, and then complain bitterly that software is crap.
Much of this spawns from Uncle Bob’s talk about “Craftsmanship over Crap” at Agile 2008, but is really just a recognition that if we want to improve how software is built, we have to improve the people building the software.
Hope all is well – email me sometime at foyc at cornet design dot com. Heard you all have a new addition coming soon!
Hi Cory,
I don’t see your email listed anywhere, so I thought I’d leave a message here. I noticed that you recently reviewed an iPhone programming book for Slashdot. I wanted to see if you’d be interested in reviewing iPhone in Action from Manning Publications. You can find more details about it at http://www.manning.com/callen. If interested, please shoot me an email at stho at manning dot com. Thanks!
Steven Hong
Marketing Coordinator
Manning Publications
http://www.manning.com