Programming as an Engineering Discipline
At the recent International Lisp Conference, John Allen presented a paper entitled "History, Mystery, and Ballast" in which he gives the early history of the engineering discipline and draws an analogy between engineering of that time period and current software development practices. As physical and electrical engineering are constrained by the laws of physics, software is constrained by the laws of mathematical logic, and he hopes that a stronger theoretical basis and disciplined training will eventually supplant the mostly ad-hoc techniques of the current software shop culture.
In addition to the interesting historical aspects, he also gives an overview of the mathematical theory (constructive logic, lambda calculus, Curry-Howard Isomophism, etc.) that could serve as a basis for a software engineering discipline that creates predictable software, as he calls it.