מרגרט המילטון: המהנדסת שנתנה שם לתוכנה
שלוש דקות לפני הנחיתה על הירח, מחשב הניווט של אפולו 11 החל להפעיל התראות. באז אולדרין (Buzz Aldrin) הגיש בקשה שמינית למשימה בו-זמנית למכונה שתוכננה לטפל בשבע. הנחיתה הייתה עלולה להתבטל שם. היא לא בוטלה, כיוון שהאישה שניהלה את התוכנה הניחה שנים קודם לכן שמשהו כזה בדיוק יקרה, וכתבה את התוכנה כך שהמחשב יוותר על עבודה לא חיונית במקום לקרוס. "לולא המחשב זיהה את הבעיה הזו ונקט פעולת התאוששות", אמרה מאוחר יותר, "אני מפקפקת בכך שאפולו 11 הייתה משימת הנחיתה המוצלחת על הירח כפי שהייתה".
פאולי, אינדיאנה
מרגרט אליין היפילד (Margaret Elaine Heafield) נולדה ב-17 באוגוסט 1936 בפאולי, אינדיאנה, לקנת' ורות אסתר היפילד. המשפחה עברה למישיגן, שם סיימה את לימודיה בתיכון הנקוק ב-1954. אביה היה משורר וסבה מנהל בית ספר, וביתם כיוון אותה לפילוסופיה באותה נחישות שבה כיוון אותה למתמטיקה – היא למדה לבסוף את שניהם. היא למדה באוניברסיטת מישיגן ב-1955, ולאחר מכן עברה לקולג' ארלהאם (Earlham College), שם השלימה תואר ראשון במתמטיקה עם חטיבה בפילוסופיה ב-1958. היא ייחסה לפלורנס לונג, שעמדה בראש המחלקה למתמטיקה בארלהאם, את העידוד שקיבלה לעסוק במתמטיקה מופשטת ובקריירה אקדמית. היא נישאה לג'יימס קוקס המילטון ביוני 1958; בתם לורן נולדה בשנה שלאחר מכן.
מזג אוויר, כאוס, יוונית ולטינית
עבודתה הראשונה בתחום המחשוב הייתה עם אדוארד נורטון לורנץ במחלקה למטאורולוגיה ב-MIT החל מאמצע 1959, שם כתבה תוכנה לחיזוי מזג אוויר עבור מכונות LGP-30 ו-PDP-1. לורנץ הודה מאוחר יותר בתרומתה לעבודה שהפכה לתורת הכאוס. בין 1961 ל-1963, במעבדות לינקולן של MIT, היא תכנתה את האב-טיפוס AN/FSQ-7 עבור מערכת ההגנה האווירית של סביבה קרקעית חצי-אוטומטית (SAGE), שם הוטלה עליה תוכנית קשה במיוחד שאת ההערות שלה כתבו ביוונית ובלטינית – והיא הפכה לאדם הראשון שהצליח להפעיל אותה. שתי המשרות חלקו מאפיין שהגדיר אותה: נתנו לה מערכות שאף אחד אחר לא הצליח להפעיל כראוי.
מעבדת המכשור
בשנת 1965 היא הצטרפה למעבדת המכשור של MIT, שלימים הפכה למעבדת צ'ארלס סטארק דרייפר, כמתכנתת הראשונה – והמתכנתת האישה הראשונה – שנשכרה עבור פרויקט אפולו. היא עלתה לדרגת מנהלת חטיבת הנדסת התוכנה, והייתה אחראית על תוכנת הטיסה המוטסת עבור מחשב הניווט של אפולו הן בתא הפיקוד והן ברכב הנחיתה הירחי, ובהמשך עבור מערכות סקיילאב. זה היה קוד ללא הזדמנות שנייה: ללא תיקונים, ללא אתחולים במסלול ירידה, וללא דרך להגיע למכונה ברגע שעזבה את כן השיגור.
1202
הפתרון של המילטון היה להתייחס לשגיאה לא כאל חריגה, אלא כאל הנחת יסוד בתכנון. התוכנה שלה כללה שגרות לזיהוי שגיאות והתאוששות, וחשוב מכך, תוכנית "תצוגת עדיפויות": כאשר המחשב היה עמוס מדי, הוא היה זונח משימות בעלות עדיפות נמוכה ושומר על הפונקציות הנדרשות לנחיתה. היא גם חשבה על החלק האנושי בלולאה, ותכננה את הנוהל כך שאסטרונאוטים שיראו תצוגת עדיפויות יספרו עד חמש, מה שיאפשר את השיהוי בעיבוד התוכנה.
Twenty questions, eight minutes on the clock, and a percentile measured against everyone who has taken it. No sign-up.
Take the IQ test →ב-20 ביולי 1969 המנגנון עבד בדיוק כפי שתוכנן. ההתראות הופעלו, המחשב השליך את מה שיכול היה להרשות לעצמו לאבד, ומהנדס המחשבים של בקרת המשימה בנאס"א, ג'ק גארמן, זיהה את הקודים וקרא "Go, go!". האיגל (Eagle) נחתה.
מתן שם לדיסציפלינה
המילטון נחשבת למי שטבעה את המונח "הנדסת תוכנה" במהלך שנות אפולו המוקדמות. מטרתה הייתה שיפוטית לא פחות מאשר תיאורית. "התחלתי להשתמש במונח 'הנדסת תוכנה' כדי להבדיל אותה מחומרה ומסוגים אחרים של הנדסה", הסבירה, "ובכל זאת להתייחס לכל סוג של הנדסה כחלק מתהליך הנדסת המערכות הכולל". אנשי החומרה לא התרשמו. "זו הייתה בדיחה מתמשכת במשך זמן רב", נזכרה. "הם אהבו לצחוק עליי בגלל הרעיונות הרדיקליים שלי". הבדיחה היא כעת השם של תעשייה המעסיקה עשרות מיליוני אנשים.
פיתוח לפני העובדות
היא הקדישה את שארית הקריירה שלה להמשך המשמעויות של גישתה. ב-1976 היא ייסדה יחד עם סיידין זלדין את חברת Higher Order Software כדי למסד את שיטות מניעת השגיאות שאפולו לימדה אותה; המוצר שלהן USE.IT תמך בתוכניות ממשלתיות, כולל מעבורת החלל ופרויקטי ה-ICAM של חיל האוויר. במרץ 1986 היא ייסדה את Hamilton Technologies בקיימברידג', מסצ'וסטס, שם פיתחה את שפת המערכות האוניברסלית (Universal Systems Language) ואת חבילת הכלים 001 סביב פרדיגמה שכינתה "פיתוח לפני העובדות" – הטיעון ששגיאות צריכות להפוך לבלתי אפשריות ברגע התכנון במקום לצוד אותן במהלך הבדיקות.
ההכרה הגיעה לאט ואז בבת אחת: פרס אוגוסטה אדה לאבלייס בשנת 1986; פרס נאס"א לחוק החלל יוצא דופן ב-2003, בסך 37,200 דולר – הפרס האישי הגדול ביותר בתולדות הסוכנות; מדליית החירות הנשיאותית מברק אובמה ב-2016; פרס עמית של מוזיאון היסטוריית המחשב ב-2017; פרס וושינגטון ב-2019; כניסה להיכל התהילה הלאומי לתעופה ב-2022.
מדוע מרגרט מכונה גאונה
הכישרון שלה הוא היפוך ספציפי של האופן שבו התחום שלה חשב. בשנות ה-60 תוכנה הובנה כהוראות שאמורות לעבוד, כאשר שגיאות נתפסו כתקריות מצערות שיש למצוא מאוחר יותר. המילטון התייחסה לכשל כאובייקט התכנון העיקרי: מה צריכה מערכת לעשות כאשר ההנחות שעליהן היא מבוססת מפסיקות להתקיים? תצוגת העדיפויות היא העדות הברורה ביותר למוח הזה. היא לא מונעת עומס יתר, שלא ניתן למנוע; היא מחליטה מראש, בתנאים שאף אחד עוד לא חווה, על מה מכונה צריכה להיות מוכנה לוותר כדי להמשיך לעשות את הדבר האחד שחשוב. זהו מהלך פילוסופי לא פחות מטכני. הטענה השנייה שלה היא סמכות מושגית: מתן השם "הנדסת תוכנה" תוך כדי לעג ארגן מחדש את האופן שבו מקצוע שלם תפס את עצמו.
ההסמכות הכנות הן אלו. רשימת התארים שלה, נרחבת ככל שתהיה, אינה מציגה את המילה "גאון" באופן רשמי; היא מציגה מדליות על השפעה. ההצלה של אפולו 11 הייתה מערכת, לא מעשה יחיד – התוכנה שלה הרימה את ההתראה, אבל ג'ק גארמן היה צריך לזהות את הקודים, בקר טיסה היה צריך לתת אישור להמשיך, והתכנון התבסס על אסטרונאוטים שפועלים לפי נוהל אנושי. והתעשייה אימצה את המילה שלה באופן מלא יותר מאשר את השיטה שלה: "הנדסת תוכנה" היא אוניברסלית, בעוד ש"פיתוח לפני העובדות" נותר נחלת מומחים. הגאונות שלה ממוקמת בצורה הטובה ביותר בניסוח הבעיה ששרד את כל הכלים שהיא בנתה כדי לפתור אותה.
מורשת
הקוד שהיא ניהלה הוא הסיבה שהביטוי "התראת 1202" הוא ניצחון ולא הספד. המורשת הגדולה יותר היא ההנחה – שכעת היא כה סטנדרטית עד שהיא בלתי נראית – שתוכנה היא משהו מהונדס, הכפוף לסובלנות, ושממנו מצפים להיכשל בחן. היא סיפקה גם את השם וגם את ההוכחה הגדולה הראשונה.