Monday, July 20, 2009
Jeff Atwood thinks so (emphasis in the original):
I can publicly acknowledge what I’ve slowly, gradually realized over the last 5 to 10 years of my career as a software developer: what we do is craftsmanship, not engineering. […]
What DeMarco seems to be saying — and, at least, what I am definitely saying — is that control is ultimately illusory on software development projects. If you want to move your project forward, the only reliable way to do that is to cultivate a deep sense of software craftsmanship and professionalism around it.
The guys and gals who show up every day eager to hone their craft, who are passionate about building stuff that matters to them, and perhaps in some small way, to the rest of the world — those are the people and projects that will ultimately succeed.
I think Jeff may be splitting hairs a bit when it comes to the definition of engineering but his overall point is well taken. Burdening software development with too much process and discipline stifles creativity and contributes, I believe, to that unholiest of all (software) abominations, “enterprise” software.
When I first started to pursue a Computer Science degree in college, there were two required texts: C++, an Introduction to Computing and Introduction to the Personal Software Process. The premises of these books, respectively, were (a) in spite of a patently unhealthy obsession with semicolons, C++ is the One True Programming Language™ and (b) programming, if done properly, must produce more paperwork than code. I lost what interest I had in programming at that point and it has taken me a decade to regain that interest.