I’m still struck by awe when I see how civil engineering projects are run, despite enough prior examples from other engineering disciplines, software (and indeed the rest of computing) often suffers from such a perceived lack of testing and process.
Though perhaps and I’m just simply wrong when there isn’t process that can be used – however it seems that most projects I’ve ever worked on, the process has been seen as a “unnecessary” burden on the poor programmers (and everyone else). How much of this stems from a normal process where it’s actually really hard to get a piece of software that is actually fit-for-purpose (taking microsoft’s EULA as an example it pretty much divests them of any responsibility) – how can this be – it’s like Ford turning around and saying that the car might not have wheels that go around.
Ok, that’s perhaps stretching the point quite a lot, but the general theme is still true (sadly) – though currently software development is still very much the case of individually hand-crafted items (code-fragments) reminiscent of time prior to mass-manufacturing of rifles by springfield in the 1800s in the US. So perhaps Java is heading the right way in this regard, with “important” code being frameworks that you can implement your business desirables upon – such as hibernate , spring – and removes the burden of “getting things right” from the programmer, eg: software should become more like building blocks that businesses can just glue together.
Definitely more of a design goal than anything else, but I just feel humbled whenever you look upon something like the Tower of London and it’s been standing there for just over a thousand years and hasn’t fallen over and been fit for purpose for a fair chunk of them!