- 처음 AI 코드 도구를 사용할 때는 놀라움과 효율성에 감탄했음
- 특히 C++ 컴파일 에러 분석에 도움을 줘 마치 마법처럼 느껴졌음
- GitHub Copilot과 다양한 LLM 기반 에디터 통합 도구를 사용하면서 개발 워크플로우의 일환이 되었음
- 그러나 2024년 말에는 모든 LLM 통합 기능을 코드 에디터에서 제거했음
- 여전히 AI를 가끔 사용하지만, 주된 워크플로우에는 포함시키지 않음
Tesla FSD와의 유사한 경험
- 2019~2021년 동안 Tesla 차량을 몰면서 FSD를 자주 사용했음
- 고속도로에서 FSD를 사용하자 운전에 대한 집중력이 점점 낮아졌음
- FSD 의존으로 인해 스스로 운전하는 능력이 약화되었음
- 다시 일반 차량으로 운전할 때 집중력을 되찾는 데 시간이 걸렸음
AI 코드 에디터 사용 경험
- AI 도구를 사용할수록 작업 속도는 빨라졌으나 기본 실력은 약해졌음
- 사이드 프로젝트에서는 AI 도구를 사용할 수 없어 불편함을 느꼈고, 자신감이 떨어졌음
- 함수 정의, 테스트 코드 작성 등의 기본 작업에서 어려움을 느꼈음
- AI에 의존하면서 구현 결정을 스스로 내리는 데 자신이 없어졌음
- 결국 복잡한 작업에서 실력이 부족해졌음을 체감했음
직관적 감각의 상실
- 독일어 ‘Fingerspitzengefühl’은 숙련자가 가지는 직관적 판단력을 의미함
- 코드 작성에 있어서도 언어와 프레임워크에 익숙해질수록 생기는 감각임
- 포인터 사용, 표준 라이브러리 선택, assert 사용 등 세부적인 기술 선택에서 이 감각이 중요함
- AI 도구는 이 감각을 약화시킴
- 코드의 품질과 유지보수를 고려할 때 인간의 직관은 매우 중요함
AI 도구 없이도 가능한 개발
- AI 도구가 없다면 일을 못하게 될 것이라는 두려움은 과장임
- 실제로 AI는 대규모 프로젝트나 레거시 시스템에서 그리 유용하지 않음
- 사내 도구, 프레임워크, 내부 DSL을 사용하는 프로젝트에서는 LLM이 도움이 되지 않음
- 보안 관련 코드(JWT, RBAC 등)는 AI에게 맡겨선 안됨
- 보안은 직접 이해하고 책임져야 할 영역임
- AI가 코드 작성부터 PR 리뷰, 배포까지 맡는다면 보안 문제가 급증할 것임
AI 사용의 기준점 설정
- AI는 유용하지만 에디터에 통합해서 사용하는 방식은 피함
- 직접 컨텍스트를 입력하고 필요한 코드만 받아 수동으로 적용함
- 예: 테스트 변환, SIMD 계산 변환, 압축 데이터 디코딩 등
- 이런 방식은 코드에 책임감을 느끼게 하고, 비용도 절감됨
- 학습 용도로 AI를 사용하면 유익함: 어셈블리 코드, 셰이더, 네트워크 코드 등 설명 요청 시 특히 유용함
- 개인 블로그에는 AI 생성 콘텐츠를 사용하지 않으며, 인간의 창작물을 선호함
좋아하는 일을 계속하기
- 효율성과 생산성 외에도 ‘좋아하는 일’을 지속하는 것도 중요함
- 체스처럼 AI가 이길 수 있더라도 사람들이 계속 즐기는 활동처럼, 프로그래밍도 즐거움으로 지속 가능함
- 단순히 더 잘하는 것이 아닌, 자신이 즐기기 때문에 프로그래밍을 계속하는 것이 중요함
신입 개발자에게 전하는 조언
- AI에 의존하는 ‘영원한 주니어’가 되지 말 것
- 직접 코드 작성 능력을 키우고, 시스템의 원리를 깊이 이해할 것
- 언더 더 후드에서 돌아가는 구조를 공부하면서 실력을 쌓는 것이 중요함
- AI는 도구일 뿐이며, 그 자체로 완전한 해결책은 아님
- 때로는 AI 없이 일하는 연습도 필요함
- ‘바이브 코딩’만으로는 실력 있는 개발자가 될 수 없음
- AI 없이 코딩할 수 없다면, 진짜 코딩을 하는 것이 아님
결론
- AI는 속도를 위해 지식을 희생하는 행위임
- 때론 이 트레이드오프가 가치 있지만, 기본기 훈련은 필수임
- 실력 있는 개발자는 기본기를 반복적으로 연습함
- AI가 직업을 대체하기에는 아직 멀었으며, 기업들은 FOMO를 유도해 투자를 유치하려는 목적이 큼
- AI는 도구일 뿐이며, 사고의 대체물이 아님
- 항상 호기심을 유지하고 학습을 지속하는 것이 중요함