I was able to meet her, and others who worked at the MIT Instrumentation/Draper Lab, as a start-up I was with received funding from a VC firm founded by other Draper Lab members from the Apollo era. I was totally out of my league talking with them. This was thirty years ago and I remember her talking about formalized control systems. It was fascinating but went totally over my head. My startup was a fairly silly multimedia CD-ROM company and I was just happy to be in the room.
Thanks for sharing this story from this point of view so genuinely. I really enjoyed it more than I thought I would enjoy any comments under this sad news.
I think projects like Apollo are important in a way that they let extraordinary people to use their capabilities.
I feel from personal experiences as well as from many close people that often the corporate world really struggles on dealing with talent. And I don't mean autistic savants doing obscure things but relatively normal but very competent people doing actual well based comprehensive business helping work - but you have to do something in a very dumbed down way because the organization is built in a way to only accept small changes to the state of the art.
Yeah, something like the Apollo project has an exciting and profound enough destination/vision that it acts like a forcing function that herds all the cats.
The thing I've taken away most from my multidecade career is that the hardest part is getting any group of people all marching in the same direction, of their own volition. Everyone's motivations always differ. And leadership that just tries to force one direction almost always fails to consider enough viewpoints. And the alternatives, a deliberate rhizomatic chaos, or cutthroat competition,
can be entirely demoralizing.
It's not just "can these organizations produce brilliant output?" but "can they produce quality output?" I think you can take a lot of pride in doing ordinary things properly and giving people good experiences.
I stayed at a major chain hotel this weekend and it was a fine stay, the staff was great, but... there were just numerous little tech problems. Like the USB chargers had bad connections so I plugged in my phone overnight and it didn't charge and the next morning I found I had to twist the connector to get it to work. And then when I tried to connect to the WiFi with a Steam Deck [1] it wanted my personal info to join their rewards program, but the complicated Javascript-based dropdown menu to pick a state barely worked and after a minute of screwing with it I was able to pick the wrong state but not pick my real state so I looked up a zip code in that state and entered it.
When I got home I got an email from "no-reply@thathotelchainfoundedbyparishiltonsgreatgrandfather.com" gushing about how they want me to have the perfect experience and how badly they want to hear from me. Like yeah, they want me to call their 800 number and give me a piece of my mind.
It bugs me because I spend my day fixing problems with Javascript apps and I know all about those overcomplicated dropdowns. I get the feeling that if a staff member screwed up they'd be held accountable but people act like technology problems are like the weather and there is nothing we can do about it.
[1] granted an unusual device BUT... I don't travel with a laptop anymore, don't need to connect my phone with WiFi in 5G country and may or may not connect my iPhone. They could have just used the <select> that comes with HTML and it would have "just worked" and today you have so many options to style those with CSS
I always take time to look at those photos when I see them making the rounds.
Such a brilliant person, such an incredible body of work. And yet she indulges in a fun and silly photo shoot. It's a wonderful moment of humanity, and a reminder that the history of computer science is fundamentally about people.
She did! A few years ago I actually tracked down the source of that, which was an interview done for an obscure textbook and republished it on my blog if you are interested in learning more: https://catskull.net/interview-with-margaret-h-hamilton.html
And gate-kept by just as many. I wonder what she'd take more issue with. My understanding is she wanted to elevate people who work on software, not draw a line around it.
If I had the option I would prefer the term "engineer" be gatekept.
Terminology can help elevate something that's often overlooked, but if every programmer gets called a "software engineer" there's no way to distinguish the special stuff.
So are you okay with actual engineers having a problem with the term used in software since you support gatekeeping? Engineer is a term that was used far before software was a thing. So if you support gatekeeping, you should let engineering refer to "actual work" not "code" and find a new term that doesn't engulfs the "original meaning".
Or just accept terms change as society and technology does.
> Engineer is a term that was used far before software was a thing. So if you support gatekeeping, you should let engineering refer to "actual work" not "code"
This is so jumbled. You mean to say that before software, all work was physical? Nah, engineers spent and spend a lot of time at the drawing board, too. It's just that they're not sitting at the plastic table with a sticker of a dog with a toolbox on it.
If you don't follow rules and practices that are external to you and your employer, as you might in aviation or nuclear reactor software, there's not even a chance it's engineering. It can be "software engineering", sure, just the same way "software architect" is not an "architect".
> NCEES will discontinue the Principles and Practice of Engineering (PE) Software Engineering exam after the April 2019 exam administration. Since the original offering in 2013, the exam has been administered five times, with a total population of 81 candidates.
If you don't want the same rigor, if you can't handle the same rigor, you don't get the same respect. Because you don't deserve it.
That's just your opinion. If you support gatekeeping, you support retaining the original meaning of words. The original meaning of engineering did not include software.
So it is a contradiction if you support gatekeeping but also only when its convinient to you.
It doesn't have to be that binary. The important part of the meaning is the rigor and responsibility, not the field. Actual engineering has expanded to new fields multiple times.
And if the "convenient to you" point is also supposed to apply to me, nope not at all. My programming would not qualify.
> A professional engineer is competent by virtue of his/her fundamental education and training to apply the scientific method and outlook to the analysis and solution of engineering problems. He/she is able to assume personal responsibility for the development and application of engineering science and knowledge, notably in research, design, construction, manufacturing, superintending, managing, and in the education of the engineer. His/her work is predominantly intellectual and varied and not of a routine mental or physical character.
[..]
> His/her education will have been such as to make him/her capable of closely and continuously following progress in his/her branch of engineering science by consulting newly published works on a worldwide basis, assimilating such information, and applying it independently. He/she is thus placed in a position to make contributions to the development of engineering science or its applications. His/her education and training will have been such that he/she will have acquired a broad and general appreciation of the engineering sciences as well as thorough insight into the special features of his/her own branch.
If programmers can't be bothered, if their employers don't want that, either (if not even less), and yet you say times just magically change, so now people who don't fit that description get called engineers -- how do you call those who do fit that description, who still do those things? "Real engineers"? "Classic engineers?" I don't even care, but you gotta have something, you can't just pretend the real, practical, night and day difference between these things doesn't exist.
> There are several places where the use of engineer is often used improperly. They include:
> Software or data engineer: In most provinces*, unless someone is licensed with a provincial or territorial engineering regulator, they cannot use the title engineer, or any variation. This applies even if the title is assigned by the employer. Alternative titles can include:
> Data analyst, Data scientist, Software specialist, Software technician, Data technologist, Data manager, Data technical expert.
As for Missouri:
> [..] any person using the word "engineer", "engineers", or "engineering", alone or preceded by any word, or in combination with any words, may do so without being subject to disciplinary action by the board so long as such use is reflective of that person's profession or vocation and is clearly not indicating or implying that such person is holding himself or herself out as being a professional engineer or is willing or able to practice engineering as defined in this section
So I say the title "software engineer", in the slop hallucination sense it's too often used, where the sources either don't exist or say the opposite when you look stuff up, carries no information, other that a person is dishonest, or got fooled into repeating something dishonest. They may or may not be a programmer, they may be a man or a woman, but they're a charlatan or victim of charlatans for sure. And furthermore, the petty and stupid way people react to this fact being pointed out means they either have bad motives or Stockholm syndrome. I don't care which is which, since both are wrong.
>> NCEES will discontinue the Principles and Practice of Engineering (PE) Software Engineering exam after the April 2019 exam administration. Since the original offering in 2013, the exam has been administered five times, with a total population of 81 candidates.
>
> If you don't want the same rigor, if you can't handle the same rigor, you don't get the same respect. Because you don't deserve it.
It's an interesting opinion, but the reason nobody took the exam is that, unlike other PE disciplines, there are no jurisdictions with legal requirement to hold a PE license to write software.
For example, here for a building to be constructed, the plans need to be approved by a licensed PE if it's above a certain height and footprint. Note that you only need one PE to approve, not that all engineers working on the design have to hold PE licenses.
It is not a protected title in the U.S., China, or India, and yet you could say those are three countries most responsible for writing the software that the rest of the world uses. I would argue there is some connection.
It is easy to see how gatekeeping is particularly valuable for those with the means to distinguish themselves. But for the rest of us, people who want to work on or consume a product, does a field benefit more from having an open gate or closed?
The use of engineer as a title is endemic in some industries that don’t involve software. A mechanical superintendent at a drilling company I worked for like to refer to (drilling) mud “engineers” as mud salesmen because they were always trying to sell you more product.
If the title is backed by professional standards, standards by which someone can lose the title and be held legally liable, then I can see the gatekeeping as valuable. If it is used to restrict who can write software, then I would see it as detrimental.
That seems like the best way to parse the issue. To push back on my earlier point, some kind of standards enforcing mechanism doesn't have to be exclusionary as long as the path to earning the credential is open to everyone. It is probably more important now than it has ever been, since anyone can produce code now without understanding it.
At the time it was mostly hardware engineers who did this, along with people with math background (especially discreete math). Most of the cutting edge applications for computers were in numerical simulation for engineering, so most software engineers would have been electrical/electronics engineers.
There have been accredited Software Engineering programs in Canada for more than 20 years now.
You only need a P.E license if you are going to perform certain specific tasks. For example, in some jurisdiction, plans for a building above a certain height or floor size must be signed by a licensed P.E.
Not all engineering disciplines are covered by a P.E exam.
> I believe in some European countries you’re not allowed to call yourself any kind of “Engineer” without being a member of a professional body?
> So ironically if that was the case Margaret Hamilton would not have been allowed to coin the term
Had she been in Europe, she would not have been a part of the Apollo project, something so cutting edge it required new disciplines to be invented like Software Engineering, for the term to be coined in the first place.
... an audacious choice of words according to the Austrian association of (real) engineers that get all red-faced and jittery even thinking about it! These peasants, bah, they can't even...
> During the early days of Apollo, software was not taken as seriously as other engineering disciplines. Though in fact we had a complex system of systems, we weren’t getting credit for what was a legitimate field. It was out of desperation I came up with the term, to say: “Hey, we’re engineering too.” It was an ongoing joke for a long time. Then one day in a meeting, one of the most respected hardware gurus explained to everyone that he agreed with me. The process of building software should also be considered an engineering discipline, just like with hardware. It was a memorable moment.
The idea that it was believed you could build a reliable and deterministic system without proper engineering methods, today, would get a laugh out of most people in the industry. Interesting how the times have changed.
In Levy's "Hackers" there is a story about late night hacking on the TX-0 that fouled-up some weather simulation code an academic user of the computer was running. After hearing this oral history I believe Margaret was the programmer and the code was for Prof. Edward Lorenz.
A fascinating potential link between the two famous popular books on early computing and mathematics, 'Hackers', and 'Chaos' by James Gleick (two books that shaped my teenage years fwiw).
Is the link to Edward Lorenz just a guess based on the name and subject matter of the project given in the Hackers extract? Or do you have information from some other source that Margaret Hamilton wrote code for Lorenz?
Her story and her work is so inspiring. And I feel a bit sad reading about it...
When I started working on this field I dreamt of working on things like that. Not sending anything to the moon, but code that would achieve difficult stuff, challenging tasks, things I would be proud of.
Today I mostly do silly APIs, and with AI is worse and worse... I wonder if there are still jobs where you have to do novel stuff, new algorithms, more like a scientific approach to the code, instead of just deploy the same thing every other company has already done.
Yes, there are still jobs where you have to do novel and interesting things. It is hard to compare these to the work the Draper Lab did, but that was an exceptional moment in time that an exceptional group of people were able to do because they were at the right place at the right time.
Much of the interesting stuff I was able to do in the past was a result of being at the right place at the right time, but others were because I took some wild chances. I realize it can be a privilege to take wild chances and it isn’t an option for many.
When I read this site, or the media in general, AI exuberance and/or doom and gloom is everywhere. I also felt like the opportunities you are thinking about are vanishing. My current job is actually pretty exciting to me; building a new distributed audio software and hardware solution. The hardware element makes it very real; there are no endless cloud compute resources to help out. I guess what I am saying there still seems to be interesting and challenging tasks out there, but the green fields do seem to be vanishing.
Some people hate palantir, but that is their philosophy. That smart people should be helping to solve problems for the government rather than just working on selling more ads.
I would suggest to go work for Hardware startups and deep-tech. Think quantum computing, advanced robotics, fusion/nuclear, new space. Most of the algorithms ran there are constrained and new, and having a physical system with limited computation/speed makes for a interesting challenge, while still "achieving difficult stuff".
Hamilton invented the idea of error handling in software, and that error handling in the Apollo computer is why Buzz Aldrin was able to handle the error 1201/1202 in the minutes before the Eagle landed on the moon, instead of having to abort the mission.
Certainly that could be described as "error handling", but I would describe what saved the landing as priority scheduling combined with restart protection.
First thing I thought of, too. "Who? ...Wait, not the cool book chick!"
Tangential: the software documented in the books next to her were likely developed with a level of rigor that consumer software can only dream of, per the seminal article on similar matters: https://www.eng.auburn.edu/~kchang/comp6710/readings/They%20...
That is an excellent article and I’d like to read more. Are there other resources about the shuttle software development or projects with a similar level of software engineering?
The term she coined for it was "man-rated". Meaning that it had been tested rigorously enough to be trusted to keep humans alive.
During the Apollo 11 descent to the lunar surface, Buzz Aldarin pressed a button to display altitude and position during the landing sequence. As it turns out, this was the 8th task the Apollo 11 lander's guidance computer was asked to run, and it was only capable of running 7 tasks in real-time. Thanks to Hamilton and her team's priority scheduler, the guidance computer threw an alarm, killed the lowest priority task, and then resumed the execution of the other 7. If that hadn't been programmed to rescue itself like that, the computer would have crashed, and the Apollo 11 lander would not likely not have been the success that it was.
That does not seem like particularly notable example of foresight & robustness, given that it’s such a low number of maximum tasks, and such a fundamental & frequently used element of its operation.
Like it wouldn’t even be describable as a “rescue itself” if the response was simply “No. Too many jobs running. Please kill one to continue”
The Apollo Guidance Computer had 4KB of RAM and 16KB of ROM. Can you write a scheduler that would execute 8 programs related to landing on the moon in 4KB?
An asynchronous scheduler with task priority, interrupts, and real-time response. That goes on a spaceship with less than 70 Watts of power available for the computer. That weighed about 70 pounds. When there has never been that sort of a multi-tasking computer controlled avionics before.
At a time when the contemporary computer systems that used asynchronous, priority-scheduled multitasking operating systems were things like IBM OS/360 mainframes and DEC PDP-6/PDP-10 minicomputers.
It was like having an Apple II in mid 1960s with double the word size.
And with a ROM that had to be hand sewn. No flash updates, just "little old ladies" working in a former bra factory for a defense contractor (and huge tax payer expense if any mistakes needed to be debugged).
I mean, the implementation can be incomprehensibly impressive, but as an example of “man-rated” — being sufficiently robust — rejecting the request would be sufficient and I suspect this was an obvious place to have some kind of handling for. If there were no handler of any kind in this position, it’d be unforgivable in modern, far less robust software.
The kind of example for man-rated I was expecting would be dealing with really nutty edge cases (perhaps like correctly operating under arbitrary bitflips) or the LISP recovery system from Deep Space 1.
Handling an expected error condition under normal operation is not, in my mind, a good example of man-rated robustness. It might be a good example of other things.
You make it robust by making it simple. Simple to implement, simple to reason about, and simple to debug. They were not only programming an existing computer, they were also more or less defining the computer and this allows some hardware-software co-evolution. In cases like these, the hardware is frozen well before the software is close to ready, so you might need to do some workarounds.
> Handling an expected error condition under normal operation
Nothing in the Apollo program was "normal operation" by any standard. The thing is the alarm elegantly - and correctly - handled a situation that should never have happened in the operation, that only happened because the simulators the procedures were developed against did not accurately account for the workload of having both docking and landing radars on at the same time (IIRC, this was the issue).
This kind of robustness in the face of unexpected misuse is required if you want to qualify your hardware as "man-rated".
That’s the missing bit in the original post; if exactly 7 tasks was intended to ever be possible to run (as in, it logically doesn’t make sense for an 8th to exist), and they tossed in a scheduler anyways, then that’s man-rated thinking.
I had read the setup as the 8th task being user error (you have 20 things to do, I can only run 7 at a time, and it’s an user error to submit the 8th task while the 7 are running)
Every 1970s videogame has some sort of scheduler that moves actors, draws the screen, and play sound. Depending on the computer, it might be very easy (some could interrupt when the VDP got to a specific spot) or require you to count cycles. If, for instance, your game is for an Apple II and you have background music, you need to hit the speaker at the frequency of the currently playing note WHILE you move things, do physics, and redraw the screen. And you need to count cycles, because there is no reliable counter you could use (I remember how awesome it'd be if I could write 0 to a memory location and read it later to know how many clock cycled passed, or one I could read to get which scan line of the image the video hardware was outputting).
> “No. Too many jobs running. Please kill one to continue”
A thing no other computer had ever done before, so, they had to come up with the idea in the first place - a brand new idea. But it was not only that - IIRC, the alarm happened when the OS (a tiny sliver of software not many computers even had at the time) skipped a less important task so it could run the more important ones before their configured deadlines.
That story is easy to understand and thus catchy, but it is not true. The cause of those 1201 and 1202 alarms is a lot more complex, but well worth taking the time to understand if you are into the topic. Wikipedia offers a short description [1] to get you started.
At the dawning of the technological age that would change the word in some many ways. Like the quote infers, everything they did was something nobody had before.
You think of the immense advantages we have now whereas back then, they had none. Which makes her contributions as a scientist that much heavier and important.
Oh, at least since the industrial revolution, any given year has had the dawning of some technology or other. Most technological revolutions don't look like much when they're small. I don't think that most people at the time of the moon landing thought much of software. Maybe of computers the hardware, but not software.
> The pic here is often people's first intro to her
Why link to an article instead of an actual picture?
The page you linked failed to show any image without JS enabled (although my ad blocker might share some of the blame, there are a handful of trackers on that site) and the article doesn't link directly to it either. I'm guessing you mean the pic here: https://www.thetechoutlook.com/wp-content/uploads/2023/01/Ma...
250 comments
Margaret Hamilton Led the NASA Software Team That Landed Astronauts on the Moon - https://news.ycombinator.com/item?id=36720448 - July 2023 (32 comments)
Margaret Hamilton oral history (2017) - https://news.ycombinator.com/item?id=30668338 - March 2022 (7 comments)
An interview with Margaret Hamilton - https://news.ycombinator.com/item?id=20453737 - July 2019 (12 comments)
Grace Hopper and Margaret Hamilton Awarded Presidential Medal of Freedom - https://news.ycombinator.com/item?id=12991524 - Nov 2016 (70 comments)
Profile of Margaret Hamilton, programmer of the Apollo software - https://news.ycombinator.com/item?id=10379904 - Oct 2015 (58 comments)
Margaret Hamilton, lead software engineer, Project Apollo - https://news.ycombinator.com/item?id=8735912 - Dec 2014 (94 comments)
I feel from personal experiences as well as from many close people that often the corporate world really struggles on dealing with talent. And I don't mean autistic savants doing obscure things but relatively normal but very competent people doing actual well based comprehensive business helping work - but you have to do something in a very dumbed down way because the organization is built in a way to only accept small changes to the state of the art.
The thing I've taken away most from my multidecade career is that the hardest part is getting any group of people all marching in the same direction, of their own volition. Everyone's motivations always differ. And leadership that just tries to force one direction almost always fails to consider enough viewpoints. And the alternatives, a deliberate rhizomatic chaos, or cutthroat competition, can be entirely demoralizing.
I stayed at a major chain hotel this weekend and it was a fine stay, the staff was great, but... there were just numerous little tech problems. Like the USB chargers had bad connections so I plugged in my phone overnight and it didn't charge and the next morning I found I had to twist the connector to get it to work. And then when I tried to connect to the WiFi with a Steam Deck [1] it wanted my personal info to join their rewards program, but the complicated Javascript-based dropdown menu to pick a state barely worked and after a minute of screwing with it I was able to pick the wrong state but not pick my real state so I looked up a zip code in that state and entered it.
When I got home I got an email from "no-reply@thathotelchainfoundedbyparishiltonsgreatgrandfather.com" gushing about how they want me to have the perfect experience and how badly they want to hear from me. Like yeah, they want me to call their 800 number and give me a piece of my mind.
It bugs me because I spend my day fixing problems with Javascript apps and I know all about those overcomplicated dropdowns. I get the feeling that if a staff member screwed up they'd be held accountable but people act like technology problems are like the weather and there is nothing we can do about it.
[1] granted an unusual device BUT... I don't travel with a laptop anymore, don't need to connect my phone with WiFi in 5G country and may or may not connect my iPhone. They could have just used the <select> that comes with HTML and it would have "just worked" and today you have so many options to style those with CSS
https://news.mit.edu/2016/scene-at-mit-margaret-hamilton-apo...
Such a brilliant person, such an incredible body of work. And yet she indulges in a fun and silly photo shoot. It's a wonderful moment of humanity, and a reminder that the history of computer science is fundamentally about people.
Terminology can help elevate something that's often overlooked, but if every programmer gets called a "software engineer" there's no way to distinguish the special stuff.
Or just accept terms change as society and technology does.
This is so jumbled. You mean to say that before software, all work was physical? Nah, engineers spent and spend a lot of time at the drawing board, too. It's just that they're not sitting at the plastic table with a sticker of a dog with a toolbox on it.
If you don't follow rules and practices that are external to you and your employer, as you might in aviation or nuclear reactor software, there's not even a chance it's engineering. It can be "software engineering", sure, just the same way "software architect" is not an "architect".
https://ncees.org/wp-content/uploads/Software-Engineering-ex...
> NCEES will discontinue the Principles and Practice of Engineering (PE) Software Engineering exam after the April 2019 exam administration. Since the original offering in 2013, the exam has been administered five times, with a total population of 81 candidates.
If you don't want the same rigor, if you can't handle the same rigor, you don't get the same respect. Because you don't deserve it.
So it is a contradiction if you support gatekeeping but also only when its convinient to you.
That is the point I am making.
And if the "convenient to you" point is also supposed to apply to me, nope not at all. My programming would not qualify.
> A professional engineer is competent by virtue of his/her fundamental education and training to apply the scientific method and outlook to the analysis and solution of engineering problems. He/she is able to assume personal responsibility for the development and application of engineering science and knowledge, notably in research, design, construction, manufacturing, superintending, managing, and in the education of the engineer. His/her work is predominantly intellectual and varied and not of a routine mental or physical character.
[..]
> His/her education will have been such as to make him/her capable of closely and continuously following progress in his/her branch of engineering science by consulting newly published works on a worldwide basis, assimilating such information, and applying it independently. He/she is thus placed in a position to make contributions to the development of engineering science or its applications. His/her education and training will have been such that he/she will have acquired a broad and general appreciation of the engineering sciences as well as thorough insight into the special features of his/her own branch.
If programmers can't be bothered, if their employers don't want that, either (if not even less), and yet you say times just magically change, so now people who don't fit that description get called engineers -- how do you call those who do fit that description, who still do those things? "Real engineers"? "Classic engineers?" I don't even care, but you gotta have something, you can't just pretend the real, practical, night and day difference between these things doesn't exist.
That's a quote from the 1961 Conference of Engineering Societies of Western Europe and the United States of America, not a dictionary definition.
Canada uses a different definition. The state of Missouri uses another.
"One who is trained or professionally engaged in a branch of engineering. "
Gains you nothing.
> Canada uses a different definition. The state of Missouri uses another.
So? Are you lazily and deceptively suggesting that makes a difference? Or are you even imagining they are using dictionary definitions?
https://engineerscanada.ca/become-an-engineer/use-of-profess...
> Misuse of the title engineer
[..]
> Areas of concern
> There are several places where the use of engineer is often used improperly. They include:
> Software or data engineer: In most provinces*, unless someone is licensed with a provincial or territorial engineering regulator, they cannot use the title engineer, or any variation. This applies even if the title is assigned by the employer. Alternative titles can include:
> Data analyst, Data scientist, Software specialist, Software technician, Data technologist, Data manager, Data technical expert.
As for Missouri:
> [..] any person using the word "engineer", "engineers", or "engineering", alone or preceded by any word, or in combination with any words, may do so without being subject to disciplinary action by the board so long as such use is reflective of that person's profession or vocation and is clearly not indicating or implying that such person is holding himself or herself out as being a professional engineer or is willing or able to practice engineering as defined in this section
https://revisor.mo.gov/main/OneSection.aspx?section=327.181
So I say the title "software engineer", in the slop hallucination sense it's too often used, where the sources either don't exist or say the opposite when you look stuff up, carries no information, other that a person is dishonest, or got fooled into repeating something dishonest. They may or may not be a programmer, they may be a man or a woman, but they're a charlatan or victim of charlatans for sure. And furthermore, the petty and stupid way people react to this fact being pointed out means they either have bad motives or Stockholm syndrome. I don't care which is which, since both are wrong.
>
> If you don't want the same rigor, if you can't handle the same rigor, you don't get the same respect. Because you don't deserve it.
It's an interesting opinion, but the reason nobody took the exam is that, unlike other PE disciplines, there are no jurisdictions with legal requirement to hold a PE license to write software.
For example, here for a building to be constructed, the plans need to be approved by a licensed PE if it's above a certain height and footprint. Note that you only need one PE to approve, not that all engineers working on the design have to hold PE licenses.
I believe in some European countries you’re not allowed to call yourself any kind of “Engineer” without being a member of a professional body?
So ironically if that was the case Margaret Hamilton would not have been allowed to coin the term
It is easy to see how gatekeeping is particularly valuable for those with the means to distinguish themselves. But for the rest of us, people who want to work on or consume a product, does a field benefit more from having an open gate or closed?
There have been accredited Software Engineering programs in Canada for more than 20 years now.
https://engineerscanada.ca/accreditation/accredited-programs...
One of the requirements to become licensed (if one desires to) is to graduate from an accredited programs.
Several programs have been accredited for software engineering for 20+ years now.
https://engineerscanada.ca/accreditation/accredited-programs...
It's a master's degree but not all masters are engineer degrees. It's from the "Grandes Ecoles".
And yes, most software engineers in France have an engineer degree.
"Engineer" isn't in the US. P.E is.
You only need a P.E license if you are going to perform certain specific tasks. For example, in some jurisdiction, plans for a building above a certain height or floor size must be signed by a licensed P.E.
Not all engineering disciplines are covered by a P.E exam.
> I believe in some European countries you’re not allowed to call yourself any kind of “Engineer” without being a member of a professional body? > So ironically if that was the case Margaret Hamilton would not have been allowed to coin the term
Had she been in Europe, she would not have been a part of the Apollo project, something so cutting edge it required new disciplines to be invented like Software Engineering, for the term to be coined in the first place.
How would you feel about flying in a plane done with AI without the involvement of any engineers?
>
> During the early days of Apollo, software was not taken as seriously as other engineering disciplines. Though in fact we had a complex system of systems, we weren’t getting credit for what was a legitimate field. It was out of desperation I came up with the term, to say: “Hey, we’re engineering too.” It was an ongoing joke for a long time. Then one day in a meeting, one of the most respected hardware gurus explained to everyone that he agreed with me. The process of building software should also be considered an engineering discipline, just like with hardware. It was a memorable moment.
The idea that it was believed you could build a reliable and deterministic system without proper engineering methods, today, would get a laugh out of most people in the industry. Interesting how the times have changed.
In Levy's "Hackers" there is a story about late night hacking on the TX-0 that fouled-up some weather simulation code an academic user of the computer was running. After hearing this oral history I believe Margaret was the programmer and the code was for Prof. Edward Lorenz.
Is the link to Edward Lorenz just a guess based on the name and subject matter of the project given in the Hackers extract? Or do you have information from some other source that Margaret Hamilton wrote code for Lorenz?
Edit; It looks like I misremembered the machine. Seems like it was the PDP 1.
It's fascinating she was at the intersection of so many foundational points.
And it seems like she reflected on it quite light-heartedly.
When I started working on this field I dreamt of working on things like that. Not sending anything to the moon, but code that would achieve difficult stuff, challenging tasks, things I would be proud of.
Today I mostly do silly APIs, and with AI is worse and worse... I wonder if there are still jobs where you have to do novel stuff, new algorithms, more like a scientific approach to the code, instead of just deploy the same thing every other company has already done.
Much of the interesting stuff I was able to do in the past was a result of being at the right place at the right time, but others were because I took some wild chances. I realize it can be a privilege to take wild chances and it isn’t an option for many.
When I read this site, or the media in general, AI exuberance and/or doom and gloom is everywhere. I also felt like the opportunities you are thinking about are vanishing. My current job is actually pretty exciting to me; building a new distributed audio software and hardware solution. The hardware element makes it very real; there are no endless cloud compute resources to help out. I guess what I am saying there still seems to be interesting and challenging tasks out there, but the green fields do seem to be vanishing.
https://calebhearth.com/dont-get-distracted
But, I also wonder if that ethos was apart of early NASA before they had failures to learn from... Hmm...
The pic here is often people's first intro to her https://news.mit.edu/2016/scene-at-mit-margaret-hamilton-apo...
Tangential: the software documented in the books next to her were likely developed with a level of rigor that consumer software can only dream of, per the seminal article on similar matters: https://www.eng.auburn.edu/~kchang/comp6710/readings/They%20...
During the Apollo 11 descent to the lunar surface, Buzz Aldarin pressed a button to display altitude and position during the landing sequence. As it turns out, this was the 8th task the Apollo 11 lander's guidance computer was asked to run, and it was only capable of running 7 tasks in real-time. Thanks to Hamilton and her team's priority scheduler, the guidance computer threw an alarm, killed the lowest priority task, and then resumed the execution of the other 7. If that hadn't been programmed to rescue itself like that, the computer would have crashed, and the Apollo 11 lander would not likely not have been the success that it was.
Like it wouldn’t even be describable as a “rescue itself” if the response was simply “No. Too many jobs running. Please kill one to continue”
At a time when the contemporary computer systems that used asynchronous, priority-scheduled multitasking operating systems were things like IBM OS/360 mainframes and DEC PDP-6/PDP-10 minicomputers.
It was like having an Apple II in mid 1960s with double the word size.
You can look at the code here.
https://github.com/kororos/AvrX
Compiles down under 2k.
The thing is while actually doing that isn't crazy hard, they did that with hardly any existing examples to go by. And without modern tools.
The kind of example for man-rated I was expecting would be dealing with really nutty edge cases (perhaps like correctly operating under arbitrary bitflips) or the LISP recovery system from Deep Space 1.
Handling an expected error condition under normal operation is not, in my mind, a good example of man-rated robustness. It might be a good example of other things.
> Handling an expected error condition under normal operation
Nothing in the Apollo program was "normal operation" by any standard. The thing is the alarm elegantly - and correctly - handled a situation that should never have happened in the operation, that only happened because the simulators the procedures were developed against did not accurately account for the workload of having both docking and landing radars on at the same time (IIRC, this was the issue).
This kind of robustness in the face of unexpected misuse is required if you want to qualify your hardware as "man-rated".
I had read the setup as the 8th task being user error (you have 20 things to do, I can only run 7 at a time, and it’s an user error to submit the 8th task while the 7 are running)
Every 1970s videogame has some sort of scheduler that moves actors, draws the screen, and play sound. Depending on the computer, it might be very easy (some could interrupt when the VDP got to a specific spot) or require you to count cycles. If, for instance, your game is for an Apple II and you have background music, you need to hit the speaker at the frequency of the currently playing note WHILE you move things, do physics, and redraw the screen. And you need to count cycles, because there is no reliable counter you could use (I remember how awesome it'd be if I could write 0 to a memory location and read it later to know how many clock cycled passed, or one I could read to get which scan line of the image the video hardware was outputting).
A thing no other computer had ever done before, so, they had to come up with the idea in the first place - a brand new idea. But it was not only that - IIRC, the alarm happened when the OS (a tiny sliver of software not many computers even had at the time) skipped a less important task so it could run the more important ones before their configured deadlines.
[1] https://en.wikipedia.org/wiki/Apollo_Guidance_Computer#1201_...
You think of the immense advantages we have now whereas back then, they had none. Which makes her contributions as a scientist that much heavier and important.
Why link to an article instead of an actual picture?
The page you linked failed to show any image without JS enabled (although my ad blocker might share some of the blame, there are a handful of trackers on that site) and the article doesn't link directly to it either. I'm guessing you mean the pic here: https://www.thetechoutlook.com/wp-content/uploads/2023/01/Ma...
also, she should not be confused with the other Margaret Hamilton you might recall
https://facts.net/wp-content/uploads/2024/11/35-facts-about-...