AI가 개발자에게 영어를 필수 역량으로 만든다
Source: Dev.to
안녕하세요, 사랑하는 독자 여러분,
요즘 온라인에 조금이라도 시간을 보냈다면, 다음에 배워야 할 프로그래밍 언어에 대한 끝없는 논쟁을 보셨을 겁니다. 모두가 “미래다”라고 말하는 Rust를 배워야 할까요? 아니면 C#와 .NET을 고수해야 할까요? JavaScript는 아직도 가치가 있을까요, 아니면 AI 도구가 넘쳐나는 지금 파이썬을 배워야 할까요?
이런 질문은 충분히 타당하고, 저도 다른 개발자들처럼 언어 논쟁을 즐깁니다. 하지만 지난 몇 년간 AI 도구가 일상 업무 방식을 어떻게 바꾸는지 지켜보면서, 저는 조금 다른 결론에 도달했습니다. AI 시대에 개발자에게 가장 중요한 언어는 C#, JavaScript, Rust가 아니라 영어입니다.
대부분의 커리어 동안, 머릿속 아이디어와 실제 코드 사이의 간극은 제가 코드를 한 줄씩 직접 타이핑하면서 메워졌습니다. 문법도 알고, 패턴도 알고, 아이디어를 결과물로 바꾸는 언어는 C#였죠.
그 간극은 이제 전혀 다른 모습입니다. 하루 중 큰 비중을 차지하는 일은 “내가 원하는 것이 무엇인지” AI 도구에 설명하고, 도구가 반환한 결과물을 검토한 뒤, 잘못된 점이나 바꾸고 싶은 부분을 다시 설명하는 일입니다. 이제 병목 현상은 “이 LINQ 쿼리의 문법을 알고 있나”가 아니라 “문제를 충분히 명확히 설명해서 다른 무언가가 해결할 수 있게 할 수 있나”가 됩니다.
이는 코딩 스킬이 아니라 소통 스킬입니다.
- 막연한 질문을 하면 막연한 답을 얻습니다.
- 잘못된 문제를 설명하면 존재하지도 않은 문제에 대한 해결책을 받게 됩니다.
- 필요를 명확히 표현할수록 결과는 더 좋아집니다.
그리고 대부분의 AI 도구가 학습한 언어, 대부분의 문서가 작성된 언어, 온라인에 떠도는 프롬프트와 예시가 쓰인 언어는 바로 영어입니다.
제 다른 글들을 읽어보신 분이라면 이미 아시겠지만, 영어는 제 모국어가 아닙니다. 저는 네덜란드 사람이고, 대학 시절 교수님들은 제가 문장을 중간에 끊어버리는 경우가 많다고 지적하셨습니다. 제2외국어로서 명확히 글을 쓰는 데는 수년간의 노력이 필요했고, 그 대부분을 블로그를 쓰면서 배웠습니다. 그 노력은 제가 지금까지 해본 투자 중 가장 큰 수익을 안겨주었으며, 당시엔 그 가치를 깨닫지 못했었습니다.
AI 도구와 작업할 때, 결과물의 품질은 얼마나 명확하게 표현하느냐와 직결됩니다. 흐릿하고 반쯤 완성된 생각은 흐릿하고 반쯤 완성된 답을 낳습니다. 정확한 설명, 적절한 맥락, 올바른 제약조건을 제공하면 실제로 쓸 수 있는 결과를 얻을 수 있습니다. 흐릿한 아이디어를 명확한 문장으로 바꾸는 스킬은, 제가 오랫동안 연습해오던 것이지만 그 유용성을 전혀 예상하지 못했던 스킬이었습니다.
따라서 여러분도 영어가 모국어가 아니라면 솔직히 말씀드리겠습니다. 네, 이것은 이미 우리에게는 어려운 일에 또 다른 부담을 주는 것이지만, 스택 트레이스를 읽거나 null reference exception을 디버깅하던 능력을 키우듯 연습을 통해 충분히 개발할 수 있는 스킬입니다.
AI가 등장하기 전에도 많은 개발자들이 이미 알고 있었던 사실
소프트웨어 개발에서 가장 어려운 부분은 코드 자체가 아니라 언어였습니다.
- 이해관계자가 실제로 원하는 것이 무엇인지, 그들이 말한 것과는 별개로 파악하기
- 리뷰어가 세 번의 추가 메시지 없이도 이해할 수 있는 풀 리퀘스트 설명 작성하기
- 코드를 작성하지 않는 사람에게 기술적 결정을 설명하기
- 미래의 자신이 고마워할 주석 남기기
- 누군가가 실제로 따라 할 수 있는 문서 작성하기
이 모든 것이 언어이며, 복잡한 것을 다른 사람에게 이해시키는 능력입니다. AI가 이 스킬을 만든 것이 아니라, 그 중요성을 한층 더 부각시켰을 뿐입니다. 문제를 명확히 설명하고, 충분한 맥락을 제공하며, “완료”가 어떤 모습인지 기술할 수 있는 개발자들이 현재 AI 도구를 가장 효과적으로 활용하고 있습니다.
당신이 원하는 것을 설명하는 부분에만 집중하기 쉽지만, 또 다른 절반도 똑같이 중요합니다. 바로 읽는 능력입니다.
AI 도구는 틀릴 때도 자신감 있게 답합니다. 존재하지 않는 메서드를 만들어 내거나, 몇 년 전 폐기된 패키지를 제안하거나, 다른 부분을 은밀히 깨뜨리는 방식으로 문제를 해결할 수도 있습니다. 답변을 비판적으로 읽고 이상 징후를 포착하지 못한다면, 곤란한 상황에 처하게 됩니다.
비판적 읽기는 역시 언어 스킬입니다. 설명을 따라가며, 말이 안 되는 부분을 찾아내고, 날카로운 후속 질문을 던지는 능력 말이죠. 좋은 코드 리뷰어가 diff를 보면서 즉시 뭔가 잘못됐음을 감지하듯, 이제 여러분도 생성된 답변을 같은 방식으로 읽어야 합니다. 읽는 능력이 뛰어날수록, 이해하지 못한 코드를 그대로 프로덕션에 복사해 넣을 위험이 줄어듭니다.
제가 명확히 하고 싶은 말은, 온라인에 떠오르는 댓글들을 미리 보고 있습니다. 저는 여러분에게 프로그래밍 언어 학습을 중단하라고 말하는 것이 아닙니다. 문법이 의미 없다고도, 코드를 이해하지 못한 채 소프트웨어를 배포하라고도 하는 것이 아닙니다. 스택을 이해하는 것은 여전히 필수이며, 답변이 터무니없는지 판단하고, 금요일 오후 4시에 문제가 발생했을 때 디버깅하고, 아키텍처와 트레이드오프에 대한 실제 결정을 내릴 수 있어야 합니다.
프로그래밍 언어는 여전히 머신이 실행하는 것입니다. 하지만 영어는 그 목적지에 도달하기 위해 조용히 사용되는 수단이 되었습니다. 하나가 다른 것을 대체하는 것이 아니라, 나란히 존재합니다. 현재 많은 개발자들이 두 번째 수단에 충분히 투자하고 있지 않은 상황이죠.
좋은 소식
이 스킬은 연습을 통해 향상시킬 수 있으며, 여러분은 이미 완벽한 도구들을 가지고 있습니다.
- 더 많이 쓰세요. 블로그 포스트, 상세한 풀 리퀘스트 설명, 적절한 커밋 메시지, 방금 만든 기능에 대한 문서 등을 작성하세요. 매번 무언가를 명확히 글로 설명하려고 할 때마다, AI와 협업할 때 필요한 근육을 단련하는 것입니다.
- 프롬프트에 신경 쓰세요. 나쁜 답변을 받았다고 같은 모호한 요청을 다시 시도하지 마세요. 어떤 맥락이 빠졌는지, 도구가 이미 알고 있다고 가정한 것이 무엇인지, 더 정확히 어떻게 표현했어야 했는지를 스스로에게 물어보세요.
- 영어가 모국어가 아니라면, 그것이 장애물이 되지 않게 하세요. 영어로 읽고, 영어로 쓰고, 조금 불편함을 감수하면서 성장하세요. 분명히 쉬워지고, 기대하지 못한 여러 방면에서 보상이 돌아올 것입니다.
읽어 주셔서 감사합니다! 생각이 있거나, 제 의견에 동의하지 않거나, 여러분만의 경험을 공유하고 싶다면 언제든 댓글을 남기거나 제 SNS로 연락 주세요. 언제든 이런 이야기를 나누고 싶습니다.