views:

64

answers:

4

In development, what ideas have you been able to take from real world engineering/construction techniques to apply to coding you projects? For example, the circuit-breaker design pattern, which has a good use, most probably came from the actual circuit breaker, and the fault tolerance/failsafe concept could easily be borrowed from planes etc.

Has anyone got any good ideas to help with the reliability/error-handling of their code from engineering?

Thanks

A: 

Error handling you can borrow for example from car. If you design your product in few parts not depends on much things, you can simple check it separately and determinate what have some problem with working.

Svisstack
A: 

The idea of unit testing borrows from industrial manufacturing and testing techniques. Individual parts are designed and manufactured separately and each goes through its own battery of tests. Once it passes its individual tests, it is integrated into a larger system which goes though tests, and then that is integrated into a larger system, etc etc.

bta
+1  A: 

Two weeks ago, Glenn Vanderburg gave a nice talk at the Lone Star Ruby Conference 2010, titled Real Software Engineering.

In the talk, he argues that what we call "Software Engineering" today, is based on a fundamental misunderstanding of what Software is and what Engineering is. In particular, he argues that the way "real" engineers work, is much more similar to Agile than to what we understand today as "Software Engineering".

Here's a fun fact (well, sad fact, really) I learned from the talk: the Waterfall process, which was and probably still is the most widely used software development process was specifically created as an example of a process that does not work. The paper explains on the first few pages what Waterfall is, then spends several pages explaining how and why it is broken, and then several pages on how to it right. Unfortunately, no one ever read past the third page.

Jörg W Mittag
A: 

Homologous development of ideas may also occur, with merely the names taken from physical constructs, as useful metaphors in communication.

"Filters* occur both in chemical engineering and software. The former pre-dates the latter. I don't happen to know if the former idea inspired the latter. But regardless of inspiration, the similarity itself is interesting.

Lidwell's "Universal Principles of Design" compares design constructs that appear in multiple fields of engineering. It's an excellent book, and worth the read.

Andy Thomas-Cramer

related questions