โค้ดของเธอนำพาเราไปสู่ดวงจันทร์

20 กรกฎาคม 1969 ยานอะพอลโล 11 ลงจอดบนดวงจันทร์ได้สำเร็จ เป็นครั้งแรกของมนุษยชาติที่ได้ย่างก้าวบนดินแดนอื่นที่ไม่ใช่โลก เบื้องหลังความสำเร็จนั้นประกอบไปด้วยการทำงานร่วมกันผู้คนนับร้อย และมาร์กาเร็ต แฮมิลตัน (Margaret Hamilton) เป็นหนึ่งในนั้น โค้ดของเธอนำพาเราไปสู่ดวงจันทร์

ปี 1958 มาร์กาเร็ต แฮมิลตันจบปริญญาตรีเอกคณิตศาสตร์จาก  Earlham College หลังจากนั้นต้นปี 1959  แฮมิลตันทำงานพัฒนาซอฟต์แวร์พยากรณ์อากาศสำหรับคอมพิวเตอร์ LGP-30 และ PDP-1 ให้กับศาสตราจารย์เอ็ดเวิร์ด เอ็น. โลเรนซ์ ( Edward N. Lorenz – เป็นผู้ริเริ่มทฤษฎีความอลวน Chaos Theory ) ที่ MIT ในช่วงนั้นเธอเรียนรู้ภาษาสำหรับเขียนโปรแกรมด้วยตัวเอง ( ยุคนั้นยังไม่มีสาขาวิทยาการคอมพิวเตอร์หรือวิศกรรมซอฟต์แวร์ โปรแกรมเมอร์ยุคนั้นเรียนรู้การเขียนโปรแกรมจากการปฏิบัติด้วยตัวเอง )

ปี 1961 แฮมิลตันเริ่มทำงานให้กับ SAGE Project (SAGE – Semi-Automatic Ground Environment) ที่ Lincoln Lab เขียนซอฟต์แวร์สำหรับเครื่อง XD-1 เป็นคอมพิวเตอร์ AN/FSQ-7 ตัวแรก ใช้สำหรับค้นหาอากาศยานที่ไม่เป็นมิตร

ช่วงเวลานั้นทั้งก่อนและหลังที่แฮมิลตันเข้าร่วมโครงการอะพอลโล สัดส่วนผู้ชายในโครงการมีจำนวนมากกว่าผู้หญิงมาก แม้แต่ทีมที่เธอรับผิดชอบอยู่ส่วนใหญ่เป็นผู้ชาย แต่เหนือสิ่งอื่นใดพวกเขาก็เคียงบ่าเคียงไหล่แก้ปัญหาที่ท้าทายและร่วมกันเผชิญหน้ากับเดดไลน์สุดวิกฤต พวกเขาจดจ่อแค่ว่าใครทำงานอะไร ฮาร์ดแวร์หรือซอฟต์แวร์ ชำนาญเรื่องอะไร (แต่ก็มีปัญหาเรื่องระเบียบบางอย่าง ซึ่งแฮมิลตันเคยให้สัมภาษณ์ยกตัวอย่างใน TIME ว่า มีผู้หญิงในทีมของเธอไม่สามารถกู้เงินจากสหกรณ์ของ MIT ได้เพราะต้องมีการเซ็นยินยอมจากสามีก่อน ขณะที่การกู้เงินของผู้ชายคู่สมรสกลับไม่ต้องเซ็น แฮมิลตันร้องเรียนกฎนี้และกฎก็ถูกเปลี่ยน เธอมองว่าไม่ใช่การต่อสู้ระหว่างชายกับหญิง แต่เป็นเรื่องของความยุติธรรม)

By NASA [Public domain], via Wikimedia Commons

ปี 1963 ในตอนแรกแฮมิลตันวางแผนจะเข้าศึกษาต่อระดับบัณฑิตศึกษาที่  Brandeis University ในสาขา Abstract Math แต่เมื่อเธอได้ข่าวว่าที่ MIT กำลังรับคนเพื่อที่จะพัฒนาซอฟต์แวร์ให้ NASA สำหรับภารกิจส่งมนุษย์ไปดวงจันทร์ เธอรีบโทรไป MIT เพื่อคว้าโอกาสสำคัญนี้ ภายในหนึ่งชั่วโมงเธอก็ได้รับการตอบรับให้เข้าสัมภาษณ์กับผู้จัดการโครงการสองคนที่ MIT ในวันสัมภาษณ์ผู้จัดการโครงการทั้งสองต่างต้องการเธอไปร่วมงานทั้งคู่ เธอเลยใช้วิธีให้ทั้งสองโยนหัวก้อยใครคนไหนชนะเธอก็จะร่วมงานกับทีมนั้น

แฮมิลตันเข้าทำงานใน Charles Stark Draper Laboratory ที่ MIT ไม่นานเธอก็ได้ขึ้นเป็นหัวหน้านักพัฒนาซอฟต์แวร์ให้กับอะพอลโลและสถานีอวกาศสกายแล็บ งานของเธอต้องใช้เวลาทุ่มเทมาก ดังนั้นเพื่อให้เธอและลูกสาวได้อยู่ด้วยกันตลอด เธอจึงพาลูกสาวมาที่แล็บทุกเย็นและวันหยุดสุดสัปดาห์ด้วย

ในระหว่างที่ทำโครงการอะพอลโลอยู่นั่นเองที่แฮมิลตันเริ่มใช้คำว่าวิศวกรรมซอฟต์แวร์ (software engineer) ตอนนั้นด้านซอฟต์แวร์ไม่ได้รับความสำคัญในงานนักและไม่ถูกมองว่าเป็นวิทยาศาสตร์  (เดวิด มินเดล ศ.ด้านการบินและอวกาศเขียนในหนังสือ Digital Apollo ว่าตอนเริ่มโครงการงานซอฟต์แวร์ไม่ได้ถูกใส่ในตารางงานและไม่มีงบให้ด้วยซ้ำ — แต่ก็ใส่มาในตอนหลัง) ในเวลาต่อมาคำว่าวิศกรรมซอฟต์แวร์ก็ได้รับการยอมรับ

เดือนกรกฎาคม 1969 อะพอลโล 11 ถูกส่งขึ้นอวกาศ แต่แล้วในวันที่ 20 กรกฎาคม สามนาทีก่อนที่ยานอีเกิลจะลงจอดบนดวงจันทร์ นักบินอวกาศบัซซ์ อัลดริน กำลังปฏิบัติตาม checklist เปิด rendezvous radar คอมพิวเตอร์ก็เกิด overload เพราะทำ tasks อื่นที่ไม่จำเป็นมากเกินไป ทั้งที่จริงๆแล้วตอนนั้นสิ่งที่ต้องทำมากที่สุดคือนำยานลงจอด คอมพิวเตอร์ในยุคนั้นมีหน่วยความจำน้อยกว่าปัจจุบันมาก แต่แฮมิลตันได้คาดการณ์ไว้แล้ว โค้ดที่เธอเขียนเมื่อเกิดปัญหาดังนี้ระบบจะทำการแทนที่ฟังก์ชันที่รันอยู่ทั้งหมดและจัดลำดับความสำคัญให้กับการลงจอดเป็นลำดับแรก และแล้วยานอีเกิลก็ได้ลงจอดอย่างราบรื่น

 

By Draper Laboratory (Draper Laboratory) [Public domain], via Wikimedia Commons

ในภาพข้างบนเป็นภาพที่ถ่ายปี 1969 แฮมิลตันยืนอยู่ข้างตั้งเอกสารที่สูงเกือบท่วมหัวของเธอ ซึ่งกองเอกสารนี้ก็คือซอฟต์แวร์ที่เธอและทีมพัฒนาสำหรับควบคุมยานอวกาศมีซอฟต์แวร์ส่วนยานควบคุม (CM – Command Module), ยานลงจอด (LM – Lunar Module) และซอฟต์แวร์ที่เชื่อมการทำงานระหว่างยานควบคุมและยานลงจอด

แฮมิลตันทิ้งท้ายไว้ในบทสัมภาษณ์กับ Fututism ว่า ไม่ต้องกลัวที่จะพูดว่าฉันไม่รู้หรือฉันไม่เข้าใจ หรือกลัวที่จะถามคำถามโง่ๆ ไม่มีคำถามไหนที่เป็นคำถามโง่ๆ อย่ากลัวที่จะโดดเดี่ยวหรือแตกต่าง อย่ากลัวว่าจะผิดพลาด แต่ก็อย่ากลัวที่จะยอมรับความผิดพลาด ต้องกล้าเผชิญความล้มเหลวถึงจะบรรลุเป้าหมาย

มาร์กาเร็ต แฮมิลตันได้รับเหรียญอิสรภาพ (Presidential Medal of Freedom) เมื่อปี 2016 จากประธานาธิบดีบารัค โอบามา สำหรับการเป็นหัวหน้าพัฒนาซอฟต์แวร์ควบคุมยานอวกาศ ให้กับโครงการอะพอลโลของ NASA และได้รับเครดิตว่าเป็นผู้บัญญัติคำว่า Software Engineering ขึ้นมา คุณสามารถเข้าไปดูซอร์ชโค้ดในที่ใช้ใน Apollo 11 ที่เขียนโดยแฮมิลตันและทีมงานได้ใน Github ซึ่งเปิดเป็น public domain เมื่อปีที่แล้ว หรือถ้าอยากจำลองระบบ AGC ขึ้นมาเล่นๆ ลองเข้าไปศึกษาวิธีการใน Virtual AGC ซึ่งสามารถจำลองใน Raspbian บน Raspberry Pi ได้ด้วยนะ (แม้บทความนี้จะดูนอกเรื่อง แต่แล้วในที่สุดเราก็ยังวกเข้ามาที่ Raspberry Pi ได้อีก)

References

Margaret Hamilton: The Untold Story of the Woman Who Took Us to the Moon

Margaret Hamilton, the Engineer Who Took the Apollo to the Moon

Her Code Got Humans on the Moon—And Invented Software Itself