3 ms·
Okay, I defer to you. :-) So there's this meme floating around that software "engineering" needs to be more like "real engineering". "Real Engineering" doesn't
by pnathan 13y ago
Okay, I defer to you. :-)
So there's this meme floating around that software "engineering" needs to be more like "real engineering". "Real Engineering" doesn't make mistakes, has everything planned, is on time, is reliable, etc (don't laugh, OK? This is the meme, not the truth). It's fairly foolish, and I want to point out the reality.
N.b., I personally don't think writing software is engineering (no laws of physics, no experimental results, no materials, no models of behavior - I can go considerably more in depth if someone cares enough to email me); I see it as a craft.
- Dwolb 13y agoSoftware is definitely engineering for real time and safety applications. Consider aerospace software that keeps planes flying, drive-by-wire systems, and power plant software
- pnathan 13y agoI've done SW for real-time & safety critical systems. Things are heavily tilted towards "Quality" in the "quality fast cheap" triangle there, but at the end of the day, it's still: - unit tests - functional tests - code reviews - automated analysis tools I have a real hard time saying that this is engineering when it can be done by anyone who has the internal discipline to do it carefully. More pertinently, I don't believe that there's any experimental basis to demonstrate software's correctness for a task a priori. E.g., I (or actually a more competent mechanical engineer) can develop a model for a table and demonstrate that given x,y,z constraints the table will hold; attaining x,y,z constraints requires using a,b,c kinds of materials. This all before the table has been built, based on fundamental laws of physics and observed qualities of materials from the field of material science. Computer science research (in broad strokes) is generally devoted to determining existence or other qualities of algorithms for tasks, or demonstrating really spiffy and unthought capabilities of computers given extant algorithms and hardware. This does not generate the basis for building materials for programs: this generates tools and other capabilities to shape the software. I am not knocking CS research - it's valuable when done well. But I have a hard time seeing how CS research provides the same type of foundation that, say, chemistry research provides. What I think I am saying is that formal sciences don't lead to engineering the same way natural sciences do: the application is qualitatively and distinctly different, and not simply in degree or seriousness. Disagreements are invited.