Software Craftsmen

Among my coding friends, we've been struggling with the term "software engineering" for some time. The term just doesn't seem to fit. Here's our major stumbling point:
In engineering, the functional requirements are translated into complete technical specifications well before construction starts.
In software development, the work starts when you have the functional requirements, and the final completed product is the *only* accurate technical specification.
Great engineers are intentional and highly disciplined. Ask for a bridge? You get a rock solid, efficiently constructed bridge. Because engineering has all kinds of specifications, laws and codified knowledge, anything "engineered" by definition meets prescribed levels of safety, fault tolerance and reliability. For the right kinds of projects, those are very desirable characteristics (bridges, for example).

Great software developers are craftsmen. Their knowledge isn't regulated by regulations or ethos statements, and their textbooks really only teach syntax. Most of what they know is tacit and hard to learn. Their real value is in their ability to take basic requirements and incrementally build (with agile feedback) the Best Version of What You Actually Needed.

Great developers are few and far between, and they're the single most powerful positive force in any development project. They're expensive, and they should be - building the Right Thing (and often in fewer iterations) is really, really valuable.

Find them and get them on the bus.
blog comments powered by Disqus