블로그

  • AI 시대, 코딩을 어떻게 배워야 할까? – 이론 학습의 10배 효율화

    AI 시대, 코딩을 어떻게 배워야 할까? – 이론 학습의 10배 효율화

    “이제 코딩은 끝났습니다.”

    최근 유튜브나 미디어에서 심심치 않게 들리는 이야기입니다. 실제로 젠슨 황 엔비디아 CEO도 “더 이상 프로그래밍을 배우지 않아도 되는 시대가 올 것”이라고 말했었죠.

    20년 넘게 개발자로 살아오면서 DOS 시절부터 웹, 모바일, 그리고 지금의 AI 시대까지 수많은 기술 변화를 겪었습니다. 하지만 최근 1~2년 사이의 변화는 그동안의 변화를 모두 합친 것보다 충격적입니다.

    초기 ChatGPT는 구글링을 조금 더 편하게 해주는 ‘검색 보조 도구’ 수준이었습니다. 하지만 O1 Pro와 Gemini 2.0 같은 ‘추론형 AI(Chain of Thought)’가 등장하면서 판도가 완전히 바뀌었습니다. 이들은 복잡한 요구사항을 스스로 분석하고, 아키텍처를 설계하며, 심지어 개발자가 놓친 예외 상황까지 찾아냅니다.

    이제 “처음부터 끝까지 직접 코딩하는 것”은 비효율적인 일이 되었습니다. 그렇다면 개발자는 사라지게 될까요? 아니면 우리는 더 이상 코딩을 배울 필요가 없을까요?

    현직 개발자의 관점에서, AI 시대에 우리가 코딩을 ‘다르게’ 배워야 하는 이유와 방법을 이야기해보려 합니다. 그 첫 번째는 ‘이론 학습의 효율화’입니다.


    코딩을 배울 필요가 없다?

    이제 대부분의 코딩을 AI가 대신할 수 있습니다. 자극적인 일부 영상들은 코딩의 종말을 얘기하기도 합니다. 코딩을 몰라도 앱을 만들 수 있다는 것이죠. AI 중심 코딩을 지향하는 현직 개발자로서 저는 이렇게 생각합니다.

    AI만으로 충분한 앱 vs 개발자의 개입이 더 필요한 앱

    단순한 앱 개발은 AI만으로 충분할 수 있습니다. 하지만 복잡한 구현을 요구하는 앱은 AI만으로 구현하는 건 쉽지 않습니다.

    현재 가장 발전된 AI도 문제 복잡도가 높아지면 오판을 하는 경우가 많기 때문입니다. 적당한 선에서 답을 제시하기도 하고 실수를 방어하기 위한 검증 단계들을 스스로 수정해서 통과하게 만들기도 합니다.

    따라서 복잡하고 규모있는 앱을 개발하기 위해서는 여전히 인간의 개입이 필요하다고 봅니다. AI의 설계를 검증해야 하고, 복잡도를 낮추기 위해 작은 단위로 분할하는 리팩토링, 필요시 직접 분석과 검증등 개입이 필요합니다.

    코딩 책 학습이 여전히 유용한 이유

    최근 코딩 학습 트렌드는 AI를 활용해 “필요한 기능만 빠르게 구현”하는 실용주의와 실행 중심(Action-Oriented)으로 흐르고 있습니다. 책을 처음부터 끝까지 진득하게 보는 방식은 AI 시대에 맞지 않는, 너무 느린 방식처럼 느껴질 수 있습니다.

    하지만 무언가 새로운 것을 배울 때, 검증된 전문가가 설계한 체계적인 구조(Top-down) 안에서 학습하는 것은 여전히 유효하며 강력합니다. 파편화된 정보를 그때그때 검색해서 붙여 넣는 방식으로는 전체적인 아키텍처를 이해하거나 깊이 있는 응용력을 기르기 어렵기 때문입니다.

    AI는 훌륭한 ‘조수’이자 ‘가속 부스터’입니다. 책이라는 견고한 뼈대 위에서 AI를 활용해 살을 붙이고 속도를 높인다면, 기초와 효율이라는 두 마리 토끼를 모두 잡을 수 있습니다.

    AI를 기반으로 코딩 책 학습

    저는 주로 C++, Java, Python, Javascript를 사용해서 개발을 했습니다. 작년에는 네이티브 모바일 앱 개발을 위해 코틀린을 학습했었습니다. 그 과정에서 요즘 시대에 맞는 코딩 학습법은 무엇일까라는 고민을 많이 했었습니다.

    코딩 책은 보통 1000페이지가 넘는 책이 많습니다. 사실 나중에 알아도 될 TMI들이 많이 포함되어 있어서 일일이 정독하고 요약하는 하는 것만해도 시간이 많이 소요됩니다. 그래서 저는 공부할 챕터를 스마트폰으로 촬영하거나 캡처한 뒤, 이를 AI에게 던져주고 요약을 시키는 방식을 사용했습니다. 그리고 이 요약을 바탕으로 논의를 하며 학습을 진행했습니다. 여기서 NotebookLM을 활용할 수도 있죠. 그당시 저는 NotebookLM을 사용하지 않던 시기여서 아래 프롬프트를 책 내용을 요약하는 과정에서 활용했었습니다.

    # 코딩 책 요약 프롬프트
    
    당신은 프로그래밍 기술 서적 스터디를 돕는 AI 파트너이다. 지금부터 내가 업로드하는 책의 페이지 이미지를 보고, 아래의 규칙에 따라 노트(노션/에버노트) 정리용으로 내용을 변환하고 요약한다.
    
    [요약 목적]
    1. 책의 해당 페이지들을 정독하기 전에 미리 개념을 이해하는 데 도움을 준다.
    2. 나중에 책을 다시 읽지 않고 요약만 보고도 핵심 내용을 복습할 수 있다.
    
    [작업 규칙]
    1. 텍스트 변환: 먼저 이미지에 있는 모든 텍스트를 빠짐없이 텍스트 형식으로 변환한다.
    
    2. 상세 요약: 변환한 텍스트 전체 내용을 '에버노트용 요약' 형식으로 정리한다.
        * 제목: 요약 내용에 어울리는 소제목을 만든다.
        * 본문 구성: '개요 → 핵심 개념 → 구체적인 예제' 순서로 구성한다.
            * [중요] 개요의 시작: 본격적인 개념 설명에 앞서, 만들고자 하는 최종 결과물, 해결하려는 문제, 또는 기능의 전체적인 흐름을 '목표' 또는 '요구사항'으로서 명확하게 먼저 제시한다.
        * 본문 형식: 기본적으로 불릿 리스트(`*`)로 정리한다.
        * 작성 스타일: 문장은 ~이다, ~함, ~해야 함처럼 간결한 노트 스타일로 작성한다.
        * 성능 관련 세부사항 강조: 텍스트에 성능, 메모리, 속도 등과 관련된 미세한 차이나 장단점에 대한 언급이 있을 경우, 일반적인 상황에서 무시할 수 있는 수준이라도 반드시 요약에 포함시킨다.
        * 핵심 기능의 확장 및 응용 방법 포함: 책에서 소개된 핵심 기능을 확장하거나 다른 기능과 조합하여 커스터마이징하는 방법에 대한 설명이 있다면, 이는 고급 활용법에 해당하므로 반드시 요약에 포함시킨다.
    
    3. 코드 예제 포함: 요약 중간에 나오는 모든 코드 예제(인터페이스 정의 등 짧은 코드 포함)는 책의 예제가 그대로 포함되어야 한다.
        * 코드 블록: 전체 코드 예제를 코드 블록으로 그대로 포함한다.
        * 번호 부여: 코드 예제마다 "코드 예제 1", "코드 예제 2"처럼 번호를 붙여.
        * 불릿 리스트 요약: 코드 블록 바로 아래에, 해당 코드의 동작과 핵심을 설명하는 불릿 리스트(*) 요약을 추가해.    

    실제로 코틀린 학습을 진행하면서 AI가 생성한 요약 결과를 검토하고, 부족한 부분을 채우기 위해 프롬프트를 계속 개선해 나갔습니다. 위의 프롬프트는 그 과정에서 다듬어진 최종 버전으로, AI가 에버노트나 노션에 저장하기 좋은 포맷(마크다운)으로, 핵심 내용을 누락 없이 요약하도록 유도하는 지침들을 담고 있습니다.

    최근 많이 사용하는 NotebookLM 역시 디폴트 프롬프트만으로 요약을 시도하면 내가 원하는 디테일이 누락되는 경우가 많습니다. 결국 내가 원하는 결과를 얻기 위해서는 정교한 프롬프트 엔지니어링이 필요합니다. 여러분이 사용하는 AI 모델 또는  NotebookLM에서 필요에 따라 약간씩  커스터마이징 한다면 훨씬 만족스러운 나만의 요약 비서를 만들 수 있을 것입니다.

    저렇게 정리된 요약을 먼저 읽고 난 후, 궁금한 점들을 AI와 논의하며 파악했습니다. 그리고 책을 파고들기보다 요약 위주로 학습했습니다. 이렇게 하면 책의 방대한 내용 중 불필요한 TMI는 건너뛰고 핵심만 빠르게 흡수할 수 있어 학습 효율이 비약적으로 높아졌습니다.


    2편 예고: 이론을 넘어 ‘머슬 메모리’로

    책을 다 읽었다고 그것이 온전히 내 것으로 내재화되진 않죠. 책을 몇 번 더 읽을 수도 있겠지만 코딩은 결국 자전거를 타거나 어떤 운동을 배우는 것처럼, 무의식적으로 그걸 자연스럽게 구사할 수 있을만큼의 머슬 메모리화가 필요합니다.

  • Hello World! 개발자의 논리적 시선으로 바라본 세상의 인사이트

    Hello World! 개발자의 논리적 시선으로 바라본 세상의 인사이트

    새로운 시스템의 시작

    컴퓨터 프로그래밍을 처음 배울 때, 개발자들은 가장 먼저 화면에 이 문장을 띄웁니다.

    “Hello, World!”

    단순히 “안녕, 세상아!”라는 인사가 아닙니다. “이제 이 시스템이 세상과 소통할 준비가 되었음”을 알리는 시작의 표시입니다.

    오늘 저는 이 블로그, life_logic에 저의 첫 번째 코드를 입력합니다.
    개발자의 본질인 ‘논리(Logic)’라는 도구로, 우리가 마주하는 일상과 정보를 분석하고 해석하는 ‘생각의 저장소’를 시작합니다.


    정보의 홍수, 우리는 ‘이면’을 보고 있는가?

    우리는 매일 많은 양의 정보와 경험에 노출됩니다. 유튜브 영상, 뉴스 기사 등을 통해 사회 현상, 과학, 이런저런 서비스와 프로덕트를 접하게 됩니다. 이러한 정보의 홍수 속에서 그저 소비만 한다면, 우리는 그것들에 압도되고 잠식되어 역으로 정보의 소비 대상이 될 것입니다.

    그래서 우리에게는 인사이트가 필요합니다. 인사이트는 단순히 정보를 받아들이는 것을 넘어, 그 안에 숨겨진 맥락과 의미를 읽어내는 힘입니다. 정보의 표면이 아닌 이면을 볼 수 있을 때, 비로소 우리는 정보에 휘둘리지 않고 주도적으로 활용할 수 있을 것입니다.


    발견되기를 기다리는 일상의 씨앗들

    앞으로 이곳에 저의 논리적 시선이 닿은 다양한 이야기를 기록하려 합니다.
    거창한 주제가 아닐 수도 있습니다. 스쳐 지나가는 뉴스 한 줄, 흥미롭게 본 영상 하나가 저에게는 훌륭한 탐구의 씨앗이 됩니다. 그 씨앗을 논리라는 토양에 심고, 겉으로 보이는 현상 너머에 어떤 원리와 의도가 숨겨져 있는지 분석하여 그 결과물을 이곳에 공유하겠습니다.


    성장을 위한 탐구의 여정

    기록은 기억을 이깁니다.
    그리고 파편화된 정보를 나만의 언어와 논리로 재조립하는 과정이야말로 진정한 성장의 길이라고 믿습니다.

    세상 어딘가에는 아직 발견되지 않은, 하지만 우리 삶을 더 효율적이고 단단하게 만들어줄 인사이트들이 숨어 있습니다.

    life_logic은 이 숨겨진 보물을 찾아내는 탐구자입니다.

    함께 생각하고, 함께 성장하겠습니다.