Ilja on Software Development and more...

Tags  

Again and again I hear people state that "software engineering" is too young to be mature, that in the future we should expect to work "just like in the other engineering disciplines": get a specification, apply your aggreed upon engineering formulas, and build the thing, correctly, the first time.

Are engineers actually doing that?

The documentaries I see about engineering projects always show the involvement of models, virtual reality, software- and real simulations to test assumptions and get feedback from customers. They need to do that because building (and potentially destroying) the real thing is too slow and/or costly.

Not so much with software.

Which bridge would you trust more: one that has been "mathematically proven" to withstand a storm, or one that actually has survived all kinds of storms over the last year, a hundred times a day (as shown by the acceptance tests, executed by the continuous integration server)?

I have a hunch all those engineering skills, while certainly valuable, in the end are "just" a crutch, necessary because real life testing is just not realistic for them.

Much more so with software.


As an engineer working as software developer I would say that the difference are mostly perception. Plenty of things are engineered in an iterative manner or are built all the way to be changed once being used. Just look at the house you live in. It was probably designed by an engineer (more or less) but it had many changes done to it since, just think of renos or extensions.. sounds like releases to me..
Most discussions I've read about parallels to engineering -especially civil engineering- assumed or pretended that building bridges and such could be likened to building software. While there are some similarities from a project management perspective, and some notions like building blocks, patterns etc. certainly apply to software as well, this misses the fact that software projects almost always build something entirely new. It's not like building a similar bridge over a different part of the river with a different look and different approaches - if that was the case, one would buy or license the original software and have it customized a bit. No, each software project is fundamentally different; saying "yes, but they all take user input and access a database" really doesn't help in that context. And where a project is an upgrade to existing software, it'd be more like taking a bridge and rotating it by 90 degrees so that ships can use it instead of cars. So I'm not convinced that building software will ever be close to the classical engineering disciplines in terms of predictability.
I don't think, traditional software engineering works like engineering. Rather it works like mathematicians thought, engineers should work with the fatal miscinception that we produce software rather than develop. So people tried to adapt concepts of mass production (Gantt charts, TQM, Taylor) leading to waterfall - which obviously failed. If we watch how engineers, artists or craftsmen address *completely new* tasks (thanks Ulf for pointing that out), we find things like iterations, experiments and so on. In addition we can get a lot of benefits from the fact that software can be built changeable which allows us to use evolutionary techniques to a much broader extent than any other discipline. This is an enourmous opportunity for those who dare.
Hello Ilja, I think that software has evolved to being more predictable in some cases. I think the question will always come down to the level of novelty involved. A "standard" building is something that the contractor does not really have to think about a lot a have done many, many times before. A unique building such as the Calatrava's Turning Torso Building brings building to the novelty spectrum again. http://www.arcspace.com/architects/calatrava/torso/ Will software be predominantly a novelty in the future ? My opinion is that at least for the next 100 years it will.
Well, there is not much money to be made by building software that is not novel - you just copy some existing software. It's actually the *designing* of software that software developers deal with. *Building* software typically is fully automated (using compilers and similar).

Fortunately, software is much less restricted by physical laws than buildings - I don't expect humankind to get out of new ideas for software during my lifetime...



Add a comment

Title
Body
HTML : b, i, blockquote, br, p, pre, a href="", ul, ol, li
Math Quiz 4 + 4 = (Helps stop blog spam)
Name
E-mail address
Website
Remember me Yes  No 

E-mail addresses are not publicly displayed, so please only leave your e-mail address if you would like to be notified when new comments are added to this blog entry (you can opt-out later).

TrackBack to http://radio.javaranch.com/ilja/addTrackBack.action?entry=1245251765871