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?