Why do some programmers think there is a contrast between theory and practice?
Posted
by
Giorgio
on Programmers
See other posts from Programmers
or by Giorgio
Published on 2012-06-01T15:09:05Z
Indexed on
2012/06/01
16:49 UTC
Read the original article
Hit count: 374
Comparing software engineering with civil engineering, I was surprised to observe a different way of thinking: any civil engineer knows that if you want to build a small hut in the garden you can just get the materials and go build it whereas if you want to build a 10-storey house you need to do quite some maths to be sure that it won't fall apart.
In contrast, speaking with some programmers or reading blogs or forums I often find a wide-spread opinion that can be formulated more or less as follows: theory and formal methods are for mathematicians / scientists while programming is more about getting things done.
What is normally implied here is that programming is something very practical and that even though formal methods, mathematics, algorithm theory, clean / coherent programming languages, etc, may be interesting topics, they are often not needed if all one wants is to get things done.
According to my experience, I would say that while you do not need much theory to put together a 100-line script (the hut), in order to develop a complex application (the 10-storey building) you need a structured design, well-defined methods, a good programming language, good text books where you can look up algorithms, etc. So IMO (the right amount of) theory is one of the tools for getting things done.
So my question is why do some programmers think that there is a contrast between theory (formal methods) and practice (getting things done)?
Is software engineering (building software) perceived by many as easy compared to, say, civil engineering (building houses)?
Or are these two disciplines really different (apart from mission-critical software, software failure is much more acceptable than building failure)?
© Programmers or respective owner