Margaret Hamilton, computing pioneer who led software development for the Apollo program, dies at 90
199 points by lorddimwit
199 points by lorddimwit
Given my complex relationship with the term "software engineering", I should have known already that:
Throughout her career, Hamilton worked to achieve recognition for software engineering as a dedicated discipline.
“I fought to bring the software legitimacy so that it — and those building it — would be given its due respect, and thus I began to use the term ‘software engineering’ to distinguish it from hardware and other kinds of engineering, yet treat each type of engineering as part of the overall systems engineering process,” Hamilton told El Pais in 2018. “When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline.”
I still think, despite brilliant work to argue the opposite (Lobsters discussion) that most of what I've been paid to do as a "software engineering" is not engineering. Margaret Hamilton's work, though, clearly is. Maybe the problem is that there is not so much will to bankroll software engineering, because other software work seems to work much better generating profit.
The video were Margaret explains the "astronaut making a child's mistake" might not be Therac-25, but it's definitely worth watching a video.
Thoughts on the use of "defensive programming" in the article? I suspect there are two interpretations of the term a) defending from user mistakes (good!) and b) defending from software defects (which I rarely see done in a way I like).
edit: The other salient thing I should have known is that Margaret Hamilton worked with Lorenz! (Finding the link made me discover a 2014 XKCD I somehow missed.)
re engineer vs. not engineer. I think we reduce every programmer role to a single thing in our heads, but there's a huge amount of variance. Just like in construction, there are carpenters, electricians, masons, painters, steelworkers, welders, ad infinitum. An then on top of that there are "actual" engineers, e.g. structural engineers and architects
So, depending on what you end up working on, I totally see how you wouldn't end up calling it engineering. But, I think there are parts of software development that definitely do count as engineering. Like, capacity planning, performance and reliability engineering, etc.
Well, I have sparingly done more "engineering-like" things, yes. But I think most of what I see is not engineering.
(And that is not negative! Lots of value in non-engineering work. Just that I feel more like someone making shoes with my hands than someone designing and building a bridge. And I think this is just an accident of how young software development is- I feel we have not learned much about how to do it "properly" in a structured way. For sure we have discovered things like peer review and some formal methods, but I feel there's much to do until we can build complex software reliably.)