I keep wondering when software methodology will keep up with just how bad modern software really is. Software is always terrible - until it gets refined over time.
By this I mean bringing concepts such as testing directly into programming languages. It isn't enough to say what a program should do, we need to say what programs should not do as well. Some languages have tried (Eiffel?) but failed. Some approaches have worked but have put the effort in the wrong place (e.g. JVM enforcing bounds checking) or by making it too powerful in the wrong ways (e.g. aspect oriented.)
Go takes a step in the right direction by introducing unit testing directly into the tooling. But that's not remotely enough.
Agile doesn't solve the problem either, because it focuses on the idea of a releasable product every few weeks. Living the reality of agile, I gotta say, it falls on its face a lot. Sure, you can make some microscopic change to your product, but then QA has to do a full regression every 2 weeks.
Surely software engineering can do better than this.
Comments
I keep wondering when software methodology will keep up with just how bad modern software really is. Software is always terrible - until it gets refined over time.
By this I mean bringing concepts such as testing directly into programming languages. It isn't enough to say what a program should do, we need to say what programs should not do as well. Some languages have tried (Eiffel?) but failed. Some approaches have worked but have put the effort in the wrong place (e.g. JVM enforcing bounds checking) or by making it too powerful in the wrong ways (e.g. aspect oriented.)
Go takes a step in the right direction by introducing unit testing directly into the tooling. But that's not remotely enough.
Agile doesn't solve the problem either, because it focuses on the idea of a releasable product every few weeks. Living the reality of agile, I gotta say, it falls on its face a lot. Sure, you can make some microscopic change to your product, but then QA has to do a full regression every 2 weeks.
Surely software engineering can do better than this.