이제 비로소 소프트웨어 엔지니어로 문제 해결에 집중할 때
언제부터 우리는 개발자 하면 소프트웨어 엔지니어를 떠올렸을까? 정확하진 않지만 90년대 말, 2000년대 닷컴 버블기부터 이런 표현을 쓰게 된 것 같다. 보통 기계공학 엔지니어, 산업공학 엔지니어이지 기계공학 개발자, 항공기 개발자 같은 표현은 잘 사용하지 않는다. 개발자(developer)라는 표현은 유독 소프트웨어 업계에서만 자주 사용한다.
원인은 여러가지가 있겠지만, 개발자라는 표현에는 "만든다"라는 표현이 들어 있다고 생각한다. 그래서 실제로 코드를 짜서 애플리케이션을 만들지 않는 DevOps나 SRE 같은 직군은 보통 '개발자'라고 부르지 않는 것 같다. DevOps Engineer, Data Engineer라고 하지 DevOps 개발자 Data 개발자라고는 하지 않는 것 같다.
결국 우리가 '개발자'라는 표현을 사용할 때는 다분히 무엇인가를 코딩함으로써 만든다는 의미가 담겨 있다. 기능을 개발하고 애플리케이션에 코드를 보태는 행위, 없던 것을 만드는 행위. 어떤 의미에서는 '장인' 같은 의미도 담고 있다고 생각한다.
자동차 산업을 예로 들어보면 소프트웨어 엔지니어, 혹은 개발자의 특수성이 더 극명하게 드러난다. 보통 자동차산업에서 엔지니어는 생산직군이 아니다. 차량은 공장에서 생상되고, 엔지니어는 공장에서 생산라인을 가동하고 조립을 하는 사람은 아니다. 자동차 엔지니어는 자동차의 부품을 설계하거나 연구개발을 하거나 품질을 개선할 솔루션을 도입하는 등 자동차를 만드는 행위보다는 자동차의 생산과 관련된 기술적인 문제를 해결하는 데 집중한다.
반면, 프론트엔드 개발자, 백엔드 개발자라고 부르는 소프트웨어 엔지니어들의 경우 설계도 하고, 연구도 하지만 실제로 프로덕트(서비스)도 직접 만든다. 즉, 우리는 설계자이자 생산자, 장인인 것이다.
AI시대, 많은 소프트웨어 엔지니어가 극심한 우울증을 겪는 이유도 이 '만드는 즐거움'을 박탈당했기 때문이라고 생각한다. 요즘 동료 개발자들을 만나면 하루 종일 AI한테 코드를 짜라고 시키는 일만 한다고 푸념한다. AI가 너무 잘해서 할 일이 없다고 걱정한다.
물론, 시간이 흐를수록 AI 기술은 발전할 것이고, 종국에는 인간의 지능을 초월하고 대체할지도 모른다. 하지만 당장은 아니다. 나는 지금 대체되고 있는 것은 소프트웨어 개발이지 소프트웨어 엔지니어링이 아니라고 생각한다.
엔지니어링은 무엇인가? 엔지니어란 무엇인가? 엔지니어는 과학과 기술을 활용해 문제를 해결하는 사람이다. 이 과정은 필연적으로 '문제 해결'을 포함한다. 예를 들어 고유가와 지구온난화 같은 위기의식은 문제의식이 되어 친환경 자동차나 더 좋은 연비의 엔진을 만들게 한다. 엔지니어는 이런 문제의 인식을 바탕으로 그 문제를 기술을 활용해 해결한다.
소프트웨어 엔지니어도 별반 다르지 않다. 지금까지는 소프트웨어 업계에서 제품의 생산과 엔지니어링은 분리할 수 없는 것이었다. 컴퓨터에게 일을 시키는 방법은 코드를 작성하는 방법 뿐이었고, 우리는 직접 코드를 짜야지만 제품을 만들 수 있었다. 하지만 이제는 다르다. 우리는 AI에게 지시함으로써 생산을 AI에게 맡길 수 있다. 그리고 우리는 코드의 '생산' 보다는 '문제 해결'이라는 본질에 집중할 수 있다.
우리가 취업 준비를 할 때마다 코딩 테스트와 기술 면접을 준비하는 이유, 우리가 머리를 뜯으며 고민하고 헤매는 이유, 우리가 상대적으로 높은 연봉을 받는 이유는 결국 우리가 복잡하고 어려운 문제를 푸는 사람이어서이지 코드를 짜고 제품을 만들 수 있어서만은 아니다.
찾아본다면 우리가 풀어야할 문제들은 도처에 널려있다. 어떻게 한 시스템의 장애가 다른 시스템으로 전파되지 않게 마이크로서비스를 설계할 것인가? 어떻게 대용량의 로그를 실시간으로 조회하면서도 낮은 인프라 비용을 달성할 것인가? 어떻게 실시간으로 효율적인 최적 배송 경로를 계산할 것인가?
주변을 둘러보면 풀어야할 어려운 문제들은 많다. 다만 우리는 그동안 기능을 '개발'할 사람이 부족해서, 당장 피쳐를 쳐 내고 기능을 추가하는 데 바빠서 그 문제들은 잠시 덮고 임시방편의 해결책들로 막아내고 있었을 뿐이다. 이제 단순한 작업들은 AI에게 맡기면 된다. 그리고 AI를 감독하며 진짜 문제를 찾아내고, 해결하는 데 열정을 쏟으면 된다.
다만 그렇기 때문에 소프트웨어 업계는 위기다. 더 이상 생산자로서의 개발자는 이전처럼 많이 필요하지 않다. 이제 필요한 것은 다수의 코더가 아닌 소수의 엔지니어다. 복잡한 문제를 파고들어 최적의 방법으로 해결해 내는 사람이 AI를 감독해서 문제를 풀고 기능을 생산해 나가면, 어쩌면 지금보다 훨씬 적은 개발자, 엔지니어만 사회에 필요할지도 모른다.
하지만 장점도 있다고 생각한다. IT 기업의 입장에서는 인건비 비중이 낮아지고, 엔지니어 1명이 기여하는 매출과 이익의 기여도는 더 높아질 것이다. 복잡한 문제를 풀어내는 소수의 엔지니어들은 과거 수많은 개발자들이 받았던 연봉보다 더 높은 연봉을 받을 것이다. 업계의 채용의 문은 좁아지고 채용 규모는 줄어들겠지만 살아남은 사람들에게 주어지는 보상은 더 커질 것이다.
우리는 AI 때문에 대체되는 것이 아니라, AI 덕분에 비로소 생산의 고단함에서 해방되고 문제해결의 본질에 집중할 수 있게 되었다. 물론 언젠가는 이 문제해결 행위도 AI가 대체하게 될지도 모른다. 하지만 확실한 것은 지금 우리가 즐길 수 있게 된 자유다. 지금을 즐기자. 어려운 문제를 몇날 며칠 고민하고 이렇게도 저렇게도 시도해 보면서 결국 그 문제를 풀어내었을 때의 쾌감, 행복, 자기효능감. 그것들이 우리의 새 연료이자 동력원이다.