AI가 코드 짜는 시대, ‘개발자’의 역할과 이름을 다시 묻다
컨텐츠 정보
- 조회 391
본문
최근 필자는 ‘개발자라면 누구나 ‘모르면서 아는 척’하는 주제 7가지’라는 칼럼을 작성한 뒤 친구로부터 이메일을 받았다. 그 친구는 “야, 네가 쿠버네티스를 이해하지 못한다면, 코더에서 개발자로 진화했다는 네 주장은 아무리 후하게 평가해도 설득력이 없다”라고 말했다.
오래 알고 지낸 친구라, 아마도 필자가 오래전에 썼던 마이크 건더로이의 저서 에 대한 서평을 떠올리며 한 말이었을 것이다. 이 책은 정말 훌륭한 책이며, ‘AI 시간’으로 불과 4분 전까지만 해도 개발자 업계에서 완전히 유효한 내용을 담고 있었다. 이 책은 이 업계에서 진정한 전문가가 되기 위해, 단순히 코드를 작성하는 것 외에 무엇을 해야 하는지를 다룬다. 여기서 말하는 ‘전문가’가 정확히 무엇을 의미하는지는 다소 모호하지만 말이다.
그 이메일을 계기로 필자는 우리가 스스로를 어떻게 부르는지, 그리고 그 단어들이 소프트웨어 개발 업계에서 일한다는 사실을 어떤 의미로, 또 얼마나 다양한 역할과 층위로 담아내는지 다시 생각하게 됐다.
소켓, 스위치, 다이얼
초기의 컴퓨터는 단어나 언어로 코딩되지 않았다. 비교적 단순한 계산을 수행하기 위해 물리적인 요소를 직접 조작하는 방식이었다. 이른바 ‘프로그래머(programmer)’는 소켓에 선을 꽂고, 스위치를 맞추며, 다이얼을 돌리고 로터를 회전시켰다. 당시 이 작업은 주로 사무적인 일로 여겨져 ‘여성의 일’로 인식되기도 했다. 사회적 맥락은 차치하더라도, 그 작업은 본질적으로 기계적인 성격을 띠고 있었다. 이들은 스스로를 ‘프로그래머’가 아니라 기계를 직접 다룬다는 의미에서 ‘오퍼레이터(operator)’라고 불렀다. 기계와 그 기계를 움직이기 위한 논리는 분리되지 않았다. 둘은 사실상 하나였다.
‘컴퓨터 언어(computer language)’라는 추상화 개념이 등장한 이후에야 ‘프로그래머’라는 용어가 사용되기 시작했다. 프로그래밍 언어는 프로그램을 실행하는 논리와 그 논리를 수행하는 물리적 장치를 명확히 구분할 수 있도록 했다. 컴퓨터가 점차 범용화되면서 ‘컴퓨터 프로그래머(computer programmer)’라는 개념도 자연스럽게 자리 잡았다.
초기 컴퓨터 프로그램은 ‘선형적’이거나 특정 작업에 묶인 형태였다. 다시 말해 A 지점에서 시작해 B 지점까지 실행되며, 대부분 어떤 형태의 계산을 수행했다. 분기나 반복, 흐름 제어가 없었던 것은 아니지만, 대체로 입력을 받아 출력을 만들어내는 구조가 일반적이었다.
고등학생 시절을 떠올려보면, 프로그래밍 숙제는 프로그램을 카드에 타이핑하는 것에서 시작됐다. 그렇게 작성한 카드 묶음을 컴퓨터실에 있는 ‘컴퓨터 쥐’에게 제출하면, 그는 그 카드를 실행한 뒤 출력 결과를 종이에 뽑아 카드 위에 가지런히 얹고 고무줄로 묶어 돌려주곤 했다.
여담이지만, 필자는 종종 타임머신을 타고 노트북 한 대를 1942년의 군대에 가져가는 상상을 한다. 그리고 덧셈 계산기를 앞에 두고 방 하나를 가득 채운 사람들이 느리고 고된 방식으로 계산하고 있던 탄도 표를, 엑셀 스프레드시트 하나로 순식간에 계산해 보여준다면 어떤 일이 벌어질지 상상해보곤 한다.
경계, 모듈, 인터페이스
그러다가 시스템은 점점 더 복잡해졌고 기계는 더욱 범용화됐으며, 소프트웨어는 훨씬 다양한 형태로 발전했다. 사용자 인터페이스라는 개념도 중요한 문제로 떠올랐다. 코드는 점점 다루기 어려워졌고 재사용 가능해졌으며, 형태와 용도가 다양해지면서 서로 얽히기 시작했다. 프로그래머는 경계(boundry)와 모듈(module)이라는 개념을 중심으로 사고해야 했다. 이 경계와 모듈 사이의 인터페이스(interface)는 핵심적인 관심사가 됐고, 버전 관리 역시 중요한 요소로 자리 잡았다. 이 모든 것을 관리해야 할 필요성은 ‘소프트웨어 엔지니어링(software engineering)’이라는 개념을 탄생시켰다. 개인적으로 필자가 좋아하는 용어는 아니다. 소프트웨어 개발은 과학이라기보다는 예술에 가깝다고 생각하기 때문이다.
이런 변화는 ‘프로그래머’라는 표현을 다소 구식으로 만들었다. 그 대신 ‘소프트웨어 개발자(software developer)’라는 개념이 등장했다. 30년 전만 해도 스스로를 ‘컴퓨터 프로그래머’라고 소개했을지 모르지만, 요즘 업계에서 그런 표현을 쓰는 경우는 찾아보기 어렵다. 이제 대부분은 자신을 ‘소프트웨어 개발자’나 ‘소프트웨어 엔지니어’라고 부른다.
이들 용어는 단순히 코드를 작성하는 행위 이상의 지식과 역량을 내포한다. 코드는 여전히 핵심에 있지만, 건더로이가 책에서 지적했듯이 오늘날 이 일은 코드 작성만으로 설명되지 않는다. 코드 위에는 여러 겹의 추상화와 복잡성이 쌓여 있으며, 그로 인해 ‘프로그래머’라는 단어만으로는 우리가 하는 일을 충분히 설명하기 어려워졌다.
그리고 이제 현재의 지점에 이르게 된다. 그렇다면 오늘날 ‘소프트웨어 개발자’란 정확히 무엇을 의미할까? 필자가 앞서 주장해왔듯이, 그중에서도 ‘프로그래밍’에 해당하는 비중은 점점 더 줄어드는 듯하다. 에이전틱 AI가 소프트웨어 개발 과정에서 이른바 ‘사무적인 작업’을 대부분 맡기 시작했기 때문이다. AI는 코드를 작성한다. 많아야 우리는 그 결과를 간단히 점검하는 수준에 그칠 것이고, 솔직히 말해 그런 점검마저도 머지않아 사라질 가능성이 크다.
오퍼레이터, 프로그래머, 개발자, 엔지니어. 우리가 스스로를 부르는 이름은 세월과 함께 변했고, 우리가 실제로 하는 일 역시 그에 맞춰 달라졌다. 매 단계마다 새로운 역할에 어울리는 명칭이 자리 잡기까지는 시간이 필요했다. 코딩 에이전트를 다루는 지금의 우리가 하는 일을 설명할 새로운 단어는 과연 언제 등장할까? 언젠가는 분명히 새로운 이름이 생겨날 것이라고 확신한다.
dl-itworldkorea@foundryco.com
관련자료
-
링크
-
이전
-
다음






