Post

개발자라면 꼭 알아야 할 AI 기술 활용법 영상 정리 및 간단한 사담

AI 기술의 발전, 개발자의 역할 변화, 그리고 AI 코딩 도구 활용 방안에 대한 논의와 정리입니다.

개발자라면 꼭 알아야 할 AI 기술 활용법 영상 정리 및 간단한 사담

영상 링크

영상 내용

현재 개발자들은 AI의 대혼란 시대에 직면해 있다.

500

500

개발자의 일자리가 사라진다는, 개발자의 일자리는 여전하다는

의견들이 설왕설래한다.

시니어 개발자가 위험하다는 의견도 존재한다.

=> 그야말로, 대혼란

확실한 것은 개발자는 더 이상 고정된 직능이 아니라, AI와 함께 계속 새롭게 정의될 유동적인 개념이 될 것이다.

AI 코딩 도구

모두가 동의하는 명확한 용어가 없다.

  • AI 코딩
  • AI 개발
  • 바이브 코딩
  • 증강 코딩

등등등

AI 코딩 레벨 스펙트럼

AI를 이용한 코딩은 매우 넓은 스펙트럼을 가지고 있다. 자율성 레벨에 따라 단계별 스펙트럼을 정의하였다. 링크

레벨 0 - 정적 도구

  • 린터, 포맷터 - 규칙 기반, 결정론적

레벨 1 - 토큰 수준 완성

  • 토큰 수준 완성 - 예) S만 입력해도 String을 자동으로 완성해주는 기능
  • 지역적인 맥락 기반 토큰, 단어 예측 (IDE)

레벨 2 - 블록 수준 완성

깃허브 코파일럿은 3년전에 나왔다…!

  • 블록 수준 완성 - 예) 라인을 완성하거나 메소드 전체를 완성하는 기능
  • Intellij 의 Inline Completion
  • Github Copilot Completion
  • Cursor Tab

인라인 자동 완성을 적극 활용

  • 인라인 자동완성은 직전 수락/거절 신호를 가중치로 사용, 로컬 캐시도 이용
  • 텔레메트리(제안, 수락/거절 로그)를 수집하여 수락 확률을 예측하는 CDHF 모델을 새롭게 학습한다.

CDHF : Context Decision with Human Feedback - 인간의 피드백을 기반해 강화학습

  • 별도 모델(랭커, 게이트 등등) 을 통해 파이프라인 앞단에 붙인다
  • 모델 자체를 재학습 시키지 않지만, 다양한 전략을 통해 제안 수락률 높이도록 설계

    레벨 3 - 의도 기반 채팅 에이전트

IDE 등에 통합된 형태

  • 자연어로 질문하거나 목표를 설명하면 에이전트가 코드 변경사항을 제안하는 대화형
  • Copilot ask, AI Assitant Ask, Cursor Ask

레벨 4 - 로컬 자율 에이전트 ( Local Autonomous Agent )

  • 기능 요구사항을 받아 에이전트가 스스로 계획을 세우고 여러 파일을 수정하며 테스트를 실행, 실패 시 수정 작업을 반복 수행한다.

예전에는 스프링 개발을 잘 못했지만, 이제는 엄청 잘한다.

  • JetBrains Junie, Cursor Agent, Copilot Agent, Claude Code, Gemini CLI

레벨 5 - 완전 자율 개발 에이전트 ( Fully Autonomous Dev Agent )

  • 작업의 선택부터 계획, 구현, 테스트 작성후 PR까지 생성하는 한명의 개발자처럼 행동

AI 개발 지원 도구

  • 전용 IDE: Cursor, Windsurf, Kiro
  • IDE 플러그인: Github Copilot, JetBrains AI Assistant/Junie, Jemini Code Assist, Amazon Q
  • 터미널/CLI 에이전트: Claude Code, Gemini CLI, Amazon Q CLI, Codex CLI
  • 리포지토리 통합형

인간-AI 협업

인간 개발자와 AI의 협업은 인간 주도와 AI 주도를 넘어 다양한 스펙트럼으로 존재한다.

-> 작업의 성격에 따라 최적의 협업 모델을 선택하고 전환할 수 있어야 한다.

AI-in-the-Loop (AI²L)

  • 보조자 : 조수, 비서, 코파일럿
  • 인간이 전체 개발과정을 완전히 통제
  • AI 는 작업을 더 효율적으로 만들기 위한 도구로 활용
  • AI 자율성 레벨 1-3 단계
  • 복잡한 도메인 문제를 다루거나 아키텍처와 같은 미묘한 판단이 요구되는 작업에 적합하다.

우리가 채팅을 통해 정보를 얻고 티키타카하는 형태이다.

Human-in-the-Loop (HITL)

사람이 Loop 안에 있는 형태

  • 감독받는 에이전트(The Supervised Agent)
  • AI 가 개발 프로세스를 주도하나, 주요 결정 단계마다 인간의 검증과 승인 필요

-> 우리가, Gemini-CLI 한테 물어보면, 코드를 작성하고 검토할지 물어보는 형태

Human-on-the-loop

사람이 Loop 위에 있는 형태이다.

  • 자율 에이전트
  • AI 가 자율적으로 작업을 수행
  • 인간은 감독관으로 필요할 때만 개입하거나, 최종 결과물 검토하는 역할
  • 자율성 레벨 4-5
  • Claude Code / Junie / Cursor 가 테스트 통과될 때 까지 코드를 수정하고 재시도
  • 제약 조건이 명확하고 반복적인 작업에 효과적

-> 어떤 조건을 가지고 일을 해야할지, 반복적인 작업을 맡기면 정말 잘해준다. ( 분신술, 병렬로 적절히 여러개 한번에 수행도 가능 )

=> 우리는 이 세 가지 모델 중 하나에만 머무르면 안된다. 작업의 성격과 복잡성에 따라 협업 모델을 유연히 전환하는 모드 전환자(Mode Switchers)가 되어야 한다.

AI 와 협업을 위한 아키텍처 설계

AI 와 협업을 하려면 어떻게 해야할까?? AI 만을 위한 아키텍처? AI 가 스스로 만드는 아키텍처? -> 아직까지의 얘기는 아니다.

AI 에게 TDD 를 해보라고 하면, 그냥 테스트 만들고 코드 만들고 통과도 한번에 한다. AI 에게는 굳이 이런 프로세스가 필요 없을수도 있는 것

공통적으로 나오는 얘기는 인간에게 좋은 아키텍처, 코드라고 한 것들이 AI 도 선호한다. 특히, 아직 AI 는 인터넷에 올린 코드 스니펫들을 학습했기에 평균적인 레벨에 수렴한다.

테스트 주도 개발(TDD)의 르네상스

Claude 와 같은 AI 전문 기업들도 툴을 만들때 TDD 를 선호한다고 한다.

사람이 코드를 만들고, AI 에게 통과를 시키는 것이 아닌 AI 에게 테스트를 만들어보고, 테스트를 통과 시키게 하는 것

요새는 타이핑 할 필요 없이 말로 해도 인식이 잘 되는 세상

왜 협업에 TDD 가 중요한가

  • 명확한 성공 기준 제시
  • 궁극적인 가드레일 역할 - AI 의 실수를 방지하는 안전장치

AI 는 일종의 슬롯머신 ㅋㅋ ( 오늘 나오는 코드와, 내일 나오는 코드가 매번 달라지니까 )

AI 지원 TDD 워크플로우

  • 인간의 프롬프트: 어떤 기능에 대해 실패하는 테스트 만들어줘
  • AI 의 테스트 생성
  • 인간의 검증: 생성된 테스트를 실행해서 예상된 이유로 실패하는지 확인
  • 인간의 요구: 테스트를 통과시켜줘, 단, 테스트 코드는 수정하지 마
  • AI 의 구현: 테스트가 통과할 때까지 필요한 코드를 작성하고 수정
  • 인간의 리뷰와 리팩토링
  • 코드 커밋

참고 링크

탐험과 활용

주변의 많은 회사들이 생산성에 관심을 가지고 있다. ( AI 가 50% 를 해주면, 개발자를 50% 더 안 뽑아도 되는거겠네?? 와 같이 - 개발자의 몸값은 몹시 비싸다… )

다들 AI 로 얼마나 빠르게 개발할 것인가. OR 생산성 이야기만 하고 있다…

이야기가 나올 수 밖에 없다. 사람이 하는 것보다 AI 가 1000배 정도 더 빨리 코드를 뽑아낼 수 있기 때문에 (AI 는 잠도 안잔다.)

=> 여기에는 딜레마가 존재한다.

강화학습의 탐험과 활용 딜레마

  • 뽑아먹기 ( explotiation ) 이익을 극대화하기 위해 현재까지 알려진 최선의 선택을 하는 걸 활용 / 이용

  • 탐험하기 ( exploration ) 현재까지 알려진 최선보다 더 나은 선택이 있을 가능성을 파악하기 위해 최선이 아닌 다른 선택을 찾아나가는 것

이 두가지의 밸런스를 적절히 해나가야 한다.

  • AI 는 생산성을 비약적으로 향상시키나, 동시에 개발자의 기술 정체 또는 퇴보에 대한 우려를 낳는다. 커서로 프롬프트를 몇번 하니, 개발이 끝났다. 오히려, React 나 Component 등 지식을 쌓을 수 없게 되고 AI 에 다시 의존하게 된다. -> 결국 전체 생상선이 떨어진다. ( 일을 잘 시켜야 하는데, 내가 아는 지식의 한계가 있어 그렇게 요청을 할 수 밖에 없게 된다… )

  • ⭐️ 즉각적인 생산성 추구와 지속적인 학습 및 기술 개발을 위한 의도적인 노력을 조화시키는 전략적 접근이 필요하다!!!
  • 궁극적으로 지속 가능한 성장과 높은 성과로 이어진다

바이브 코딩과 생상선 우선 접근 방식

실무에 쓰려고 하는 시도가 상당히 많이 생겨나고 있다.

  • 바이브 코딩은 단순히 속도에 관한 것이 아니다
  • 세부 구현에 따른 개발자의 인지부하를 의도 명세화 및 고수준 조정으로 전환하는 근본적인 변화
  • 접근성, 개발속도, 생산성 향상 그리고 의도 중심 개발
  • 개발자의 역할이 프로덕트 엔지니어, 의도 설계자, 크리에이티브 디렉터, 프롬프터, 가이드로의 전환이 될 수도… ( 그거 요청하는데 얼마 안걸리잖아? )

역량 강화 및 학습을 위한 AI

  • 학습 촉매제로서 AI 의 활용
    • 복잡한 코드 이해
    • 새로운 언어나 기술, API 학습

스택 오버플로우나, 오픈채팅방에 직접 물어보거나, 구글에 검색할 필요가 없어진다. AI 와 함께 학습하면서 더욱 성장해나갈 수 있는 것

레벨 3-5 단계에서 무조건 수락하는 습관은 좋지 않다

코드를 만들어줄 때, 더 설명을 원하십니까? ,이 코드는 ...로 구성되어 있습니다. 라고 해주는데 그냥 생각없이 수락하는 흔히 ‘딸깍딸깍’ 만 한다. (옆에 시니어 개발자가 지침과 피곤함, 짜증 없이 계속 알려주는데 내가 알아서 할게라고 하는 급)

  • Ask, Agent 모드에서 AI 에게 코드 생성을 요청하면
    • 요청한 내용을 정제하고
    • 어떤 계획을 가지고 문제를 풀지 보여주고
    • 각 단계마다 어떤 생각을 하는지 자세히 보여주고
1
2
나에게 아침마다 이 기술을 익히는데 필요로 하는 코딩 문제를 3개씩 내줘봐. ( 쉬운거,중간,어려운거 )
공식 문서 들어가서 이해하고, 번역해줘봐. ( 그거도 귀찮아. 3줄로 요약해줘봐 )

학습을 위한 전용 시간 확보

새로운 기술을 쓰기로 결정하면, 당장 코드를 짜는 시간이 아니라 연습할 수 있는 시간을 가지게 해줘야 한다. ( 시간을 안준다면, 개인 시간에서라도 해야 한다. 당연히. 우리는 전문가(프로)이다. 꾸준히 연습해야 하는 것 )

  • 조직과 개별 개발자는 탐험 모드에서 AI 도구를 사용할 특정 시간을 할당해야 한다
  • 도전적이거나 익숙하지 않은 영역 목표 설정
  • AI를 학습 파트너로 적극 활용

의도적 수련

  • 모든 방법은 AI 를 다양한 레벨로 활용해야 한다
  • 주기적으로 AI 를 개입시키지 않은 레벨 0 수준으로 개발해보기가 필요하다
  • 코드 카타 : 작은 프로그래밍 문제를 다양한 방법으로 풀어보기
  • 토이 프로젝트 및 재구현 : 자신이 직접 설계한 사이드 프로젝트를 만들고, 이를 여러가지 접근 방법이나 다시 만들어보고 재구성하는 시도

증강 개발자

증강 개발자의 성장 마인드셋

  • 인간의 지성과 AI 의 효율성을 능숙하게 결합하는 증강 개발자로 변화해야 한다
  • AI 는 계속 진화하고 있고, 이에 따라 개발자의 역할도 꾸준히 달라질 것이다

개발자는 결국 한동안은 필요할 것이다. 오히려, 개발자이기에 AI 와 더욱 성능을 낼수도 있을 것


가볍게나마 나의 사담

AI 가 너무 빠르게 발전하고 있다. 올해 2월달에 사이드 프로젝트를 하면서도 커서의 프론트엔드 구현 실력에 대해 감탄했었는데 이제는 그게 당연하다는 듯, 다른 MCP들과 통합해서 더욱 정교하게 또는 백엔드 까지 침범을 하고 있다.

그러면, 개발자는 이제 필요없어지는 걸까? 아무도 예상은 못하지만 ( 토비 조차도 ) 아직, 개발자의 시대는 남아있는거 같다. 물론, 그 모습이나 업무가 이전과 달라는 질 수 있더라도.

AI 를 사용하며 가장 크게 느낀점은 해낼 수 있는 능력은 매우 가파르게 성장하는걸 느꼈다. 여기서 해낼 수 있는 능력이란 우리가 원하는 것, 동작을 시키는 것 을 의미한다.

하지만, 그럴수록 이걸로 정말 괜찮은 걸까? 생각이 든다. AI 는 내가 어떻게 프롬프트를 구성하는지, 컨텍스트를 구성하는지 또는 AI 의 컨디션에 따라 천차만별의 코드가 구성이 된다.

코드가 더러워도 문제, 완벽해도 문제의 딜레마에 빠져든다. 한번 AI 가 더럽힌 코드는 정화를 하는데 매우 오래 걸린다, 추가로 사람이 아닌 AI 의 생각을 따라가야 한다. 사람이 짠 코드는 이거 왜 이렇게 하셨어요? 라고 묻거나, 주석이나, 이슈 를 찾아볼 수 라도 있다.

AI 한테는 이걸 어떻게 물어보지? 그때 컨텍스트, 그때 모델, 그떄 프롬프트를 거슬러 올라가서 물어봐야 하나? 설령 찾아서 물어보더라도, 완벽한 해답과 정답을 줄까??

완벽한 코드라면, 그 코드를 완벽히 체화시키지 않는다면 우리는 계속 AI 에 의존을 하게 될 수 밖에 없다. 옛날 TV 를 바보 상자라고 하던 것과 뭐가 다르단 말인가.

내가 생각하기에 당장은 이런 AI 의 환상과 오염을 중재해줄 사람이 필요하다. AI 에게 100% 의 신뢰를 할 수 있지 않더라면, 간섭과 관리를 그리고 사람이 발전을 해야만 한다.

위에서 토비가 말해준 것 처럼 AI 의 도움을 받되, 뽑아먹기만 하는게 아닌 학습과 탐험을 해나가는 사람이 되자.