Engineering, Craft or What?

Patrick Logan writes about the debate regarding whether software development is a craft or engineering. He has an interesting spin in that what makes software seem "craft-like" is the informalities.

I think the "informality" of software makes it feel craft-like. If only we had more formalisms. Could be, but we'll always have "informalities". Every engineering effort, and every creative effort in general, involves many informal conversations.

The difference is perhaps software depends more on informal conversations than do many of the traditional engineering disciplines. The requirements in those disciplines are more formal. Most of software development is really requirements development. The interpretation of formal requirements is most easily expressed in software as tests and code that (correctly one hopes) runs those tests.

Ultimately Patrick says that communications is the key and that failed is a result of failed communication not lack of formalism.

Which still begs the question for me - what is it that we, the software development discipline, are envious of from the "other" engineering disciplines?


  • I think there is an "Art and Craft" aspect to software and IMHO thats part of the attraction to it....

    sure if we were just punching out standard bits you can get fairly cut-and-dry with that.

    but when you need to build a system for real people to use you *HAVE TO* be able to step into the realm of Art and Craft and things like use of Color, screen layout and a number of other things that are hard to give sharp definitions for.... you can have general rules and guides but at some point you have to focus on who the user is and what will work best for that user / group / environment.

  • Not sure I agree with your comparison. How is developing a TV different than developing software? They are both soft skills that require domain knowledge and user/customer input. Both have constraints of costs, infrastructure, market demands, etc. You can choose to be as formal or informal as you want for either product.

  • > what is it that we, the software development discipline, are envious of from the "other" engineering disciplines?

    The fact that other engineering disciplines are based on physics instead of "a bunch of stuff some random guy decided was a good idea"?

    God didn't create x86.

  • >The fact that other engineering disciplines are based on physics...

    Physics is no more than thinking of a good idea and then doing experiments to see if you are wrong. How is that different than software?

  • Physics hasn't changed in the last bajillion years. How would building architects react if gravity changed every ten years? Or the fundamental properties of building materials were radically redesigned every five years?

    And yet that's exactly what happens in software. I suppose it's the price of playing God in those little Universe Boxes on our desks.

  • >And yet that's exactly what happens in software.

    Still I have to disagree. The fundamentals of the Turing Machine haven't changed since 1937. If you mean things like language syntax, frameworks and the like - then sure things have changed. But have you looked at the amount of new products comming out of materials science? Even "basic" things like framing materials are undergoing constant change.

Comments have been disabled for this content.