We software people love to think of ourselves as craftsmen.
The problem is, no-one (else!) wants that.
Why we like it
Craftsmen have pride. Craftsmen have skill. Craftsmen have technical expertise which cannot be easily duplicated or replaced. Craftsmen enjoy the pleasures of personal expression in their work. In every task, a little bit of the craftsman is inserted. There is more than one way to finish a task, and the flexibility is an opportunity for a unique solution. It’s a signature, a flourish, a joyous individual spark.
Craftsmen rejoice in challenging work, complex work. They long for tasks which push them, stretch them and present a stage to showcase their abilities. They climb the mountains no one else can.
A craftsman receives compensation and acclaim in proportion to his skill. A craftsman is accorded respect and authority in his work – he judgment is accepted, not overridden.
Why they don’t like it
Craftsmen are arrogant. Craftsmen demand special treatment and status. Craftsmen are not team players. The refusal of craftsmen to work collaboratively on a project is a major project risk. If a craftsman gets hit by a bus mid-project, you’re in dire straits, because he didn’t cross-train anyone or allow anyone else to gain familiarity with his work.
You can’t manage any of the risks associated with craftsmen, because they are unwilling to tell you any details about what they are doing. You can’t measure progress, quality or cost when craftsmen are involved.
Craftsmen waste all sorts of time on useless vanities which demonstrate absolutely *no* business value whatsoever. They’re completely useless at just getting the work done, always turning molehills into mountains for their own amusement. They shy away from anything they perceive as tedious or uninteresting.
You can’t get a craftsman to write a simple program or a readable program. They say things like, “It was difficult to write; it should be difficult to read.” They’re more likely to write you the thing *they* want than the thing *you* want.
A craftsman bills at ridiculous rates. A craftsman is unmanageable, largely due to his belligerence and his ridiculous demands of autonomy. Craftsmen have authority issues.
So what are Software people, anyway?
Umm… I don’t know. You can follow this discussion all over the internet. There are umpteen billion management management articles available (“How to manage your team of IT cats”, “Managing software projects”, etc. etc.) which go on ad nauseum (and given the way management types write, I *do* mean nauseum) about it. There are umpteen billion technical articles (a smaller umpteen, programmers don’t like writing the way management types do) about stupid management and the pride of a noble profession.
Certainly no one was ever drawn to computer software by an earnest desire to add value and demonstrate business excellence through a customer oriented focus.
We’re drawn to it because we love the thrill of design – the pleasure of taking some small corner of the world and describing it, building a machine of thought to manipulate it and turning it to our own purpose. If you want a world where Employee #105 Joseph Smith has his account credited with his $salary – $deductibles on get_first_day($current_month), we can build that world for you. We can make it so.
Unfortunately, design is expensive, and what everyone *else* wants is software at no cost.