AI 시대를 대하는 개발자의 자세
오전에 강남에 있는 모 회사에 면접을 다녀왔다. CTO님과의 1:1 자리였고 기술적인 질의응답이 오고가는 자리였다.
CS 위주의 질문으로 구성되어 있었는데 문제는 그것이 정형화된 단순 지식에 관한 질문이 아니었단 점이다.
질문의 내용은 밝힐 수 없지만 코드 레벨에서의 기능 구현사항부터 특정 플랫폼에 대한 이슈까지 많이 접해본 적이 없는 질문들이 주어졌고 그 안에 CS 요소가 녹아들어 있었다.
학부 생활을 하며 배운 CS는 많이 증발하고 굉장히 어렴풋히 머리에 남아있는데 그런 창의적인 질문을 받으니 단번에 어떻게 해야겠다, 어떤 것을 의도하는건가 잘 캐치되지 않았다. 질문의 의도가 밝혀지도록 힌트를 주며 유도하셨고 내 생각을 열심히 말했지만 아쉬움이 남는 것은 어쩔 수 없나보다. 절대로 난이도가 높은 질문들은 아니었는데 CS 지식이 아주 탄탄하진 못한 탓인지 질문에 접근하고 해결하는 과정이 매끄럽지 않았다고 느껴진다.
그렇지만 충분히 신선하고 재밌는 면접이었고 나의 부족함을 깨달을 수 있는 계기가 되었다. 나에 대한 질의가 끝나고 내가 질문을 할 수 있는 차례가 오자 그러한 질문들을 하게 되신 배경이 궁금해서 그것부터 여쭸다.
여기서부터는 그의 답변을 적당히 각색하여 설명하겠다.
개발자가 알아야 할 것은 크게 보자면 두 가지 측면이 있다. 코드를 AI가 다 작성해주는 지금도, 앞으로도 변치 않을 CS와 같은 기반 지식과 언어/프레임워크/라이브러리/API 등 계속해서 바뀌는 테크닉적인 부분. AI가 발전하며 테크닉적인 부분의 중요성이 상대적으로 떨어졌고 CS의 중요성이 더 대두되었다.
많은 이들이 AI의 발전과 다양한 개념과 용어들(AI 에이전트, 컨텍스트 엔지니어링, 하네스 등)에 위기감과 두려움으로 FOMO를 느끼는데 결국 이렇게 빠르게 바뀌는 세상에서 살아남기 위해서는 두 가지 방법이 있다. AI를 통해 바뀌는 것을 다 직접 따라가는 것과 바뀌지 않을 것을 공부하는 것.
AI는 1960년대에도 존재한 개념이고 이와 관련해서 등장하는 것들도 다 원래 있던 것들이다. AI가 최근에 강력한 컴퓨팅 파워와 하드웨어를 기반으로 폭발적으로 성장한 것처럼 기술적 개념들도 이름만 바뀌어서 나오거나 이미 존재했지만 발현이 늦게 된 케이스라고 볼 수 있다. 그렇다면 개발자는 여기에 어떤 태도를 취해야 하는가?
AI의 발전을 직접 따라가면 좋다. 그러나 바뀌지 않을 것들을 안다면 따라가는 것이 쉬워진다. 클로드와 GPT가 아무리 성능이 좋아지고 발전해봐야 LLM이고 패러다임이 바뀌지 않는 한 LLM의 근간과 원리를 안다면 어떤 이름의 개념이 다시 등장하더라도 어떻게 하면 잘 쓸 수 있는지 더 빨리 알 수 있을 것이다.
변화를 따라가는 것만으로도 이미 벅차고 어려운 세상이라 비개발자들이 CS를 배우는 것이란 쉽지 않다. 둘 중 하나를 해낸다면 좋겠지만 본인이 개발자라면 CS를 더 단단히 하는 것이 비개발자들과의 차이점을 둘 수 있는 부분일 것이다. 그래서 어렵지는 않지만 창의적인 질문의 배경엔 CS가 있었고 그것을 기반으로 한 문제해결 능력을 보고자 했다고 그는 전했다.
나 또한 그런 생각을 갖고 있었기에 고개를 끄덕이게 될 수 밖에 없었다. 해야할 게 참 많다, 그치만 포기할 게 아니라면 해야 한다. 그래서 우리 개발자들은, 기초를 더 단단하게 닦고 그 위에 AI 나무를 심어야 한다. 그래야지 더 빠르게 잔가지와 열매까지 수분과 영양이 잘 도달할 수 있을 것이다.