본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 18. 13:40

AI 시대의 미경험 프로그래머에게는 「사상」을 인스톨하라

요약

AI 코딩 에이전트 시대에 초보 프로그래머가 단순 코드 생성을 넘어 실력을 쌓기 위한 교육 방향을 제시합니다. 코드 작성법보다 설계 의도와 자신만의 고집인 '사상'을 먼저 갖추는 것이 중요함을 강조합니다.

핵심 포인트

  • AI가 코드를 통째로 생성하는 시대에는 단순 구현 능력이 중요하지 않음
  • 돌아가는 프로덕트만 만드는 방식은 코드에 대한 이해도를 낮출 수 있음
  • 코드의 위치와 구현 이유를 파악하는 '사상(설계 의도)' 교육이 필요함
  • AI 활용 시 생성된 코드를 자신의 논리로 납득하는 과정이 필수적임

대상 독자: AI 시대에 프로그래밍 초보자를 가르치는 방법으로 고민하고 있는 사람

이 글에서 전하고 싶은 것은 다음 세 가지입니다.

  • AI가 전제가 된 지금, 지금까지와 같은 "기초를 배우고, 어쨌든 돌아가는 것을 만든다"는 가르치는 방식으로는 잘 되지 않는다
  • 앞으로의 초보자 교육에서는 코드 작성법보다 먼저 「사상 (思想)」을 전달하고 싶다
  • 여기서 말하는 사상이란 거창한 것이 아니라, "코드나 설계는 이랬으면 좋겠다"라는 자신만의 고집·의지

왜 그렇게 생각하게 되었는지, 자신의 실패와 체험을 바탕으로 순서대로 써 내려가겠습니다.

저는 대학생(학부 3학년)으로, 어느 프로그래밍 서클에 소속되어 있습니다. 작년부터는 선배로서 초보자인 후배들에게 모바일 앱 개발 등을 가르치게 되었습니다.

초보자를 위한 공부법으로 자주 언급되는 것은, "최소한의 기초를 배웠다면, 나머지는 어쨌든 돌아가는 프로덕트(Product)를 만들어 보면 좋다"는 것입니다. 저 자신도 그랬습니다. 2년 전쯤 Flutter를 배웠을 때는 영상을 참고하여 기본적인 작성법을 익혔고, 그 후의 개인 개발을 통해 실력을 키웠습니다.

그 당시의 개인 개발은,

코드를 작성한다 → 에러에 부딪힌다 → 의문이 생긴다 → 손이 멈춘다 → 스스로 조사하여 이해한다 → 다시 코드를 작성한다……

의 반복이었습니다. 이 시행착오가 저에게 큰 자산이 되었기에, 후배들에게도 똑같이 기초를 배운 뒤 개인 개발로 실천적으로 배워나갈 것을 권했습니다.

그런데 지난 1년 동안 코딩 에이전트(Coding Agent)는 크게 진화했고, 이제는 코드를 스스로 작성할 필요조차 없어졌습니다. 그런 시대에 초보자는 어떻게 돌아가는 프로덕트를 만드는가.

제가 가장 많이 본 것은, "AI에게 대략적인 기능의 이미지를 전달하여 코드를 통째로 생성하게 하는" 방식입니다.

그렇게 1년 후, 후배들이 직면한 현실은 다음과 같았습니다.

돌아가는 프로덕트는 많이 가지고 있지만, 이해도는 최소한의 기초 수준에 머물러 있음.

왜 그들에게 실력이 붙지 않았을까. 흔히 말하는 답은 "AI에게 구현을 통째로 맡겨버려서 코드의 이해를 게을리했기 때문"입니다. 이는 맞는 말이라고 생각합니다.

그래서 저는 대책을 세웠습니다. AI에 의한 코드 생성을 금지한다. 혹은 생성된 코드를 한 줄씩 이해하게 한다. 하지만 둘 다 초보자의 성장으로 이어지지는 않았습니다.

편리하다는 것을 알고 있는 AI를 금지당하면서까지 프로그래밍을 계속할 동기를 모두가 가질 수는 없습니다. 그렇다고 해서 생성된 코드를 사후에 이해하려고 해도, 자신이 작성한 것이 아니기에 완전히 납득(腹落ち)이 되지 않는 것입니다.

여기에 큰 힌트가 있다는 느낌이 들었습니다. "돌아가기만 하는 코드"가 배움이 되지 않는 것은 AI 때문이라기보다, 이해의 실마리(=사상)를 갖지 못한 채 코드를 나중에 바라보고 있기 때문이 아닐까. 그렇다면 그 사상은 어떻게 얻을 수 있는가.

그 답의 힌트를 제가 참여했던 두 가지 백엔드(Backend) 개발 프로젝트에서 얻었습니다.

하나는 아키텍처(Architecture)와 테스트 코드(Test Code)가 어느 정도 짜여 있는 개발 도중의 프로젝트에 참여한 것입니다. 사용된 언어나 프레임워크는 다뤄본 적이 없었고, 캐치업(Catch-up)도 적당히 하며 우선 이슈(Issue)를 처리하는 것이 요구되었습니다.

그곳에서 연발했던 것이 "기존 구현을 참고하여 이 이슈를 구현해줘"라는 프롬프트(Prompt)였습니다. 생성된 코드를 읽고 셀프 리뷰(Self-review)를 거친 뒤 PR을 제출했기에, 개별 기능이 무엇을 하고 있는지는 이해하고 있었습니다. 하지만,

  • 왜 이러한 구현이 되었는가
  • 이 코드는 전체 안에서 어떤 위치에 있는가

이 부분을 전혀 이해하지 못한 채 프로젝트를 마쳐버렸습니다.

또 다른 하나는 완전히 제로 베이스에서 기술 선정이나 아키텍처 결정을 스스로 할 수 있는 프로젝트입니다. 이 역시 사용하는 언어나 프레임워크가 결코 경험이 풍부하다고 할 수 없는 상태에서의 시작이었습니다.

다만 이번에는 아키텍처나 데이터베이스(Database), 엔드포인트(Endpoint) 설계를 제대로 배우고 깊이 고민한 뒤 구현에 착수했습니다. 그러자 AI에 대한 프롬프트나 리뷰에 자신의 의지나 고집, 즉 「사상」이 깃들게 되었습니다.

이렇게 되면 AI가 말하는 대로 코드를 받아들이는 일이 없어집니다. AI의 제안에 자신의 설계 의도를 부딪쳐 수정하게 하거나, 자신의 판단이 정말 옳은지 불안해하며 조사하기도 합니다. 그런 행동이 늘어나면서 배움의 기회가 단번에 증가했습니다.

여기서 서두의 질문으로 돌아가겠습니다. 왜 ①은 배우지 못했고, ②는 배울 수 있었을까.

차이는 사상을 「먼저」 가지고 있었는지 여부입니다. 사상을 먼저 가지고 있으면 두 가지 일이 일어납니다.

하나는 사상이 척도(物差し)가 된다는 것입니다. AI의 출력을 그대로 채택할지 수정할지, 스스로 판단할 수밖에 없게 됩니다. 그 과정에서 위화감이나 의문이 생기고, 이를 조사하고 배워나가게 됩니다. 반대로 사상이 없다면 출력된 코드를 대조해 볼 기준이 없습니다. 그래서 나중에 한 줄씩 읽어봐도 납득(腹落ち)이 되지 않는 것입니다.

또 하나는 코드에 사상이 깃든다는 것입니다. 설령 AI가 작성한 줄이라도, 그 설계 판단 하나하나에는 자신의 의지가 담겨 있습니다. 그렇기에 완성된 코드에 대해 "내 것이다"라는 소유감이 생깁니다. 이는 ①에서 맛보았던 "내가 작성한 것이 아니기에 납득되지 않는다"는 감각과는 정반대입니다. 소유감이 있기 때문에 납득하게 되고, 더 좋게 만들고 싶고, 더 깊이 알고 싶다는 마음이 생깁니다. 이렇게 이해가 진전됩니다.

①에서 제가 하고 있었던 것은 바로 후배들과 똑같은 "사후적인 이해"였습니다. 척도도 없고, 소유감도 없습니다. 반면 ②에서는 설계를 통해 얻은 사상이 척도가 되었고, 그 사상이 깃든 코드에 소유감이 생겨나고 있었습니다. 이 차이였다고 생각합니다.

만약을 위해 보충하자면, 여기서 말하는 사상은 기술 철학 같은 거창한 것이 아닙니다.

  • 책임 분리(Separation of Concerns)・API 설계・디렉토리 구성・테스트・유지보수성 등을 "나는 이렇게 하고 싶다"라고 생각할 수 있는 고집이나 의지

물론, 0에서 1을 만드는 프로젝트와 기존 코드에 참여하는 프로젝트는 캐치업(Catch-up)의 난이도가 크게 다릅니다. 그럼에도 본질은 같으며, 그 프로젝트에 깃든 사상을 자신 안에 녹여낼 수 있었느냐에 달려 있습니다. ①의 프로젝트에서도 기존 설계를 해독하여, 이 코드를 작성한 사람이 어떤 사상으로 개발했는지를 읽어낼 수 있었다면, 그것을 따르거나 자신의 사상과 부딪혀보며 타인의 사상까지 자신의 것으로 만들 수 있었을 것입니다.

여기서 현실적인 벽에 부딪힙니다. 저는 이 사상을 첫 개인 개발에서는 에러와 구현의 시행착오 속에서, 이후의 프로젝트에서는 설계나 요구사항을 웹사이트나 서적, AI와의 대화(壁打ち)를 통해 결정해 나가는 과정에서 익혀왔습니다.

하지만 초보자에게는 이 두 가지 모두 어렵습니다. 시행착오는 이제 AI에게 빼앗겨 버렸고, 설계나 요구사항을 처음부터 결정하는 것은 짐이 너무 무겁습니다.

그래서 우리 경험자의 차례입니다. 초보자가 사상을 스스로 얻을 수 없다면, 첫 씨앗만이라도 우리가 건네주면 됩니다.

구체적으로는, 초보자가 AI로 구현에 들어가기 전에 다음 3단계를 거칩니다.

  • 약간의 이론 학습(座学)을 한다. 설계나 사고방식 등 사상의 출발점이 되는 지식을 조금 미리 배워둔다.
  • 그 내용을 프롬프트(Prompt)에 포함시킨다. 배운 사상을 AI에 대한 지시에 반영한다.
  • AI의 출력을 이론 학습 내용과 대조한다. "배운 내용과 어긋나지 않는가?"를 확인하는 시간을 갖는다.

이것은 얼핏 보면 처음에 실패했던 "한 줄씩 이해시키기"와 비슷해 보입니다. 하지만 결정적으로 다른 점은 순서입니다. 사후적인 이해에는 대조할 기준이 없었지만, 이 3단계에서는 이론 학습으로 얻은 사상이 앞에 있기 때문에 AI의 출력을 측정할 수 있습니다. 그래서 위화감이 생기고, 조사하는 동기가 되며, 배움이 되는 것입니다.

이론 학습의 지식이 그대로 사상의 씨앗이 되어, 프롬프트나 리뷰를 통해 코드에 깃듭니다. 나아가 그 지식을 초보자가 스스로 더 깊이 조사하기 시작했다면, 이미 사상을 혼자서 키워나가고 있다는 증거입니다.

초보자에게 첫 알갱이를 심어주고, 꽃을 피울 수 있도록 돕는다. 그것이 AI 시대 경험자의 역할이라고 생각합니다.

이 글은 작년에 후배들에게 가르쳤던 일에 대한 반성에서 시작되었습니다.

AI에게 시행착오를 빼앗긴 만큼, 지금 초보자의 프로그래밍 학습은 과거보다 더 어려워졌다고 생각합니다. 그렇기에 가르치는 입장에서 할 수 있는 일 또한 변해야 할 것입니다. 선배로서 무엇을 할 수 있을지, 앞으로도 열심히 찾아 나가고 싶습니다.

여기까지 읽어주셔서 감사합니다!

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0