시니어 개발자가 자신의 전문성을 제대로 전달하지 못하는 이유
AI 에이전트가 개발자를 완전히 대체할 것이라는 주장은 소프트웨어 개발의 본질인 '복잡성'을 관리하는 시니어 개발자의 역할을 간과한 것입니다. 비즈니스의 '불확실성'을 줄이기 위해 빠른 속도를 추구하는 마케팅/경영진과 달리, 시니어 개발자는 시스템의 '안정성'을 해치는 불필요한 코드와 복잡성을 추가하는 것을 극도로 경계합니다. 따라서 AI가 코드를 빠르게 찍어내는 능력은 있지만, 복잡성을 통제하는 시니어 개발자의 근본적인 역할을 대체할 수 없다는 직관이 맞습니다.
다음 문장에 대해 어떻게 생각하시나요? "AI 에이전트가 소프트웨어 개발의 미래입니다. 더 이상 비즈니스의 진행을 늦추는 개발자는 필요 없을 겁니다." 만약 당신이 시니어 개발자이고 이 말이 사실이라고 생각한다면, 나는 당신의 전문성에 약간 의구심을 품을 것입니다(이유를 설명하겠습니다; 일부러 비난하려는 게 아닙니다). 하지만 당신이 시니어 개발자가 아니고 이 말이 사실이라고 생각한다면, 당신은 아마 맞을 것입니다. 네? 무슨 상황일까요?
카피라이팅의 본질은 메시지를 청중에 맞추는 것입니다. 따라서 카피라이터인 제 눈에 지금 벌어지고 있는 일은 동일한 메시지가 두 가지 다른 청중에게 각각 다른 의미로 다가오고 있다는 것입니다. 만약 당신이 시니어 개발자이고, 에이전트, 스킬(Skills), 모델(Models) 등 사람들을 열광하게 만드는 모든 것들을 직접 경험해 보았음에도 불구하고, 사람들이 당신의 직업이 도태되었다고 선언하는 방식에 여전히 '뭔가 어긋났다'는 직관이 든다면, 이 글에서는 (훌륭한 카피라이터가 그러하듯) 당신의 그 직관을 언어화해 보려고 합니다.
잠깐만요! 많은 노련하고 유명한 개발자들 역시 개발자의 종말을 선언하고 있습니다. 어떻게 된 일일까요? 누구의 직관이 맞는 걸까요? 그리고 이러한 엇갈림을 만드는 원인은 무엇일까요?
제가 팀에 합류하면 두 가지 유형의 시니어 개발자를 만나게 됩니다. 첫 번째 유형은 이런 말을 합니다. "이 새로운 도구를 찾았는데 꽤 멋지네요 ..." "우리와 전혀 다른 어떤 회사는 이런 식으로 일하니까, 우리도 ..." "이봐요, 해커뉴스(HackerNews)에 이게 모범 사례라고 나와있으니, 우리도 아마 ..."
저는 이런 부류의 시니어 개발자를 좋아하지 않습니다. 약간의 자기 보호본능이 있고, 업계에서 꽤 오래 일했으며, 아마 사람들과 잘 지낼 것입니다. 하지만 저와는 파장이 맞지 않습니다.
그리고 또 이런 부류의 시니어 개발자도 있습니다. "우리가 정말로 그것이 필요한가요?" "이것을 하지 않으면 어떻게 되나요?" "지금은 그냥 있는 걸로 충분하지 않을까요? 나중에 더 중요해지면 그때 다시 고민해보는 건 어떨까요?"
아, 이거야말로 제가 원하는 시니어 개발자입니다. 피하고, 줄이고, 재활용하는 사람. 그들은 최대한 개발(코딩)을 피하고 싶어 합니다. 왜일까요? 그들은 전문적인 소프트웨어 개발에서 단 하나의 괴물을 사냥하기 때문입니다. 바로 '복잡성(Complexity)'입니다.
특수한 예외 상황(Special cases), if 조건문, 새로운 데이터베이스 테이블, 새로운 컴포넌트. 이 모든 것들은 정말 끔찍합니다(Yuck yucks). 시니어 개발자는 이런 요소들을 최대한 줄이고 싶어 하며, 절대적으로 더 많은 코드를 추가해야만 하는 상황인지 확인하느라 많은 시간을 할애합니다. 시스템에 무언가를 추가하는 것은 복잡성을 높일 위험을 감수하는 것이기 때문입니다.
네, 네, 물론 이는 단순화한 것입니다. 해결되지 않은 문제를 해결하고 새롭고 창의적인 디자인을 찾는 데 탁월한 시니어 개발자들도 있습니다. 하지만 결국, 작동 중인 시스템에 책임을 지게 된다면 당신도 복잡성을 두려워하게 됩니다.
자, 그 이유는 무엇일까요? 복잡성의 단점은 무엇일까요? 그리고 왜 다른 사람들은 이를 이해하지 못할까요?
우리는 비즈니스가 무엇인지 두 가지 루프(Loop)를 사용해 단순화해 볼 것입니다. 첫 번째 루프입니다. 마케터, 영업사원, 프로덕트 매니저, CEO 등은 모두 이곳에 살고 있습니다. 이 루프의 주요 목표는 시도하고 배우는 것입니다. 기업은 제품을 시장에 내놓고, 그것이 가치 있는 것인지 피드백을 받고 싶어 합니다. 이 루프에 있는 사람들에게 있어 괴물은 '불확실성(Uncertainty)'입니다.
불확실성은 잔인합니다. 왜냐하면 어떤 전략도 반드시 성공한다고 보장할 수 없기 때문입니다. (마케팅/영업에 대한 보상, 창업자를 위한 급여, 프로덕트 매니저를 위한 데이터 등의) '시간'과 결합되면, 마감일 전에 불확실성을 줄일 수 있는 유일한 방법은 최대한 빨리 시장에 제품을 출시하는 것이라고 느껴집니다. 시장에 내놓는 것이 많을수록 시장으로부터 더 많은 피드백을 받을 수 있고, 그러면 (잠재적으로) 불확실성을 더 많이 줄일 수 있습니다. 모든 회령이 이 루프에서 시작하며, 이 루프는 순수하고 날것 그대로의 '속도(Speed)'에 관한 것입니다.
하지만 기업이 고객을 얻으면 어떻게 될까요? 아, 자, 여기에 우리의 두 번째 루프가 있습니다. 서비스에 대한 대가를 지불하는 사람들. 많은 시니어 개발자들이 바로 이 루프에서 자신을 발견합니다. 이 루프의 주요 목표는 서비스의 지속과 보장입니다. 시스템이 계속 작동하게 유지하고, 이해 가능하게 유지하고, 디버깅(Debugging) 가능하게 유지하고, 고칠 수 있게 유지하고, 가르칠 수 있게 유지하며, 안정적으로 유지하는 것입니다. 시니어 개발자들은 안정성을 걱정합니다...