5. 소프트웨어 공학의 시작

1960년대까지 소프트웨어는 하드웨어의 일부분에 불과했다. 컴퓨터와 주변 기기들은 방 하나를 가득 채울 만큼 컸고 운영하는데도 많은 비용과 인력이 필요했던 반면, 소프트웨어 규모는 그 만큼 크지 못했고 독립된 영역으로 자리를 잡지 못했다.


컴퓨터를 처음 만든 사람이 수학자이다 보니, 초기에는 수학을 전공하는 학생들이 프로그래밍을 시작하는 경우가 많았다.

기존에 손으로 하던 수학 계산, 각종 실험을 컴퓨터로 할 수 있었기 때문에 자연과학이나 공학을 전공하는 사람들도 프로그래밍을 배웠다.이중에는 그만 프로그래밍에 빠져 그대로 본업을 버리고 프로그래머 전업한 경우도 많다.

1960년대 아폴로11 프로젝트에 참여하여 달착륙선 소프트웨어를 개발한 마거릿 해밀턴의 이야기를 들어보면 그 당시 소프트웨어 개발 환경과 인식을 잘 알 수 있다. 대학에서 수학을 공부한 그녀는 남편의 박사 학위 공부를 지원하기 위해 MIT에서 프로그래머로 일을 시작했다. 당시 그녀는 제대로된 프로그래밍 교육도 받지 못하고 바로 날씨를 예측하는 프로그램 개발에 참여했다.


그 후, 시스템 프로그래밍 전문가가 되어 아폴로11 프로젝트에 참가하게 된다. 당시 아폴로11 프로젝트에는 SW개발을 위한 예산과 일정이 포함되어 있지 않았고, 요구 사항에도 소프트웨어 대한 언급은 없었다[1]. 하지만,  소프트웨어는 우주선 비행과 달착륙선을 제어할 만큼 중요한 역할을 맡았고, 마거릿은 좀 더 신뢰성 높은 소프트웨어를 개발하기 위해 딸을 데리고 주말에 출근하기도 했다.


결국, 1968년에는 무려 400여명의 사람이 달착륙선 프로그램 개발에 참여하였고, 아폴로 11 프로젝트는 성공적으로 마무리되었다.

특히, 그녀는 아폴로 프로젝트 초기에 소프트웨어가 하드웨어 처럼 독립된 영역으로 인정 받을 수 있도록 소프트웨어 공학(software engineering)이라는 용어를 처음 사용했다. 또한, MIT대학에 컴퓨터 프로그래밍 관련 교과목이 생겨날 수 있도록 도움을 주기도 했다[4].

흥미로운 사실은 1960년대까지 SW개발자 상당수가 여성이였는데, 지금의 현실과 비교하면 상당한 차이가 있다. 그 이유는 당시에는 SW개발이 HW개발 보다 덜 중요한 일로 취급되어 여성들이 주로 맡게 되었고 급여 수준도 낮았다[2]. 하지만, 나중에 SW개발이 더 어렵다는 것을 깨닫게 된다. 인터넷에서 흑백 사진의 초기 컴퓨터 사진을 찾아보면 유독 여성이 컴퓨터 앞에 있는 모습을 많이 볼 수 있다.

img_0698

에니악에서 실제 프로그램 배전판을 만들던 분들은 모두 여성이였다[3].


최초로 컴파일러를 만들고 처음으로 디버깅(?)을  한 그레이스 호퍼도 여성이며, 수학 박사이기도 하다. 1947년 호퍼는 마크2에서 프로그래밍 작업을 하고 있었는데, 그 날 따라 천공카드 입력이 잘 안되었다.

결국, 릴레이 안에 죽어있는 나방 때문에 컴퓨터가 제대로 동작하지 않는다는 사실을 알게 된다.

그리고 그 나방을 작업 노트에 붙이면서 최초의 컴퓨터 버그라고 메모를 남긴다.

img_0696

이 처럼 컴퓨터가 사용되던 초창기 시대에는 여성들이 소프트웨어 개발 분야에 선구자적인 역할을 했고, 소프트웨어 공학이 탄생할 수 기반이 마련되었다.

참고

[1] https://www.wired.com/2015/10/margaret-hamilton-nasa-apollo/
[2] http://www.smithsonianmag.com/smart-news/computer-programming-used-to-be-womens-work-718061/
[3] https://iq.intel.com/how-female-eniac-programmers-pioneered-the-software-industry/
[4] https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)