Engineers were building steam engines before there was any thermodynamics. Engineers were playing with batteries before anyone could understand why they were producing an electrical current. The theories followed and they were based on Maths. Maths is the underlying
analytical tool.
There was never a 'Theory for Mechanical Engineering' or 'Electrical Engineering', why the need for a 'Theory for Software Engineering'?
Best practices develop over decades (for example in Fire Protection Engineering), as well as Management techniques to manage time and complexity.
Is the Model View Controller technique a theory? No, it is just a management technique. (It will work just fine in one long program as well).
But there is a mechanism for this. Maths -> Lisp/Haskell/etc -> time passes -> F# ships in Visual Studio, the most widely-used development tool on the planet.
he's saying that the various processes, methods, and tools we espouse should follow from a fundamental theory of software development. Right now, the nicest thing that can be said for the various things we espouse is that they are "laws" based on empirical observation.
But we don't have an underlying theory explaining which programming languages are more productive than others, or which processes will work and which will fail. It's a lot like chemistry before the periodical table and especially before quantum mechanics. In orther words, it's alchemy.
There was never a 'Theory for Mechanical Engineering' or 'Electrical Engineering', why the need for a 'Theory for Software Engineering'?
Best practices develop over decades (for example in Fire Protection Engineering), as well as Management techniques to manage time and complexity.
Is the Model View Controller technique a theory? No, it is just a management technique. (It will work just fine in one long program as well).
Just hack and let the theories follow :)