[태그:] 코딩독학

  • AI 시대, 코딩 공부법 – 나만의 AI 에이전트 튜터 시스템 만들기

    AI 시대, 코딩 공부법 – 나만의 AI 에이전트 튜터 시스템 만들기

    지난 1편에서는 AI를 활용해 두꺼운 코딩 서적을 효율적으로 요약하는 방법을, 2편에서는 그 지식을 ‘머슬 메모리’ 수준으로 체화하기 위한 반복 연습의 중요성을 다뤘습니다.

    하지만 같은 문제만 반복하다 보면 뇌가 지루해집니다. 처음엔 집중이 잘 되다가도, 세 번째 반복쯤 되면 “이거 아까 본 건데…”라는 생각이 들기 시작하죠.

    그렇다면 AI가 매번 다른 맥락과 형태로 문제를 던져준다면 어떨까요?

    저는 실제로 그런 시스템을 만들어서 쓰고 있습니다. 오늘은 그 경험을 공유하려 합니다.


    내가 만든 ‘Learning Engine’

    저는 AI 에이전트를 활용해서 개인 맞춤형 코틀린 학습 시스템을 구축했습니다. 이름은 좀 거창하지만 ‘Learning Engine’이라고 붙여봤습니다.

    작동 방식은 간단합니다. 학습하고 싶은 주제를 선택하면, AI가 해당 주제에 대한 퀴즈를 출제합니다. 같은 개념이라도 매번 다른 형태의 문제가 나옵니다.

    복습 여부를 묻는 화면이 나옵니다.

    다음으로 학습 모드를 선택합니다. 개념이 익숙하지 않다면 퀴즈 모드로, 이미 익숙하다면 드릴 모드로 진행합니다.

    AI가 선택한 섹션 내용을 기반으로 문제를 출제합니다.

    정답을 맞히면 간결한 해설과 함께 다음 문제로 넘어가고, 틀리면 오답이 자동으로 기록됩니다. 나중에 이 오답 목록만 모아서 집중 복습할 수 있습니다.


    왜 이런 구조가 효과적일까?

    단순히 “AI한테 문제 내달라고 하면 되는 거 아냐?”라고 생각하실 수 있습니다. 저도 처음엔 그렇게 생각했습니다. 하지만 막상 해보니, 무작정 질문하는 것과 체계적인 시스템을 갖추는 것은 완전히 다른 경험이었습니다.

    1. 구조화된 지식 베이스

    이 시스템의 핵심은 RAG(검색 증강 생성) 패턴의 초소형화라고 할 수 있습니다.

    거창한 벡터 데이터베이스를 쓰는 대신, 제가 직접 정리한 ‘구조화된 마크다운 노트’를 AI의 컨텍스트로 주입합니다. AI는 이 노트를 ‘정답지’로 삼아 문제를 출제합니다.

    덕분에 AI의 고질적인 문제인 환각(Hallucination) 없이, 제가 의도한 커리큘럼 범위를 정확히 지키면서 무한한 변형 문제를 만들어낼 수 있습니다.

    핵심은 ‘AI에게 무엇을 가르칠지, 명확한 텍스트 범위를 정해주는 것’입니다.

    2. 아웃풋을 강제하는 구조

    2편에서 강조했듯이, 진정한 학습은 ‘읽기’가 아니라 ‘출력하기’에서 일어납니다.

    이 시스템에는 두 가지 모드가 있습니다:

    • 퀴즈 모드: 4지선다, 단답형 등 객관적으로 정답을 확인하는 방식
    • 드릴 모드: 직접 코드를 타이핑하거나, 개념을 입으로 설명해보는 방식

    특히 드릴 모드에서는 AI가 “이 함수를 작성해보세요”라고 던지고, 제가 직접 코드를 입력하면 피드백을 줍니다. 손가락이 기억할 때까지 반복하는 것, 이게 머슬 메모리의 본질이라고 생각합니다.

    3. 오답 즉시 기록

    틀린 문제는 자동으로 주제별로 분류되어 저장됩니다.

    대부분의 기존 학습 앱에서는 오답을 자동으로 체크해주는 기능은 있지만, 왜 틀렸는지, 어떤 개념이 약한지에 대한 분석이 약해서 개인화된 학습 경험을 받기가 어렵습니다.

    이 시스템에서는 틀린 문제가 자동으로 주제별로 분류되어 저장됩니다. 단순히 “틀렸다”는 기록이 아니라, 어떤 개념에서 약한지 한눈에 파악할 수 있어서 나중에 약점만 골라서 집중 복습할 수 있습니다.


    시스템의 구조

    간단히 도식화하면 이렇습니다:

    • 구조화된 노트: 제가 공부하면서 정리한 핵심 요약 + 연습 문제
    • AI 에이전트: 노트를 기반으로 퀴즈 출제, 피드백 제공
    • 학습 기록: 세션별 통계, 오답 노트 자동 저장

    이 구조가 강력한 이유는, 노트만 바꾸면 다른 언어/프레임워크 학습 엔진으로 바로 전환할 수 있다는 점입니다. 지금은 코틀린이지만, Python이나 React 노트를 넣으면 그대로 활용 가능합니다.

    앞으로의 계획

    현재 이 시스템은 제 로컬 환경에서만 동작합니다. 하지만 구조가 잡혀 있어서, 추후 웹 서비스로 확장하는 것도 충분히 가능합니다. 좀 더 유용성이 입증되고 완성도가 높아지면 다양한 코딩 언어, 어쩌면 다른 주제의 학습에도 활용할 수 있도록 발전시켜 보려 합니다.


    마무리: 시리즈를 돌아보며

    1편에서 3편까지 이어진 이 시리즈의 핵심을 정리하면:

    포스트핵심 메시지
    1편AI로 정보 수집 시간을 단축하자 (요약)
    2편그래도 체화는 반복 연습이 필수 (머슬 메모리)
    3편반복을 AI 시스템으로 자동화하자 (에이전트 튜터)

    결국 AI 시대의 학습법은 이렇게 요약할 수 있을 것 같습니다:

    입력(읽기)은 AI에게 맡기고, 출력(설명하기, 타이핑하기)은 내가 직접 한다.

    이 원칙을 지키면서 AI를 활용한다면, 오히려 AI 없이 공부할 때보다 더 깊이 있는 실력을 쌓을 수 있다고 믿습니다.

    긴 시리즈 읽어주셔서 감사합니다. 궁금한 점이나 의견은 댓글로 남겨주세요!

  • AI 시대, 코딩 공부법 – 머슬 메모리화

    AI 시대, 코딩 공부법 – 머슬 메모리화

    지난 1편에서는 AI를 활용해 두꺼운 코딩 서적을 효율적으로 요약하고 학습하는 방법을 소개했습니다. 코딩 서적에 특화된 요약 프롬프트를 제시했었죠.

    이번 편에서는 그렇게 배운 내용을 어떻게 빨리 내 것으로 내재화시킬 수 있는지를 살펴보겠습니다. 사실 이 주제는 코딩 학습뿐만 아니라, AI가 작성해준 결과물을 어떻게 하면 온전히 내 것으로 만들 수 있느냐에 대한 탐구입니다.

    이제 우리는 AI가 결과물을 대신 만들어주는 편리함에 익숙해지면서, 역설적으로 ‘내 실력’을 어떻게 쌓아야 할지 혼란을 겪고 있습니다. AI의 결과물에 의존하다 보면 개인의 사고력과 문제 해결 능력이 오히려 퇴행하는 듯한 느낌을 받기도 하고, 지식이 나의 두뇌를 거치지 않고 곧바로 화면으로 출력되는 과정에서 결과물을 검증하고 개선할 ‘비판적 감각’이 마비되는 실질적인 위협을 마주하고 있습니다.

    코드가 동작은 하지만 정작 “왜 이렇게 작동하는가?”에 답하지 못한다면, 문제가 생길 때마다 다시 AI에게 맡기는 패턴이 반복되면서, 결국 AI 없이는 한 발자국도 나아가지 못하는 상황에 빠지고 점점 더 자신감을 잃게 될 것입니다.

    그래서 더욱 중요해진 것이 바로 ‘어떻게 내 것으로 만드느냐’의 문제입니다. (이 부분은 추후 별도 포스트로 더 다루는 게 좋을 것 같네요.)


    잠깐, 왜 여전히 코딩을 배워야 할까요?

    본격적인 이야기에 앞서, 다시 한번 코딩을 아직도 배워야 하는 이유를 짚어보려 합니다.

    최근 채용 공고를 보면 AI 활용 능력이 필수 요건으로 명시된 경우가 점점 늘어나고 있습니다. 하지만 그렇다고 해서 코딩 테스트가 사라지진 않을 것이라고 봅니다. 그 이유는 다음과 같습니다.

    사람이 ‘직접’ 코딩을 할 일이 적어지는 것이지, 코딩 자체를 몰라도 되는 것은 아니기 때문입니다. 많은 분야에서 AI가 더 많이 활용되겠지만, 결국 그 분야에 대한 전문적 지식을 가진 사람만이 AI에게 정확한 지시를 내리고 결과물을 감독할 수 있을 테니까요.


    코딩은 자전거 타기다

    저는 무언가를 배울 때 변하지 않는 원칙이 하나 있다고 믿습니다.

    어떤 대상에 익숙해진다는 것은, 우리의 뇌와 몸이 모두 그것을 무의식적으로 수행할 수 있는 단계에 도달했음을 의미합니다. 자전거 타기를 유튜브 영상으로 배울 수는 있지만, 실제로 넘어지지 않고 달리기 위해서는 내 몸에 감각을 새기는 단계적인 연습이 반드시 필요합니다.

    코딩도 자전거 타기와 비슷하다고 생각합니다. 단계적인 목표 연습과 훈련이 필요하죠.

    기술이 아무리 발전해도, 무언가를 배운다는 것의 본질인 ‘이해와 반복적인 연습을 통한 체화’는 변하지 않을 것입니다.


    어떻게 연습할까?

    1편에서 AI의 도움을 받아 코딩 서적을 읽고 요약하는 방법을 설명했습니다. 이번엔 다시 AI의 도움을 받아서 연습 루틴에 사용할 질문과 코딩 문제들을 만들어보겠습니다.

    저는 아래와 같은 형식으로 코틀린 학습 루틴 문서를 만들어 활용했었습니다.

    매일 이 문서를 보고 문제를 푸는 것을 반복합니다. 제 머리와 손이 무의식적으로 반응할 수 있을 때까지 반복하는 것이죠. 마치 우리가 익숙한 언어로 “1에서 10까지 더하는 코드”를 아주 쉽게 짜는 것처럼, 새로운 언어에서도 그 정도의 익숙함을 성취하는 것이 목표였습니다.

    실제 제가 학습할 때 사용했던 노트와 연습 문제의 샘플을 공유합니다. 어떤 식으로 정리하고 문제를 만들었는지 직접 확인해보세요.


    퀴즈 만들기

    단순히 눈으로 보고 바로 답을 말할 수 있는 문제들입니다. 예를 들어 아래와 같은 기본 사항에 대한 요약이 있다면, 이를 기반으로 퀴즈를 구성할 수 있습니다.

    기초 요약 예시 (코틀린)

    기본 타입

    표준 라이브러리 정수 floorDivmod 메서드:

    println(7.floorDiv(4))  // 1
    println(7.mod(4))       // 3
    

    Byte와 Short의 단항 연산 결과는 Int:

    val byte: Byte = 1
    -byte // -1: Int
    

    비트 연산

    13 shl 2    // 왼쪽 시프트
    13 ushr 2   // 부호 없는 오른쪽 시프트
    13 and 19   // 비트 AND
    13 or 19    // 비트 OR
    // 그 외: xor, inv
    

    문자 타입 Char

    • 유니코드 한 글자, 16비트
    • 수 변환 메서드: toByte()toShort()toInt()toLong()toFloat()toDouble()toChar()

    비교와 동등성

    println(Double.NaN == Double.NaN)  // 결과는?
    println(Double.NaN < Double.POSITIVE_INFINITY)  // 결과는?
    

    기초 퀴즈 예시

    위의 요약을 바탕으로, 저는 아래처럼 기초 퀴즈를 만들었습니다.

    이런 기초적인 퀴즈들은 굳이 AI의 도움을 받지 않고도 충분히 스스로 작성할 수 있습니다. 오히려 내가 타겟팅하는 수준에 맞춰 직접 문제를 출제하는 과정 자체가 훌륭한 복습이 되기 때문입니다.

    아래 내용은 제가 코틀린을 학습할 때 실제로 사용했던 문법 위주의 퀴즈들입니다. 여러분이 배우는 언어에 맞춰 비슷하게 구성해 보시면 좋을 것 같습니다.

    [기본 타입]

    • 7 / 4 반올림? (floorDiv)
    • 7 / 4 나머지? (mod)

    [비트 연산]

    • 부호 있는 shift: 13을 오른쪽으로 2비트 시프트?
    • 논리곱, 논리합?

    [문자 타입]

    • Char는 어떤 코드이고 몇 비트?

    [수 변환]

    • Byte, Short, Int, Long, Float, Double, Char로 변환하는 메서드는?

    [심화]

    • Unit과 Nothing의 차이는?

    코딩 문제 만들기

    퀴즈가 단답형 “지식”을 확인하는 과정이라면, 코딩 문제는 실제로 손을 움직여 코드를 직접 짜보는 훈련입니다.

    저는 비슷한 유형의 코드를 여러 번 반복해서 작성했습니다. 특별한 기법이 있는 게 아니라, 그냥 뇌와 손이 익숙해질 때까지 반복하는 것이 전부였습니다.

    // 이 코드의 실행 결과는? 에러가 난다면 몇 번째 줄?
    val a: Int = 1000
    val b: Int = 1000
    println(a === b) // 결과는?
    

    이런 식으로 “틀리기 쉬운 예제”나 “헷갈리는 문법”을 직접 문제로 만들고, 나중에 다시 풀어봅니다. 내가 짠 코드를 내가 다시 검증하는 ‘셀프 코드 리뷰’의 효과도 있습니다.


    결론: 우직함이 가장 빠른 지름길일 때가 있다

    1편에서는 AI를 활용해 요약 시간을 단축하는 ‘효율’을 이야기했지만, 2편에서는 역설적으로 ‘우직한 반복’을 강조했습니다.

    요약은 AI에게 맡겨 시간을 아끼더라도, 그 지식을 내 것으로 만드는 과정만큼은 직접 땀 흘려야만 얻어지는 영역이라고 확신하기 때문입니다.

    이 ‘머슬 메모리’가 쌓여 있어야, AI가 짜준 코드를 읽을 때 “어, 이 부분 좀 이상한데?”라는 감이 생깁니다. 그 감이 있어야 AI와 원활하게 협업할 수 있다고 생각합니다.


    3편 예고: 하지만 이 반복조차 지루하다면? (System & Agent)

    위처럼 진행했다면 새로운 개발 언어에 대한 머슬 메모리가 어느 정도 확보되었을 것입니다. 하지만 같은 문제만 반복하다보면 뇌가 지루함을 느끼고 학습 효율이 떨어집니다.

    그렇다면 이 ‘반복 연습’을 어떻게 더 효율적으로 할 수 있을까요?

    여기서 AI가 다시 유용해집니다. 이제 AI는 우리의 훌륭한 개인 교사가 되어줄 만큼 발전했습니다. 같은 개념이라도 매번 다른 맥락과 형태로 문제를 던져줄 수 있고, 틀린 문제가 생기면 그걸 다시 템플릿화해서 연습 루틴에 추가할 수도 있으니까요.

    이 강력한 기술을 우리의 전통적인 Top-down 방식 학습에 얼마나 효율적으로 접목할 수 있느냐가 관건입니다. 이것이 앞으로 개인의 능력과 성과를 가르는 중요한 변수가 될 것이라고 생각합니다.

    다음 편에서는 AI 에이전트를 활용해서 나만의 ‘코딩 학습 매니지먼트 시스템’을 구축하는 방법을 소개하려 합니다. 기대해주세요.