최근 LLM(대규모 언어모델)의 등장으로 개발 생산성이 높아지고 있지만, 소프트웨어 개발자가 시스템을 깊이 이해하는 것이 여전히 중요하며, 오히려 그 중요성이 더 커지고 있다는 주장이 제기되었습니다. 빠른 답을 얻기 위해 LLM이 생성한 코드를 무비판적으로 복사해 붙여넣는 습관은 단기적인 편의를 제공할 수 있으나, 장기적으로는 문제 해결 능력과 핵심 역량을 약화시켜 자신이 책임지는 시스템에 대한 통제권을 잃게 할 수 있다는 경고입니다.
이 글은 소프트웨어 개발에서 '이해의 기쁨과 힘'을 강조하며, 깊은 이해가 코드와 시스템을 수정하고 변경하는 실질적인 조건이라고 설명합니다. 이해하지 못하는 대상은 제대로 다루기 어렵고, 이는 결국 책임지는 코드에 대한 통제력 상실로 이어집니다. 인간의 '게으름'이 LLM 의존으로 이어지기 쉽지만, SQL 학습 대신 LLM에 의존하는 경우처럼 핵심 기술을 직접 익히는 과정을 건너뛰면 진정한 숙련이 어렵다는 점을 지적합니다. LLM과 검색 엔진은 강력한 '역량 증폭기(force multiplier)'가 될 수 있지만, 이는 탄탄한 기본기가 선행될 때만 가능하다는 것입니다. 따라서 개발자는 문서와 소스 코드를 읽고, 해법의 이유와 도구의 트레이드오프(trade-off)를 이해하며, 해법과 알고리듬(algorithm)을 직접 설계하는 노력을 게을리하지 않아야 합니다.
물론 모든 코드를 완벽히 이해할 필요는 없으며, 상황에 따라 기준을 달리할 수 있습니다. 중요도와 위험이 낮은 일회성 스크립트(script)나 내부 UI(사용자 인터페이스)는 LLM 생성 코드를 활용해도 무방합니다. 그러나 몇 달, 몇 년간 유지하고 발전시켜야 할 핵심 코드는 깊이 이해하는 언어와 기술로 만들어야 합니다. 이는 단기적인 '산출물(output)'의 양보다는 안정적인 릴리스(release), 단순화, 자동화, 테스트(test)와 같은 장기적인 '성과물(outcome)'에 초점을 맞춘 생산성 측정 방식과도 연결됩니다. 현대 소프트웨어는 런타임(runtime), 네트워크(network), 보안(security), 데이터베이스(database), AI(인공지능) 등 여러 계층으로 복잡해졌지만, 컴퓨터 아키텍처, 운영체제, 알고리듬, 자료구조, 네트워크, 데이터베이스 등 '기초 원리'를 익히면 새로운 도구와 접근법을 더 빠르게 이해할 수 있는 보편적 직관(universal intuition)을 기를 수 있습니다.
결론적으로, 소프트웨어 개발에서 깊은 이해는 단순히 의무가 아니라, 문제를 해결하고 시스템을 통제하는 실용적인 힘이자, 개발자에게 큰 즐거움을 주는 원동력입니다. LLM 시대에도 변치 않는 개발자의 핵심 역량은 바로 이러한 '이해의 힘'에서 비롯되며, 이는 끊임없이 변화하는 기술 환경 속에서 개발자가 주체성을 가지고 성장할 수 있는 기반이 됩니다.