AI 시대에도 컴퓨터 프로그래머가 될 것을 고려해야 하는지에 대한 질문에, ‘네, 그리고…’라는 답으로 코딩의 본질과 AI를 올바르게 활용하는 방법, 그리고 지금 구직하는 사람들에게 주는 조언을 다룬 글.
검색
Carson Gross 2026년 2월 27일 저는 Montana State University에서 컴퓨터 과학을 가르칩니다. 저는 아들 셋의 아버지이고, 셋 다 제가 컴퓨터 프로그래머라는 걸 알고 있으며 그중 적어도 하나는 이 분야에 관심을 보인 적이 있습니다. 저는 컴퓨터 프로그래밍을 사랑하고, 그 사랑을 제 아들들과 제 수업의 학생들, 그리고 들어줄 사람이라면 누구에게든 전하려고 노력합니다.
제가 친척, 친구, 학생들로부터 점점 더 자주 받는 질문은 이겁니다:
AI가 있는데도, 저는 여전히 컴퓨터 프로그래머가 되는 것을 고려해야 할까요?
이에 대한 제 답은: “네, 그리고…”입니다.
컴퓨터 프로그래밍은 근본적으로 두 가지에 관한 일입니다:
컴퓨터로 문제를 해결하는 법과 그 해결책의 복잡성을 통제하는 법을 아는 것이 오늘보다 덜 가치 있는 미래를 저는 상상하기 어렵습니다. 그래서 AI 도구가 등장하더라도 여전히 유효한 커리어로 남을 거라고 생각합니다.
그렇다고 해도, 저는 AI가 주니어 프로그래머들에게 매우 위험할 수 있다고 봅니다. AI는 많은 문제에 대해 효과적으로 코드를 생성해낼 수 있기 때문입니다. 주니어 프로그래머가 코드를 배우고 직접 쓰지 않은 채 그저 생성만 한다면, 전선에 내려가 몸으로 부딪치며 얻는 코드에 대한 생생한 이해를 발전시킬 기회를 스스로 빼앗는 것입니다.
그래서 저는 학생들에게 경고합니다:
“그래, AI가 이 과제의 코드를 생성할 수는 있어. 하지만 그렇게 못 하게 해. 너는 반드시 코드를 직접 써야 한다.”
저는 그들에게, 코드를 쓰지 않으면 코드를 효과적으로 읽을 수 없게 된다고 설명합니다. 코드를 읽는 능력은 AI 기반 코딩 미래에서 분명 가치가 있을 것이고, 어쩌면 더 가치가 있을지도 모릅니다.
코드를 읽지 못하면 마법사의 제자 함정에 빠져, 이해하지도 통제하지도 못하는 시스템을 만들어내게 됩니다.
어떤 사람들은, 고수준 언어에서 AI 생성 코드로 넘어가는 것이 어셈블리에서 고수준 프로그래밍 언어로 넘어간 것과 같다고 말합니다.
저는 이 비유에 동의하지 않습니다.
컴파일러는, 대체로, 현재의 AI 도구들이 그렇지 못한 방식으로 결정론적입니다. for 루프나 if 문 같은 고수준 언어 구성 요소가 주어지면, 특정 컴퓨터 아키텍처에 대해 생성될 어셈블리가 어떤 형태일지(적어도 최적화 이전에는) 상당한 확신을 가지고 말할 수 있습니다.
특정 프롬프트에 대한 LLM 기반 해법에서는 같은 말을 할 수 없습니다.
고수준 프로그래밍 언어는, 어셈블리와는 달리, 최소한의 텍스트로 문제에 대한 매우 구체적인 해법을 만들어내는 아주 훌륭한 방법입니다. 그들은 많은 우발적 복잡성을 제거했고, (코드가 합리적으로 잘 작성되었다고 가정하면) 대부분 필수 복잡성만 남겼습니다.
반면 LLM 생성 코드는 종종 우발적 복잡성을 제거하지 못하고, 실제로는 문제에 부적절한 접근을 선택하거나, 지름길을 택하는 등의 이유로 상당한 우발적 복잡성을 추가할 수 있습니다.
코드를 읽을 수 없다면, 그걸 어떻게 알 수 있겠습니까?
그리고 코드를 읽고 싶다면 코드를 써야 합니다.
제가 학생들에게 말하는 또 다른 것은, AI는 제대로 사용하면 엄청나게 효과적인 조교(TA)라는 점입니다. 코드 생성기로 쓰는 대신, 개념과 기법을 이해하도록 도와주는 파트너로 사용한다면 지적 성장에 큰 도약을 제공할 수 있습니다.
컴퓨터 프로그래밍을 배울 때 가장 어려운 일 중 하나는 “막히는” 것입니다. 요령이 보이지 않거나, 어디서부터 시작해야 진전을 만들 수 있을지조차 잘 모르는 상황이죠.
더 나쁜 경우는 우발적 복잡성 때문에 막히는 것입니다. 특정 툴체인을 어떻게 다뤄야 하는지 모르거나, 툴체인이 무엇인지조차 모르는 경우 말입니다.
이건 _당신_의 문제가 아니라, 당신의 환경 문제입니다. 의미 없이 막히는 것은 실제로 학습해야 할 시간을 빼앗고, 종종 사람들을 컴퓨터 과학에서 떨어져 나가게 만듭니다.
(저는 Berkeley에서 혼자 Unix를 배우려다 막혔고, 그것이 제가 그곳의 컴퓨터 과학 프로그램을 중도에 그만둔 이유 중 하나입니다.)
AI는 이런 장애물을 넘는 데 도움을 줄 수 있고, 올바르게 사용된다면 훌륭한 조교가 될 수 있습니다. 저는 학생들에게 코딩 에이전트를 코드 생성기가 아니라 훌륭한 조교처럼 행동하도록 설정하기 위한 AGENTS.md 파일을 게시해 두었고, 이런 역할로 AI를 사용하라고 권합니다.
AI는 적절히 사용하기만 한다면, 컴퓨터 프로그래머로서 성장하는 능력에 반드시 해가 될 필요는 없습니다.
저는 AI가 컴퓨터 프로그래밍을 바꿀 거라고 생각합니다. 어떤 사람들이 생각하는 만큼 극적으로는 아니겠지만, 몇몇 근본적인 방식으로는요.
코딩이라는 행위 자체가 상대적으로 가치가 떨어질 수도 있습니다.
저는 이것이 아쉽다고 생각합니다. 저는 보통 코딩 행위 자체를 좋아합니다. (비유적으로) 맨손으로 무언가가 무언가를 하도록 만드는 건 재미있습니다. 코드를 잘 쓰는 데에는 예술과 만족감이 있고, 그 과정에서 내릴 미적 결정도 많습니다.
하지만 미래에는 순수한 코드 작성 숙련도가 덜 중요해질 가능성이 있어 보입니다.
이것의 상대적 중요성이 줄어들수록, 다른 기술들이 더 중요해질 것 같습니다.
예를 들면, LLM과 인간 모두를 상대로 명확하게 글을 쓰고, 생각하고, 소통하는 능력은 미래에 훨씬 더 중요해질 가능성이 큽니다. 많은 프로그래머들은 원래 문학적 성향이 있기도 하고, 이 기술은 시간이 지날수록 가치가 올라갈 가능성이 높으며 충분히 노력할 만합니다.
책을 읽고 에세이나 블로그 글을 쓰는 일은 이런 측면에서 도움이 될 가능성이 큰 활동입니다.
또 하나 노력할 수 있는 것은, 정신적 에너지의 일부를 비즈니스(또는 정부 역할 등)를 더 잘 이해하는 데 돌리는 것입니다.
컴퓨터 프로그래밍은 컴퓨터로 문제를 해결하는 일이고, 비즈니스에는 이런 문제들이 아주 많습니다.
어떤 비즈니스 사람들은 AI를 보고 “좋아, 이제 프로그래머가 필요 없겠네!”라고 말하지만, 제게는 프로그래머가 “좋아, 이제 비즈니스 사람은 필요 없겠네!”라고 말할 수도 있을 만큼 그럴듯해 보입니다.
저는 두 관점 모두 근시안적이라고 생각하지만, AI가 프로그래머들에게 본질적으로는 프로그래머로 일하면서도 동시에 자신이 해결하는 현실 세계의 문제(비즈니스든 그 밖의 것이든)를 이해하는 데 더 많은 시간을 투자할 수 있는 능력을 줄 수는 있다고 생각합니다.
이는 커뮤니케이션 능력 향상과도 잘 맞물립니다.
많은 프로그래머들처럼 저도 “소프트웨어 아키텍트”라는 용어에 대해 양가감정이 있습니다. 저는 아키텍처 우주인들이 세상에 많은 고통을 주는 것을 보아 왔습니다.
하지만 더 나은 표현이 마땅치 않아서, 저는 소프트웨어 아키텍처가 시간이 지날수록 더 중요한 기술이 될 것이라고 생각합니다. 큰 소프트웨어 시스템을 효과적으로 조직하는 능력, 그리고 결정적으로 그 시스템의 복잡성을 통제하는 능력 말입니다.
주니어들에게 이것이 어려운 이유는, 전통적으로 큰 해법을 잘 아키텍처링하는 능력이 더 작은 시스템 부분들을 만들어본 경험에서 나오기 때문입니다. 처음에는 형편없다가, 시간이 지나며 더 효과적으로 되죠.
제가 만난 나쁜 아키텍트 대부분은 코딩을 못했거나, 애초에 코딩 경험이 거의 없었습니다.
AI에게 “간단한” 것들의 코드 생성을 맡겨버리면, 효과적인 아키텍트가 되기 위해 필요한 직관을 어떻게 기를 수 있을까요?
그래서 다시 말하지만, 코드는 당신이 써야 합니다.
가치가 올라갈 가능성이 큰 또 다른 기술(당연히)은 LLM을 효과적으로 사용하는 법을 아는 것입니다. 저는 현재도 그것이 무엇을 의미하는지 알아가는 과정에 있다고 생각합니다.
또한 이것이 의미하는 바는 경험 수준에 따라 달라진다고 생각합니다.
AI 이전 시대에 이미 많은 경험을 쌓아온 시니어 프로그래머들은 LLM을 효과적으로 사용하기에 좋은 위치에 있습니다. 그들은 “좋은” 코드가 어떤 모습인지 알고, 더 큰 시스템을 만들어본 경험이 있어 무엇이 중요하고 무엇이 중요하지 않은지도 압니다. 시니어 프로그래머의 위험은, 아예 프로그래밍을 완전히 멈추고 뇌 썩음을 겪기 시작하는 것입니다.
특히 위험한 것은 프롬프트를 던져 놓고 기다리는 동안 영원한 스크롤에 빨려 들어가는 것입니다.
제가 어떻게 아는지 물어보세요.
저는 보통 LLM을 다음과 같이 사용하려고 합니다:
저는 지원해야 할 전체 해법을 LLM에게 생성시키는 데에는 되도록 사용하지 않습니다. 때로는 해법을 구축하면서 수동 코딩과 함께 LLM을 곁들여 사용해, 코딩 중에 API와 선택지를 이해하는 데 도움을 받기도 합니다.
저는 제가 만드는 시스템의 API를 LLM이 설계하게 두지 않습니다.
주니어는 더 어려운 처지에 있습니다. 다시 말하겠습니다: 코드는 당신이 써야 합니다.
문제를 ‘바이브’로 밀어붙이고 싶어지는 유혹은 정말, 정말 큽니다. 하지만 그 유혹과 싸워야 합니다.
동료들은 분명 바이브로 밀어붙일 것이고, 그건 짜증날 겁니다. 당신은 그들보다 더 열심히 일해야 하고, 느리다는 이유로 비판받을 수도 있습니다. 여기서 일의 역학은 이해할 필요가 있습니다. 회사가 이해보다 속도를 우선시한다면(요즘 많은 회사가 그렇듯), 당신은 그 현실을 받아들이고 해고되지 않도록 해야 합니다.
하지만 저는 이것이 일시적인 상황이라고 생각합니다. 곧 기업들은 속도전 바이브 코딩이, 충분히 이해하고 신중하게 코딩하는 것보다 복잡성 폭발 문제를 더 심하게 겪는다는 사실을 깨닫게 될 것입니다.
그 시점이 되면, AI의 도움을 받되 더 느리고 신중하게 코딩하는 방식이 이 새로운 기술을 활용하는 최선의 방법으로 이해될 거라고 예상합니다.
AI가 주니어에게 도움이 될 수 있는 부분은, 주니어를 자주 넘어뜨리는 우발적 복잡성을 제거함으로써 시니어 개발자에 이르는 길을 가속하는 것입니다. 위에서 말했듯이, AI를 하인이라기보다(때때로 과하게 의욕적인) 유용한 조력자로 보면 코드베이스의 형태, 주어진 문제에서 사용할 수 있는 API와 기법, 특정 빌드 시스템이나 프로그래밍 언어가 작동하는 방식 등을 이해하는 데 매우 효과적일 수 있습니다.
하지만 코드는 당신이 써야 합니다.
그리고 회사들: 주니어들이 코드를 쓰게 해야 합니다.
제가 AI와 프로그래밍에 관해 받는 질문들은 근본적으로 괜찮은 일자리를 얻는 문제를 중심으로 돌아갑니다.
지금 프로그래머 채용 시장이 나쁘다는 건 비밀도 아니고, 저는 좋은 CS 학생들이 프로그래밍 포지션을 찾느라 고생하는 모습을 보고 있습니다.
제가 수정구슬을 가진 건 아니지만, 저는 이것이 영구적인 상황이 아니라 일시적인 상황이라고 믿습니다. 프로그래머 일자리 시장은 호황과 불황이 반복되는 경향이 있고, 언젠가는 현재의 불황에서 회복할 거라고 생각합니다.
하지만 지금 당장 일자리를 찾는 사람에게는 차가운 위로일 뿐이니, 저는 제가 학생들에게 주는 구체적인 구직 조언을 공유하고자 합니다.
저는 온라인 구직 사이트가 대체로 무의미하다고 봅니다. 특히 주니어에게는요. 그건 복권이고, 거기서 좋은 일자리를 찾을 확률은 낮습니다. 무료이니 써볼 가치는 있겠지만, 많은 시간을 투자할 가치가 있지는 않습니다.
더 나은 접근은 네 가지 F입니다: Family, Friends & Family of Friends. 개인적 인맥을 활용해, 그 회사 안에 아는 사람이 있다는 경쟁 우위를 가진 회사의 포지션을 찾아보세요. 가족이 가장 강력한 가능성입니다. 친구도 종종 좋습니다. 친구의 가족은 약하지만, 그래도 물어볼 가치는 있습니다. 당신이 아는 사람이 있거나, 어떤 회사의 누군가와 몇 단계만 떨어져 있다면, 그 회사에서 일자리를 얻을 가능성이 훨씬 커집니다.
저는 많은 학생들에게, 이것이 당신의 가족이 Google이나 다른 대형 테크 회사에서 일해야 한다는 뜻은 아니라고 강조합니다.
상당한 규모의 모든 회사는 컴퓨터로 해결해야 할 문제를 가지고 있습니다. 100명 이상 되는 거의 모든 회사에는 어떤 형태로든 개발 조직이 있습니다. 비록 그들이 그렇게 부르지 않더라도요.
예를 들어, 저는 일자리를 찾느라 고생하던 한 학생이 있었습니다. 저는 그 학생의 부모님이 무슨 일을 하시는지 물었고, 그 학생은 Costco 본사에서 일한다고 했습니다.
저는 그 학생이 사실 엄청나게 운이 좋으며, 그것이 훌륭한 회사로 들어가는 티켓이라고 말해주었습니다.
그곳에서 “컴퓨터 프로그래머”로 시작하지 않을 수도 있고, 분석가나 다른 역할로 시작할 수도 있습니다. 하지만 그 역할 위에 프로그래밍 능력을 더할 수 있다면 그것은 매우 큰 가치가 있고, 훌륭한 커리어를 열어줄 가능성이 큽니다.
그래서 저는 여전히 컴퓨터 프로그래밍을 커리어로 추구하는 것이 좋은 생각이라고 봅니다. 현재의 채용 시장이 나쁜 것은 분명하지만, 저는 이것이 일시적이라고 생각합니다.
저는 컴퓨터 프로그래밍이 수행되는 방식이 변화하고 있다고 생각하며, 프로그래머들은 “순수” 코드 작성 이상의 기술을 쌓는 것을 고려해야 한다고 봅니다. 이것은 언제나 좋은 생각이었습니다.
저는 프로그래밍이 어떤 사람들이 주장하는 것만큼 극적으로 바뀌고 있다고 생각하지 않습니다. 그리고 프로그래밍의 기초, 특히 좋은 코드를 쓰는 것과 복잡성을 통제하는 것은 앞으로도 꾸준히 중요할 것이라고 생각합니다.
이 에세이가 특히 주니어 프로그래머들에게 그 질문에 답하는 데 도움이 되고, 제가 매우 보람 있게 느껴왔고 앞으로도 오래 계속할 거라고 기대하는 커리어에 들어서는 데 더 큰 자신감을 갖게 해주길 바랍니다.
그리고 회사들: 주니어들이 적어도 일부 코드는 쓰게 하세요. 그것은 여러분의 이익입니다.
</>
_자바스크립트 피로:
하이퍼텍스트를 갈망하며
이미 손에 쥐고 있는데_
