
안녕하세요.
블로그 운영팀에서 AI챕터를 맡고있는 Mr.Charile입니다.
지난 글에서는 Cluade AI를 사용하면서 느낀점과 개발자가 AI를 어떻게 활용하면 좋을지에 대한 포스팅을 했습니다.
여러분은 개발자가 AI를 활용하여 코딩하는것에 대해 어떻게 생각하시나요?
최근 만나본 여러 개발자들 사이에서도 의견이 갈리는거 같습니다.
어느 주니어 개발자는 적극적으로 AI를 활용하고, 또 어떤 시니어 개발자는 AI를 절대 지양하고 있다고 답했습니다.
이번 컨텐츠는 이거에 대한 인사이트를 가져다 줄 수 있는 글을 가져왔습니다.
마지막으로 저의 생각을 정리해두었으니 끝까지 읽어주시기 바랍니다.
원글 : https://slopwatch.com/posts/bad-programmer(AI코드를 사용하면 나쁜 프로그래머가 될것입니다)
목차
AI코드를 사용하면 안되는 이유
1. 스스로 학습 기회를 빼앗는다

- 무슨일이든 스스로 그 행동을 하지 않고는 향상되지 않는다.
- 게임을 하지 않고서는 체스실력이 늘지않고, 음악을 듣는것만으로 피아노를 배울수없다.
- 어느 시점에서는 반드시 직접 연주해야한다.
- 코딩을 직접 하지 않는 개발자는 절대 발전할 수 없다.
- AI를 사용함으로서 가능성을 빼앗기고있다.
인터넷 초창기에는 “스크립트 키디(script kiddie)”라는 용어가 생겨났다. 이는 다른사람이 만들어 공유한 스크립트를 다운받아서 컴퓨터 시스템을 해킹하는 사람들을 지칭한다. 이들은 스스로 훌륭한 해커라고 착각한다. 그러나 이들은 스크립트가 어떻게 동작하는지 이해하지 못하고 자신들이 하는 행동이 어떤 의미인지 모른다. 이들은 스스로 진정한 해커가 되고싶어하지만 절대로 그렇게 될수 없다. 진정한 해커가 되기위해서는 스크립트를 만드는 사람이어야 한다. 이들은 시스템을 분석하고 취약점을 조사하고 진정으로 이해할줄아는 사람이다. AI코더는 훌륭한 개발자가 되고싶어한다. 그리고 훌륭한 개발자라고 스스로를 착각하게 만든다
2. 이미 습득한 기술을 퇴화 시킨다.

- 이미 프로그래밍 기술을 익혔고, AI에게 단순반복 업무를 맡기면 어떨까?
- 많은 사람들이 창의적이고 복잡한 업무는 스스로하고, 단순하고 지루한 작업을 AI에게 맡기라고 한다.
- 예를들면 프로그래밍에서는 이런일들이다 ’새 프로젝트의 구조잡기, 팩토리얼, mergeSort함수작성하기’ 반복적이고 일상적인 업무같은것이다. (개인적으로 전혀 반복적이고 지루한작업이 아닌듯하다…)
- 예전부터 시니어개발자들은 이런 업무를 주니어에게 위임하였다. AI에게 맡기는것과 뭐가 다른가?
- 두가지 차이점
- 첫번째: 사람에게 업무를 위임하는것은 스스로 새로운 기술을 습득하고 강화할 기회를 갖는것이다. ”멘토링, 커뮤니케이션, 짜증과 조바심이 나는 상황에서 웃으면서 유쾌하게 행동하는 방법”같은 것 이다.
- 두번째: 소프트웨어 개발은 기본적으로 오랜시간 반복숙달하는 작업이고, 멈추면 금방 까먹게된다. 처음 어떤 언어를 배울때는 기본적인 개발툴도 구축하지 않고, 원시적인 방법에서 OS의 컴파일러를 설치하고 명령어를 직접 실행하며 코드를 다룬다. 그러나 IDE를 다루게되면서 이런 기초적인 지식들은 금새 잊어버리게된다. 스스로 코딩을 하지 않는다면 개발자는 금방 녹슬게된다. 기초지식을 잊어버리면 더 고급기술을 구축하는 기반을 잃게되고 더 절망적인부분은 코딩의 흥미마저 잃어버리게된다.
운동기구 제조사에서 새로운 운동 보조 기구를 출시했다고 한다.
이 운동 보조기구는 바로 나를 대신해 “무게”를 들어주는것이다.
이를 활용함으로서 당신은 더 높은 무게의 벤치프레스를 들수있을것이다.
그리고 단숨에 레벨업하여 다음 운동으로 넘어갈수 있게된다.
이 이야기는 단순한 예 이지만 현실에서 충분히 벌어질법한 이야기이다.
3. 결국 개발자를 대체하는것에 의존하는것이다.

- 개발자의 길에서 지름길을 택하면 안되는 순간이 있다. 바로 기초를 배우는과정이다.
- AI도구는 학생들에게 무료로 제공하기도한다. 좋은일이라 생각할수있지만, 사실 이는 약탈적행위와 같다.
- AI기업은 텍스트 에디터를 열기도 전에 AI에 중독시키고, 이로서 평생 구독료를 받을수있다는 사실을 잘 알고있다.
- AI기업은 신문물을 거부하고 AI 사용에 대해 비판하는 고집센 늙은이 대신, 미래세대 개발자들을 선택한다. 그들은 미래에 chatGPT같은 채팅봇 없이는 “Hello World”조차 출력할수 없게될것이다.
- 회사 경영진이 AI를 환영하는 이유는 ‘주니어 개발들이 AI를 사용함으로서 고액 시니어개발자로 거듭나는것’을 기대하는게 아니다.
- 고액연봉의 시니어개발자를 더 저렴한 주니어 개발자로 대체하기 위함이고, 더 나아가서는 개발자 모두를 AI로 대체할수있다는 기대가 있기 때문이다
4. 당신의 코드는 존중받지 못한다.

- AI가 생성한 코드는 반드시 나쁜것이다라는 주장은 옳지않다. 오히려 AI가 코드를 아주 잘 생성하고 점점 발전하고있다.
- 그러나 AI코드 키디를 제외하고는 더이상 프로그래머를 대접하지 않을것이다.
- 소프트웨어 개발에는 예술성이 있다(동시에 불확실성과 복잡성도 있어 때로는 우리를 괴롭힌다.)
- 이는 일괄되고 더 긴밀하게 코드베이스를 구축하고, 더 우아한 방법을 모색하여 문제를 해결하는데 있다.
- 이것은 모든 프로그래머에게 자부심과 동기부여, 만족과 기쁨의 원천이다.
- 우리는 우리의 성취를 축하받고싶을까? 아니면 우리를 위해 코드를 만들어주는 텍스트 예측모델의 성취를 축하받고 싶을까?
- 스스로 코드를 작성하지 않았는데 어떻게 자신의 코드에 자부심을 가질수있을까? 그리고 다른사람의 존중을 기대할수있을까?
- 예술작품을 의뢰하고 예술가인척하는 사람이 되고싶지 않다면, 예술가가 되어야한다.
AI 생성 코드를 사용 하는 이유
1. 코딩보다 코드리뷰를 선호하는 마조히스트이다.
- 누군가는 코딩은 매우 좋아하지만, 다른사람의 코드를 읽고 검토하며 피드백하는것을 매우 싫어할수있다.
- 물론 코드리뷰는 성장하기 좋은 기술이고, 경험이 적은 개발자의 생산성을 높이는 것은 분명하다.
- 좋은 오픈소스 코드를 읽는것만으로도 코딩에 대한 시야를 늘려주고, 자기만의 방식을 고집하지 않게하고 더 나은 개발자로 성장시키는 탁월한 수단임은 분명한것같다.
- 그러나 AI를 사용함으로서 우리의 직무는 코더에서 코드리뷰어로 변하게된다.
- 어쩌면 거기에 탁월한 재능이 있을수있고, 그일이 더 잘 맞을수도있다.
- 판단은 스스로하자.
2. 당신은 실제로 프로그래머가 되고 싶지 않다.
- 당신이 코딩을 배우는것에 관심없고, AI에게 “카트레이싱 게임 만들어줘, “이부분을 개선해줘”라는 식으로 프리랜서를 고용한것과 같이 인식하고있는 사람이라면, 당신에게 적용되는 내용일 것이다.
- 대기업에서 진짜 기다리고있는, 군침 질질 흘리고있는 미래는 AppStore에다가 원하는 것을 말하면 바로 내 디바이스에 해당 App을 만들어주는 상황이다.
- 그렇게되면 AppStore에서 중개비로 30%를 받는것에서 이제는 100%를 가져가게된다.
- 이는 AI 생성 코드를 사용하는 마지막 이유로 이어진다.
3. 우리는 이제 탈노동시대에 진입했고, 기업이 우리를 그시대로 인도해줄것이라고 믿는다.
- 여기까지 읽은 후에도 여전히 AI찬양자라면 더이상 해줄말이 없다.
- 조지 오웰의 『1984』, 레이 브래드버리의 『화씨 451도』, 닐 스티븐슨의 『스노우 크래시』를 읽어보기를 추천한다. 이 작품들은 미래에 대한 그들만의 비전을 제시하며, 당신이 기대할 만한 무언가를 제공할 것이다.
개인적인 생각
1. 개발자의 롤이 점차 변화하고있다.
- 과거의 개발자는 소프트웨어로 특정 영역의 문제를 풀어왔다.
- 그리고 현재는 비즈니스와 결합하며 비즈니스의 문제를 풀고있다.
- 소프트웨어가 비즈니스의 중심이되었고, 비즈니스를 위한 소프트웨어로, 소프트웨어를 통한 비즈니스가 되었다
- 비즈니스의 문제는 소프트웨어와 결합하며 더욱 더 복잡해졌고, 역으로 소프트웨어 역시 비즈니스와 만나 더욱 더 복잡해지고 있다.
- 과거의 슈퍼마켓을 생각해보면 매우 단순한 비즈니스모델이였다. 소프트웨어를 만나 전자상거래가 되면서 매우 복잡해졌다. 이를 구현한 시스템은 고객의 요구에 맞춰 더욱 더 끝없이 발전하고 복잡해지고있다.
- 소프트웨어(개발자)가 풀수없는 문제들도, 소프트웨어(개발자)가 풀어야하는 순간이 있다.
- 그러나 현실은 개발방법론과 시스템, 그리고 소프트웨어(개발자)가 비즈니스 복잡도를 따라잡지 못한다.
- 우리는 모든것을 스스해나갈수 없고, 일정부분은 아웃소싱을 할수밖에 없다.
- AI 역시 시스템(개발 방법론, 소프트웨어 산업)의 일부가 될지도 모른다.
2. 무엇을 취하고 무엇을 내줄지 결정이 필요한 순간
- 스스로 Job을 선택했다면, 커리어(과정)도 선택해야하고, 무엇을 이루고싶은지(목적)도 선택해야한다.
- 누군가는 단지 직업이 필요했을수있고, 안정적인 직장이 필요했을수도있다. 이 또한 존중받아야한다.(그러나 동료들에게 자신의 생각을 알려야한다)
- 그러나 이 일을 지속하고싶다면 선택이 필요하다. 꾸준히 성장할것인지, 이대로 좋을지
- 성장이 필요한순간에는 스스로해야한다.
“명확히 설정된 목표가 없으면, 우리는 사소한 일상을 충실히 살다 결국 그 일상의 노예가 되고 만다”
내가 AI와 코딩을 해가면서 무엇을 채우고 있고, 그와 동시에 무엇을 잃고있는지 점검해야한다. 또한 나의 목표가 빠르게 결과물을 내는것인지, 과정과 실패를 통해서 성장하고 싶은것인지 생각해야한다.
한번에 하나씩만 할수있다. 부족한부분은 반드시 채우기위한 학습을 해야한다.
3. 찬양 VS 저항, 두가지 선택지밖에 없을까?
- TV에서 휴대폰, 스마트폰에 이르기까지 새로운 산업이 발전해나갈때마다 우려와 저항이 있었다.
- 그러나 현재는 스마트폰없이 살수있는 사람은 없다.
- 찬양과 저항 두가지 양 극단의 선택만 해야할까?
- 두가지 모두 사물을 제대로 이해하지 못했을때 가중된다. 무조건 나쁘다와 백번천번 좋다가 여기에 해당된다.
- AI를 활용할지 말지는 본인이 처한 환경에 따라 다르다.
- 그렇지만 “내가 사용할줄알고 사용하지 않는 것과, 사용하지 못해서 안쓰는것”은 다름을 인식하자
- 선택을 했다면, 깊이를 고려해야한다. 어디까지 쓸지, 무엇에 쓸지, 장점을 개발할지 단점을 보완할지를 말이다.
- 개발자라면 본업에 있어서는 최소한 “직접 해보는 단계”에는 반드시 스스로 해야만 한다.
“도덕적 미덕은 우리 안에서 본성에 의해서 발생하는 것도, 본성에 반해서 발생하는 것도 아니다… 도덕적 미덕은 습관으로 인한 것이다… 우리가 배워야 하는 모든 것은 실제로 그것을 행함으로써 배운다… 인간은 건물을 잘 지음으로써 훌륭한 건축가가 되고 건물을 잘못 지음으로써 형편없는 건축가가 될 것이다… 따라서 어린 시절의 습관이 무엇이냐가 매우 중요하다. 그러한 습관이 엄청난 차이, 또는 세상의 모든 차이를 만든다.”
– 아리스토텔레스