나도 풀스택 개발자로 15년 가까이 일하면서 ‘넓게 가야 하나, 깊게 파야 하나’ 이 질문 때문에 밤잠 설치던 때가 많았거든. 주니어 때는 더 그랬던 것 같아. 수많은 기술 스택을 보면 뭘 먼저 공부해야 할지 막막했고, 여러 분야를 건드려보려니 뭘 하나 제대로 아는 게 없는 것 같아서 불안했지. 처음 풀스택이란 이름으로 일을 시작했을 때였어. 그때는 프론트엔드도 백엔드도, 심지어는 데이터베이스나 간단한 인프라까지 ‘어떻게든 돌아가게’ 만드는 데 집중했거든. 새로운 기술이 나오면 또 그걸 따라가야 할 것 같아서 깃헙 저장소에 스타가 많은 라이브러리는 일단 설치하고 튜토리얼을 훑어보는 식이었어. 예를 들면, 당시 유행하던 리액트, 뷰, 앵귤러를 다 조금씩 건드려보고, 백엔드는 자바 스프링, 노드 익스프레스, 파이썬 장고까지 맛만 봤지. 데이터베이스도 MySQL, PostgreSQL, MongoDB를 어쩌다 한 번씩 써보는 정도였어. 문제는 여기서 터지더라고. 어느 날 특정 프로젝트에서 성능 이슈가 심각하게 발생한 거야. 프론트엔드는 느리고, 백엔드 API 응답은 늦어지고, 데이터베이스 쿼리는 타임아웃이 나기 일쑤였지. 그때 내가 할 수 있는 건 사실상 없었어. 프론트엔드 최적화 지식은 얕았고, 백엔드도 JVM 튜닝이나 비동기 처리의 깊은 이해가 부족했지. 데이터베이스는 인덱스를 걸었어도 복잡한 조인 쿼리에서 왜 느려지는지 근본 원인을 파악하기 어려웠어. 결국, 각 분야의 '전문가'를 찾아 도움을 요청할 수밖에 없었지. 그때 느꼈어. '아, 넓게 아는 것도 중요하지만, 깊이가 없으면 진짜 문제 해결은 어렵구나.' 마치 여러 도구를 가졌지만 제대로 다룰 줄 모르는 목수 같았달까. 스스로 '제너럴리스트는 맞는데, 마스터는 아니구나' 하는 자괴감도 들었어.
그 경험 이후로 나는 전략을 바꿨어. 일단 한 분야를 깊게 파보기로 결심했지. 당시 내가 가장 흥미를 느꼈던 백엔드, 특히 자바와 스프링 생태계를 집중적으로 파고들었어. JVM 내부 동작 방식, 스프링 프레임워크의 핵심 원리, 디자인 패턴, 그리고 데이터베이스 성능 튜닝에 대한 책들을 파고들었지. 퇴근 후나 주말에도 관련 세미나를 찾아다니고, 오픈소스 프로젝트 코드도 뜯어보면서 ‘왜 이렇게 구현했을까?’를 계속 질문했어. 몇 년 그렇게 깊게 파고들었더니, 신기하게도 상황이 달라지기 시작하더라고. 예전에는 답답했던 성능 이슈나 복잡한 버그들이 보이기 시작했어. 어느 날은 한 팀원이 며칠째 헤매던 백엔드 서비스의 메모리 누수 문제를 내가 며칠 밤낮으로 프로파일링 툴을 돌려가며 찾아내고 해결했던 적도 있었어. 그때부터였어. 팀에서 ‘백엔드 문제’라고 하면 나를 찾아오기 시작했거든. ‘현우 선배는 이 부분은 진짜 잘 알아’라는 인식이 생기니까 자신감도 붙고, 일하는 재미도 커지더라고. 이 경험을 통해서 나는 깊은 전문성이 얼마나 큰 가치를 가지는지 몸소 깨달았어. 물론 그렇다고 해서 넓은 시야를 완전히 포기한 건 아니었어. 15년차 시니어 개발자가 되면서, 나는 다시 넓은 시야의 중요성을 깨닫게 됐어. 이젠 한 팀을 이끌거나 프로젝트 전체를 조망해야 하는 위치에 서게 됐거든. 특정 백엔드 기술에 대한 깊은 지식은 여전히 중요했지만, 프론트엔드 팀과 백엔드 팀, 인프라 팀 사이의 조율이 더 중요해졌어. 예를 들어, 프론트엔드에서 어떤 방식으로 데이터를 요청해야 백엔드 부하를 줄일 수 있을지, 혹은 데이터베이스 스키마 설계가 어떻게 프론트엔드 데이터 표현에 영향을 미치는지 등을 이해하고 있어야 했지. 이때 내가 깨달은 건, 소위 말하는 'T자형 인재'가 되는 것이 정말 중요하다는 거였어. 한두 가지 분야에서는 누구보다 깊은 전문성을 가지면서(T의 수직선), 다른 분야에 대해서도 기본적인 이해와 소통이 가능할 정도의 넓은 지식(T의 수평선)을 갖추는 거지. 내 경우에는 백엔드에 깊이가 있었고, 그 위에 프론트엔드와 인프라 이해를 넓혀나갔던 거야. 덕분에 각 분야 전문가들과 더 효율적으로 협업하고, 전체 시스템 문제점을 빠르게 진단하며, 기술적인 리더십을 발휘하는 데도 큰 도움이 됐어. 내가 15년 동안 개발자로 살아남을 수 있었던 비결 중 하나라고 생각해. 결국, 넓게 갈지 깊게 갈지는 정답이 있는 질문이 아니야. 개발자로서의 커리어 단계와 본인이 어떤 문제 해결에 더 큰 가치를 두는지에 따라 달라질 수 있는 문제거든. 주니어 때는 한두 가지 분야를 깊게 파서 자신만의 무기를 만드는 게 중요할 수 있고, 시니어가 될수록 그 깊이를 바탕으로 넓은 시야를 확보하며 전체 시스템을 조망하는 능력을 키워야 할 때가 올 거야. 중요한 건, 어떤 방향을 선택하든 꾸준히 배우고 성장하려는 태도겠지. 그러니 지금 당장 ‘넓게’ 갈지 ‘깊게’ 갈지 고민하고 있다면, 너무 조급해하지 마. 어떤 길을 선택하든 그 과정에서 얻는 경험과 깨달음은 너를 더 단단하게 만들 거거든. 다만, 한 가지 조언을 하자면, 처음에는 한 분야를 선택해서 바닥까지 파고들어 보는 경험을 꼭 해보라고 말해주고 싶어. 그 깊은 경험이 나중에 넓은 시야를 가질 때 든든한 기반이 되어줄 테니까. 너만의 길을 찾아가는 과정 자체가 가장 값진 공부가 될 거야. 응원한다!