- LLM 도구가 개발 생산성을 높이는 것은 사실임
- 그러나 장기적으로는 이러한 도구에 의존하게 되면서 스스로 문제를 해결하는 능력이 저하됨
- 코드 작성의 과정에서 얻는 성취감이 사라지고, 문제 해결보다는 AI의 답변을 기다리게 됨
개발에 대한 열정과 도전 정신의 약화
- 코딩 자체를 즐기지 않는 사람도 있음 → 그런 경우에는 개발 분야가 맞지 않을 수 있음
- 내가 만난 최고의 엔지니어들은 주말에도 자발적으로 도구나 소프트웨어를 만들며 혁신을 추구함
- 시스템의 성능 개선은 근본적인 이해가 있어야 가능하며, 그렇지 않으면 무작위로 시도하는 것에 불과함
'Copilot Lag' 현상
- 'Copilot Lag'은 AI의 다음 지시를 기다리는 상태를 의미함
- 마치 신입 개발자가 선배의 지시를 기다리는 것과 비슷함
- GitHub Copilot을 사용하면서 기초적인 언어 요소와 구문조차 잊어버리게 됨
- 단기적인 속도 향상 때문에 장기적인 지식이 퇴화됨
LLM이 학습 과정을 방해할 수 있음
- Thorsten Ball의 "Writing An Interpreter In Go"를 공부할 때 Copilot이 코드를 생성해 주었지만, 스스로 다시 작성할 수 있는 능력은 얻지 못했음
- 메모리 관리나 데이터 지향 설계 같은 중요한 개념을 놓치게 됨
- AI가 만들어낸 코드는 겉보기에 맞아 보일 수 있지만, 근본적인 원리를 이해하지 못하면 무의미함
LLM을 효과적으로 활용하는 방법
- LLM은 검색 엔진처럼 유용하게 사용할 수 있음
- Stack Overflow를 검색하듯이, LLM의 답변을 참고할 수 있음
- 그러나 LLM은 실제 전문가의 지식을 그대로 반영하지 않으며, 학습된 패턴과 토큰 시퀀스를 기반으로 답변을 생성함 → 오류가 많음
- LLM의 답변을 그대로 받아들이지 말고, 왜 그런 접근 방식을 추천하는지 분석해야 함
- 모르는 것이 있을 때는 스스로 조사하고 학습해야 함
- 새로운 언어(Zig 등)를 학습할 때 배운 내용을 메모하면 유용함
- 메모는 학습 참고 자료가 될 수 있으며, 다른 사람과 공유할 때도 도움이 됨
결론
- AI 도구는 유용하지만 맹목적으로 의존하면 오히려 역효과가 발생함
- AI가 제시한 해결책의 원리를 이해하고, 스스로 학습하려는 태도가 중요함
- 결국 중요한 것은 도구에 의존하지 않고 근본적인 문제 해결 능력을 유지하는 것임