Half the problem is of course that we make software all wrong.
CAR ANALOGY ALERT
If we made cars the way we made software, we would make cars one at a time by hand, and the the first thing an engineer would do is throw out the current set of tools and make his own.
Then he'd borrow some doors off another car, throw away most of them but keep the frame and then try to bolt on door cards and window fixtures from a third car. It'd kinda work but there'd be a recall later on to sort out the fact that they let the rain/heat/snow in.
He'd reinvent the ICE from scratch, being careful to avoid learning from any mistakes. This ICE would be made from components that mostly match the stuff you can buy in a motor factor, but the screw threads go the other way half the time, just cuz.
Lather rinse and repeat throughout the car.
Testing would consist of getting a US learner driver to do their test in it - drive forward a bit, turn a bit, go backwards a bit, play the radio, make sure all the lights work, ensure paint is shiny. Any more than that would be excessive and, most importantly, very boring.
END CAR ANALOGY
The crazy thing is that we have most programmers doing what most programmers shouldn't - actually writing code. Computers should be writing code (and if programmers are writing code, they should be the kinds of weird lunatic geniuses who write compilers and design microprocessors and who you wouldn't want to be stuck with at a party). Programmers should be solving problems and working out how to test their shit properly and then telling a computer to write the damn code.
CAR ANALOGY ALERT
If we made cars the way we made software, we would make cars one at a time by hand, and the the first thing an engineer would do is throw out the current set of tools and make his own.
Then he'd borrow some doors off another car, throw away most of them but keep the frame and then try to bolt on door cards and window fixtures from a third car. It'd kinda work but there'd be a recall later on to sort out the fact that they let the rain/heat/snow in.
He'd reinvent the ICE from scratch, being careful to avoid learning from any mistakes. This ICE would be made from components that mostly match the stuff you can buy in a motor factor, but the screw threads go the other way half the time, just cuz.
Lather rinse and repeat throughout the car.
Testing would consist of getting a US learner driver to do their test in it - drive forward a bit, turn a bit, go backwards a bit, play the radio, make sure all the lights work, ensure paint is shiny. Any more than that would be excessive and, most importantly, very boring.
END CAR ANALOGY
The crazy thing is that we have most programmers doing what most programmers shouldn't - actually writing code. Computers should be writing code (and if programmers are writing code, they should be the kinds of weird lunatic geniuses who write compilers and design microprocessors and who you wouldn't want to be stuck with at a party). Programmers should be solving problems and working out how to test their shit properly and then telling a computer to write the damn code.