💻기원과 변천사

소프트웨어 엔지니어 · 현대 사회를 움직이는 코드를 작성하고 테스트하고 유지보수하는 직업이며, AI가 자기 일상 업무를 자동화하는 모습을 가장 먼저 지켜보는 직업 중 하나다.

소프트웨어 엔지니어링은 오래된 아이디어를 입은 유난히 젊은 직업이다. 1840년대부터 사람들은 기계가 따를 단계별 절차를 설계해 왔지만, 20세기가 한참 지나서야 누군가 '소프트웨어 엔지니어'라는 이름으로 급여를 받았고, 그 직함 자체도 1968년에야 반쯤 도발적으로 제안되었다.

그 역사는 자신의 알고리즘이 실행되는 것을 결코 보지 못한 백작 부인, 방 하나를 채운 컴퓨터를 손으로 배선한 여성들, 기계가 영어를 읽기를 바랐던 해군 장교, 그리고 위기라고 선언하며 이 분야에 이름을 붙여준 바이에른 알프스의 한 회의를 거쳐 흘러온다.

시작된 곳

1843년영국 런던

에이다 러브레이스는 찰스 배비지가 만들지 못한 해석기관에 관한 이탈리아 엔지니어의 논문을 번역하면서 원문보다 긴 주석을 덧붙인다. 마지막 주석인 노트 G는 이 기계가 어떻게 일련의 수를 계산할지 단계별로 서술한다—한 세기 뒤에나 존재할 컴퓨터를 위해 쓰인 알고리즘이며, 대다수 역사가가 프로그래밍의 개념적 탄생점으로 꼽는 순간이다. 즉 기계의 명령이 기계 자체와 분리된 별개의 대상으로 설계되고 기록되고 검증될 수 있다는 발상이다.

연표

1843에이다 러브레이스가 최초의 알고리즘을 발표하다

찰스 배비지가 만들지 못한 해석기관에 관한 이탈리아 논문을 번역하면서 러브레이스는 기계가 베르누이 수를 어떻게 계산할지 단계별로 설명하는 주석을 덧붙인다—흔히 최초로 발표된 컴퓨터 프로그램으로 인용된다.

1890홀러리스의 천공카드가 인구조사를 집계하다

허먼 홀러리스의 천공카드 집계 기계가 약 1년 만에 미국 인구조사를 처리한다. 이전 조사는 수작업으로 거의 8년이 걸렸다. 그의 회사는 훗날 IBM의 일부가 된다.

1943–1945여섯 명의 여성이 에니악을 프로그래밍하다

케이 맥널티, 진 제닝스, 베티 스나이더, 마를린 웨스코프, 프랜 빌라스, 루스 리히터먼은 매뉴얼도 프로그래밍 언어도 없이 스위치를 직접 조작하고 케이블을 연결해 펜실베이니아 대학의 방 하나짜리 에니악을 프로그래밍한다.

1952그레이스 호퍼가 최초의 컴파일러를 완성하다

레밍턴 랜드의 A-0 시스템에서 호퍼는 기호 수학 표기를 자동으로 기계어로 번역해, 서브루틴 주소를 손으로 베껴 쓰던 오류투성이 관행을 대체한다—이후 모든 컴파일러의 직계 조상이다.

1957포트란이 IBM 704용으로 출시되다

존 배커스가 이끈 IBM 팀이 약 2년의 작업 끝에 포트란을 내놓는다. 2년 안에 미국에서 실행되는 기계 코드의 절반 이상이 포트란으로 작성되었다고 전해진다.

1968NATO 회의가 '소프트웨어 엔지니어링'이라는 이름을 붙이다

서독 가르미슈에서 열린 회의에서 참석자들은 대형 프로그램을 만드는 데 다리나 건물을 짓는 것과 같은 규율이 필요하다고 주장하려고 의도적으로 '소프트웨어 엔지니어링'이라는 용어를 빌려 쓰며, 이 분야의 만성적인 초과 비용을 '소프트웨어 위기'로 규정한다.

1969–1973벨 연구소에서 유닉스와 C가 형태를 갖추다

켄 톰프슨과 데니스 리치는 남는 PDP-7에서 유닉스 운영체제를 만든 뒤, 1973년 리치의 새 언어 C로 다시 작성해 여러 종류의 컴퓨터에서 돌아가게 한다.

1981IBM PC가 모든 책상에 소프트웨어를 가져오다

IBM의 PC가 마이크로소프트의 PC-DOS와 함께 출시되며 소프트웨어를 거의 하룻밤 사이에 대중 소비재로 바꾸고, 6년 전 빌 게이츠와 폴 앨런이 알테어 베이직으로 세운 젊은 회사를 굳건히 자리 잡게 한다.

1991리눅스와 월드와이드웹이 몇 달 간격으로 등장하다

리누스 토르발스는 8월에 취미 삼아 만든 커널을 유즈넷에 올리며 '그냥 취미일 뿐, 리눅스처럼 크고 전문적이지 않을 것'이라고 말한다. 같은 달 팀 버너스리의 월드와이드웹도 공개되며, 열려 있고 자유롭게 공유되는 소프트웨어가 인터넷의 기본값이 된다.

2021–2023AI가 코드 에디터 안으로 들어오다

깃허브 코파일럿(2021)과 챗GPT(2022)가 대규모 언어 모델 기반 코드 생성을 일상 업무로 가져온다. 몇 년 안에 깃허브는 자사 도구 사용자가 유지하는 코드 줄 중 AI 제안을 수락하는 비중이 크고 계속 늘고 있다고 밝힌다.

시대별 흐름

Operator console of an IBM System/360 mainframe
ArnoldReinhold · CC BY-SA 3.0 · Wikimedia Commons
1950년대–1960년대

메인프레임과 배치 프로그래밍

초창기 프로그램은 천공카드 뭉치로 제출되어 밤새 배치로 실행되는 경우가 많아, 오타 하나가 프로그래머에게 다음 실행까지 하루를 통째로 날리게 만들 수 있었다. 수학자들, 그리고 많은 수의 여성들이 손 계산에서 곧바로 이 새로운 '프로그래밍' 작업으로 옮겨왔는데, 당시 이 일이 명예로운 일이 아니라 사무적이고 세밀한 작업으로 여겨졌기 때문이다. 포트란(1957)과 코볼(1959)이 이 시기에 자리를 잡았고, 이 하드웨어 위에서 신뢰할 수 있는 대형 시스템을 만드는 순전한 어려움이 다음 시대가 이름 붙이고 해결하려 할 '소프트웨어 위기'를 예고했다.

A PDP-11 minicomputer, the machine most associated with early Unix
Stefan_Kögl · CC BY-SA 3.0 · Wikimedia Commons
1969–1983

유닉스, 구조적 프로그래밍, 그리고 이름을 얻은 규율

1968년 NATO 회의가 이 분야의 만성적인 예산·신뢰성 문제에 이름을 붙인 뒤, 1970년대는 진단과 도구 모두를 내놓았다. 구조적 프로그래밍, 체계적인 테스트, 그리고 벨 연구소에서 만들어져 여러 기계에서 돌아가도록 새 언어 C로 다시 작성된 운영체제 유닉스가 그것이다. PDP-11 같은 미니컴퓨터는 실질적인 컴퓨팅 파워를 몇몇 메인프레임 룸 너머로 확산시켰고, '소프트웨어 엔지니어링'은 수학이나 전기공학의 하위 분야가 아니라 그 자체로 대학 학위로 등장하기 시작했다.

An original IBM Personal Computer from 1981
Own work (based on graphics by International Business Machines Corporation) · Public domain · Wikimedia Commons
1975–1990

개인용 컴퓨터와 상자 속의 소프트웨어

알테어 8800 키트(1975)에 이어 애플 II와 IBM PC(1981)는 소프트웨어를 기관이 운영하는 무언가에서 가정이 사서 쓰는 무언가로 바꾸었다. 워드프로세서, 스프레드시트, 게임을 중심으로 대중 소비자·소기업 소프트웨어 산업이 생겨나, 지원 계약 대신 반품 정책이 딸린 비닐 포장 상자로 팔렸다. 대형 프로젝트에서는 폭포수식의 방대한 문서화 개발이 지배적이었지만, 침실 코더나 대학 해커 같은 산업의 주변부는 오늘날의 더 빠르고 비공식적인 방식에 가깝게 일했다.

Tux, the penguin mascot of the open-source Linux operating system
Larry Ewing , Simon Budig , Garrett LeSage · CC0 · Wikimedia Commons
1991–2005

웹, 오픈소스, 그리고 닷컴 사이클

월드와이드웹과 리눅스 커널은 1991년 몇 달 간격으로 함께 공개되었고, 서로 만난 적 없는 자원봉사자들이 공개적으로 만든 소프트웨어가 기업이 출시하는 어떤 것과도 경쟁할 수 있음을 함께 증명했다. 웹 브라우저는 거의 하룻밤 사이에 완전히 새로운 일자리 시장을 만들어냈다. 그 시장은 이후 호황을 누리다가 2000~2001년 극적으로 붕괴해 한 세대의 스타트업을 쓸어버렸지만 아마존, 구글, 그리고 다음 시대가 그 위에 쌓아올릴 인프라를 남겼다. 애자일 선언문(2001)은 무거운 문서 중심 계획에 반발해 더 짧고 반복적인 주기를 선호하는 흐름을 공식화했다.

Conceptual diagram of cloud computing infrastructure
Sam Johnston · CC BY-SA 3.0 · Wikimedia Commons
2006–현재

클라우드, 데브옵스, AI 보조 엔지니어링

아마존 웹 서비스(2006)에서 시간 단위로 서버를 빌리는 방식은 소프트웨어 운영의 가장 큰 고정비용 중 하나를 없앴고, 앱 스토어는 거의 동시에 엔지니어들에게 모바일 중심의 두 번째 배포 채널을 안겨주었다. 깃과 깃허브(2005~2008)는 낯선 사람들 사이에서도 같은 코드베이스에 대한 분산 협업을 흔한 일로 만들었고, 자동화된 배포 파이프라인은 변경을 완료하고 사용자 앞에서 실행되기까지의 간격을 몇 달에서 몇 분으로 줄였다. 2020년대 초에 이르러 공개 코드로 훈련된 AI 코딩 어시스턴트는 신기한 물건에서 대다수 전문 엔지니어의 일상 도구로 넘어갔다—역사상 새로운 도구가 이 직업에 가장 빠르게 퍼진 사례다.

이 직업이 대체한 직업들

더 이상 존재하지 않는 인접 직업들 — 흡수되거나, 자동화되거나, 규제로 사라졌다.

인간 컴퓨터

1750년대–1960년대

전자 기계가 있기 훨씬 전, '컴퓨터'는 손으로 또는 기계식 계산기로 수학 계산을 수행하는 사람—대개 여성—을 가리키는 직함이었다. 천문표, 포병 궤적, NASA 궤도 계산이 그 일이었다. 1950~60년대부터 전자 컴퓨터가 그 계산 업무를 넘겨받았고, 이 직업이 사라질 무렵에는 이미 기계에 자신의 이름을 물려준 뒤였다.

천공 조작원

1930년대–1980년대

대부분 여성이었던 천공 조작원은 IBM 026, 029 같은 기계로 데이터와 심지어 프로그램 소스 코드까지 카드 한 장에 한 줄씩 천공했다. 대화형 터미널과 화면이 등장해 프로그래머가 직접 코드를 입력할 수 있게 되면서 이 직업은 한 세대 만에 사라졌다.

웹마스터

1993–2000년대

웹 초창기 10년 동안 한 명의 '웹마스터'가 웹사이트 전체를 설계, 코딩, 콘텐츠 작성, 운영까지 도맡는 경우가 많았다. 이 단어는 1993년 사전에 등재되었고 1997년 인터넷 표준으로 전용 이메일 주소까지 얻었다. 사이트가 복잡해지면서 이 역할은 프론트엔드 개발자, 백엔드 개발자, 데브옵스 엔지니어, 콘텐츠 편집자로 나뉘었고, '웹마스터'는 채용공고에서 사라졌다.

사라진 직업들 →

이 역사의 모든 시대는 같은 방식으로 끝난다. 손 계산, 카드 천공, 배치 스케줄링, 수동 서버 프로비저닝처럼 한 직업군 전체가 그 위에 세워졌던 수작업을 없애는 도구가 등장하고, 그 노동을 하던 사람들은 상위 단계로 올라가거나 다른 길로 떠난다.

지금 이 글을 읽는 엔지니어들은 그 순환의 첫 경험이 아니라 다음 반복을 살아가고 있다. 이 프로필의 나머지 부분은 구체적으로 지금까지 무엇이 벌어졌는지, 그리고 근거를 합리적으로 읽었을 때 다음에 무엇이 올지를 살펴본다.

계속 탐색하기

공학·기술 분야의 다른 직업