An interview with Margaret Hamilton
theguardian.com
theguardian.com
Possibly the most useful part of this interview for working programmers. If you really want things to be bug-free, design them to be bug-free -- don't just squash bugs until you think you've probably found most of them.
(Which approach you take depends on how much you care about bugs versus engineering cost, but there are multiple approaches. You can make reliable software if you're willing to put in the effort.)
If you specify a system correctly upfront it is indeed possible to make something very very reliable. But a big part of building nowadays software is requirement gathering as you build (or worse - deploy it) nobody knows what it should do beforehand, and in a lot of times it is impossible (or very very expensive) to know.
The whole thing called XP and agile came out as a way to deal with it.
I can still remember the time when devs battled hard to make business people / clients provide requirements up front - the waterfall model. The Apollo program was brought up constantly as a proof that this is the way.
And then we went “fuck it its never going to happen, lets design a process that recognizes this and allows for _some_ sanity”
What NASA used was the latest iteration of a process that has been in use for hundreds of years, quite well understood. Agile and the like are still in its infancy but I think it has a lot more potential for evolution. And its more recognizing what is that wishful thinking of what could be if human nature was different.
And its not like waterfall is banned or anything - you can practice it to your hearts content, for some domains this is even a good idea (implementing protocols comes to mind, financial, medical etc.).
We’ll see who goes to market, gathers business intelligence and answers the customer’s needs faster/cheaper/better.
As a senior management at one company once told me: "That may be what I asked for, but its not what I want" - which is an extreme view but not untypical in lots of domains.
That made me sad to read. I suspect she's probably right too.
It is more of a people problem and market problem than a technical one. I long for formal methods and rigorous design.
int main() {return 0;}
I believe this is bug-free, and would love to know, if it isn't?Don Eyles' account https://www.doneyles.com/LM/Tales.html
Extract from Lunar Surface Journal https://www.hq.nasa.gov/alsj/a11/a11.1201-fm.html