There is general consensus that the software development process is imperfect, sometimes grossly so, for any number of human (management, skill, communication, clarity, etc) and technological (tooling, support, documentation, reliability, etc) reasons. And yet, when it comes to talking about software development, we apply a variety of scientific/formal terms:
- Almost every college / university has a Computer Science curriculum.
- We use terms like “software engineer” on our resumes.
- We use the term “art” (as in “art of software development”) to acknowledge the creative/creation process (the first volume of Donald Knuth’s The Art of Computer Programming was published in 1968)
- There is even a “Manifesto for Software Craftsmanship” created in 2009 (the “Further Reading” link is a lot more interesting than the Manifesto itself.)
The literature on software development is full of phrases that talk about methodologies, giving the ignorant masses, newbie programmers, managers, and even senior developers the warm fuzzy illusion that there is some repeatable process to software development that warrants words like “science” and “engineer.” Those who recognize the loosey-goosey quality of those methodologies probably feel more comfortable describing the software development process as an “art” or a “craft”, possibly bordering on “witchcraft.”
Read the whole article on the Code Project.