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


개발자의 일자리가 사라진다는,
개발자의 일자리는 여전하다는
의견들이 설왕설래한다.
시니어 개발자가 위험하다는 의견도 존재한다.
=> 그야말로, 대혼란
확실한 것은
개발자는 더 이상 고정된 직능이 아니라, AI와 함께 계속 새롭게 정의될 유동적인 개념이 될 것이다.
모두가 동의하는 명확한 용어가 없다.
등등등
AI를 이용한 코딩은 매우 넓은 스펙트럼을 가지고 있다.
자율성 레벨에 따라 단계별 스펙트럼을 정의하였다. 링크
깃허브 코파일럿은 3년전에 나왔다...!
CDHF : Context Decision with Human Feedback - 인간의 피드백을 기반해 강화학습
IDE 등에 통합된 형태
예전에는 스프링 개발을 잘 못했지만, 이제는 엄청 잘한다.
인간 개발자와 AI의 협업은 인간 주도와 AI 주도를 넘어 다양한 스펙트럼으로 존재한다.
-> 작업의 성격에 따라 최적의 협업 모델을 선택하고 전환할 수 있어야 한다.
복잡한 도메인 문제를 다루거나 아키텍처와 같은 미묘한 판단이 요구되는 작업에 적합하다.우리가 채팅을 통해 정보를 얻고 티키타카하는 형태이다.
사람이 Loop 안에 있는 형태
-> 우리가, Gemini-CLI 한테 물어보면, 코드를 작성하고 검토할지 물어보는 형태
사람이 Loop 위에 있는 형태이다.
제약 조건이 명확하고 반복적인 작업에 효과적-> 어떤 조건을 가지고 일을 해야할지, 반복적인 작업을 맡기면 정말 잘해준다.
( 분신술, 병렬로 적절히 여러개 한번에 수행도 가능 )
=> 우리는 이 세 가지 모델 중 하나에만 머무르면 안된다.
작업의 성격과 복잡성에 따라 협업 모델을 유연히 전환하는 모드 전환자(Mode Switchers)가 되어야 한다.
AI 와 협업을 하려면 어떻게 해야할까?? AI 만을 위한 아키텍처? AI 가 스스로 만드는 아키텍처?
-> 아직까지의 얘기는 아니다.
AI 에게 TDD 를 해보라고 하면, 그냥 테스트 만들고 코드 만들고 통과도 한번에 한다.
AI 에게는 굳이 이런 프로세스가 필요 없을수도 있는 것
공통적으로 나오는 얘기는 인간에게 좋은 아키텍처, 코드라고 한 것들이 AI 도 선호한다.
특히, 아직 AI 는 인터넷에 올린 코드 스니펫들을 학습했기에 평균적인 레벨에 수렴한다.
Claude 와 같은 AI 전문 기업들도 툴을 만들때 TDD 를 선호한다고 한다.
사람이 코드를 만들고, AI 에게 통과를 시키는 것이 아닌
AI 에게 테스트를 만들어보고, 테스트를 통과 시키게 하는 것
요새는 타이핑 할 필요 없이 말로 해도 인식이 잘 되는 세상
왜 협업에 TDD 가 중요한가
AI 는 일종의 슬롯머신 ㅋㅋ ( 오늘 나오는 코드와, 내일 나오는 코드가 매번 달라지니까 )
단, 테스트 코드는 수정하지 마주변의 많은 회사들이 생산성에 관심을 가지고 있다.
( AI 가 50% 를 해주면, 개발자를 50% 더 안 뽑아도 되는거겠네?? 와 같이 - 개발자의 몸값은 몹시 비싸다... )
다들 AI 로 얼마나 빠르게 개발할 것인가.
OR
생산성 이야기만 하고 있다...
이야기가 나올 수 밖에 없다.
사람이 하는 것보다 AI 가 1000배 정도 더 빨리 코드를 뽑아낼 수 있기 때문에
(AI 는 잠도 안잔다.)
=> 여기에는 딜레마가 존재한다.
뽑아먹기 ( explotiation )
이익을 극대화하기 위해 현재까지 알려진 최선의 선택을 하는 걸 활용 / 이용
탐험하기 ( exploration )
현재까지 알려진 최선보다 더 나은 선택이 있을 가능성을 파악하기 위해 최선이 아닌 다른 선택을 찾아나가는 것
이 두가지의 밸런스를 적절히 해나가야 한다.
AI 는 생산성을 비약적으로 향상시키나, 동시에 개발자의 기술 정체 또는 퇴보에 대한 우려를 낳는다.
커서로 프롬프트를 몇번 하니, 개발이 끝났다. 오히려, React 나 Component 등 지식을 쌓을 수 없게 되고 AI 에 다시 의존하게 된다.
-> 결국 전체 생상선이 떨어진다.
( 일을 잘 시켜야 하는데, 내가 아는 지식의 한계가 있어 그렇게 요청을 할 수 밖에 없게 된다... )
⭐️ 즉각적인 생산성 추구와 지속적인 학습 및 기술 개발을 위한 의도적인 노력을 조화시키는 전략적 접근이 필요하다!!!
궁극적으로 지속 가능한 성장과 높은 성과로 이어진다
실무에 쓰려고 하는 시도가 상당히 많이 생겨나고 있다.
스택 오버플로우나, 오픈채팅방에 직접 물어보거나, 구글에 검색할 필요가 없어진다.
AI 와 함께 학습하면서 더욱 성장해나갈 수 있는 것
코드를 만들어줄 때, 더 설명을 원하십니까? ,이 코드는 ...로 구성되어 있습니다. 라고 해주는데
그냥 생각없이 수락하는 흔히 '딸깍딸깍' 만 한다.
(옆에 시니어 개발자가 지침과 피곤함, 짜증 없이 계속 알려주는데 내가 알아서 할게라고 하는 급)
나에게 아침마다 이 기술을 익히는데 필요로 하는 코딩 문제를 3개씩 내줘봐. ( 쉬운거,중간,어려운거 )
공식 문서 들어가서 이해하고, 번역해줘봐. ( 그거도 귀찮아. 3줄로 요약해줘봐 )새로운 기술을 쓰기로 결정하면, 당장 코드를 짜는 시간이 아니라 연습할 수 있는 시간을 가지게 해줘야 한다.
( 시간을 안준다면, 개인 시간에서라도 해야 한다. 당연히. 우리는 전문가(프로)이다. 꾸준히 연습해야 하는 것 )
개발자는 결국 한동안은 필요할 것이다. 오히려, 개발자이기에 AI 와 더욱 성능을 낼수도 있을 것
AI 가 너무 빠르게 발전하고 있다.
올해 2월달에 사이드 프로젝트를 하면서도 커서의 프론트엔드 구현 실력에 대해 감탄했었는데
이제는 그게 당연하다는 듯, 다른 MCP들과 통합해서 더욱 정교하게 또는 백엔드 까지 침범을 하고 있다.
그러면, 개발자는 이제 필요없어지는 걸까?
아무도 예상은 못하지만 ( 토비 조차도 ) 아직, 개발자의 시대는 남아있는거 같다.
물론, 그 모습이나 업무가 이전과 달라는 질 수 있더라도.
AI 를 사용하며 가장 크게 느낀점은 해낼 수 있는 능력은 매우 가파르게 성장하는걸 느꼈다.
여기서 해낼 수 있는 능력이란 우리가 원하는 것, 동작을 시키는 것 을 의미한다.
하지만, 그럴수록 이걸로 정말 괜찮은 걸까? 생각이 든다.
AI 는 내가 어떻게 프롬프트를 구성하는지, 컨텍스트를 구성하는지 또는 AI 의 컨디션에 따라 천차만별의 코드가 구성이 된다.
코드가 더러워도 문제, 완벽해도 문제의 딜레마에 빠져든다.
한번 AI 가 더럽힌 코드는 정화를 하는데 매우 오래 걸린다, 추가로 사람이 아닌 AI 의 생각을 따라가야 한다.
사람이 짠 코드는 이거 왜 이렇게 하셨어요? 라고 묻거나, 주석이나, 이슈 를 찾아볼 수 라도 있다.
AI 한테는 이걸 어떻게 물어보지? 그때 컨텍스트, 그때 모델, 그떄 프롬프트를 거슬러 올라가서 물어봐야 하나?
설령 찾아서 물어보더라도, 완벽한 해답과 정답을 줄까??
완벽한 코드라면, 그 코드를 완벽히 체화시키지 않는다면 우리는 계속 AI 에 의존을 하게 될 수 밖에 없다.
옛날 TV 를 바보 상자라고 하던 것과 뭐가 다르단 말인가.
내가 생각하기에 당장은 이런 AI 의 환상과 오염을 중재해줄 사람이 필요하다.
AI 에게 100% 의 신뢰를 할 수 있지 않더라면, 간섭과 관리를 그리고 사람이 발전을 해야만 한다.
위에서 토비가 말해준 것 처럼 AI 의 도움을 받되, 뽑아먹기만 하는게 아닌 학습과 탐험을 해나가는 사람이 되자.