나도 아직 많이 많이 많이 부족하지만 후배들이 개발 공부를 어떻게 해야 하냐고 물어보면 이 말을 가장 많이 해준다.
localhost에만 갇혀 개발을 하면 실제로 개발을 할 때 필요한 프로세스들을 정말 많이 놓치게 된다.
그렇기 때문에 단순한 개발뿐만 아니라 배포, 유지보수와 같은 경험들을 꼭 해보라고 말을 해준다.
배포나 유지 보수와 같은 경험들을 하게 되면 얻을 수 있는 능력은 너무나도 많다 그중 몇 개를 적어보려고 한다.
배포
배포를 준비하게 되면 AWS와 같은 클라우드를 사용해야 하는데, 이 과정에서 클라우드에 대한 내용을 자연스럽게 습득할 수 있다.
또, 배포를 준비하며 웹 서버, 도메인(DNS)에 대한 내용도 자연스럽게 접할 수 있는데,
이는 localhost에 갇혀있다면 회사에 들어갈 때까지 못해보는 경험이 될 수도 있다.
수동으로 하는 배포에 불편함을 느끼고 CI/CD를 자연스럽게 찾게 될 수도 있다.
이는 Github Action과 같은 도구들을 통한 단순한 자동화가 될 수도 있고 더 나아가 Docker, Kubernetes와 같은 컨테이너 기술들도 접할 수 있다
배포만 해도 벌써 AWS, nginx, Github Action, Docker 등등 실무에서 쓰이는 스택들을 사용해 본 경험이 있는 개발자가 되는 것이다.
하지만 배포에 그치지 않고 운영 경험까지 할 기회가 있다면 더할 나위 없을 것이다.
성능 최적화
운영에서 얻을 수 있는 경험은 모든 개발자들에게 소중한 경험들이지만, 성능 최적화에 대한 경험이 특히 중요하다고 느껴진다.
운영을 하다보면 트래픽이 몰려 성능 개선이 필요한 순간이 올 수 있다.
백엔드 개발자들은 이런 상황을 상상하고 설계할 수밖에 없지만 실제로 이런 트래픽이 생겨 개선해 볼 수 있는 기회가 생긴다면 크게 성장할 수 있는 기회가 될 것이다.
내가 경험했던 사례를 공유해 보면, 프론트엔드 배포를 했지만 해외에서 접속할 때 페이지 렌더링 속도가 너무 느린 이슈가 발생했고, 프론트엔드 리소스들을 cdn으로 옮기고, 이미지들의 priority를 두는 등 실제로 배포하고 운영해야만 얻을 수 있는 경험들을 얻을 수 있었다.
장애 대응
또, 운영을 하다 보면 장애를 대응해야 할 순간도 오게 되는데,
이 경험 또한 단순한 개발만 하게 되면 얻을 수 없는 경험이다.
내가 생각하는 개발자에게 가장 중요한 능력은 코딩이 아니라 위기 대처 능력이다.
실제로 개발을 하다보면 진짜 별의별 이슈가 다 나오는데 이 이슈에 대한 해결책은 대부분 책 안에 없다.
그렇기 때문에 정말 다양한 경험을 해보는 게 중요하다고 생각된다.
장애 대응을 해보면 할수록 문제를 진단하는 능력이 생길 수도 있고, 여러 가지 모니터링 툴을 다루며 예방하는 능력들이 생길 수도 있다.
어떠한 경험이던 괜찮으니 꼭 입사 전에 장애 대응에 대한 경험을 해보면 좋을 것 같다.
지속 가능한 코드
정말 솔직하게 어떤 내용을 개발하는 건 아주 짧은 시간 안에 습득할 수 있는 능력이다.
하지만 지속 가능한 코드를 만드는 능력은 경험, 시간에 정비례하는 능력이라고 생각한다.
운영을 하며 여러가지 피쳐들이 추가되게 되면 기존 구조를 리팩토링해야 할 수도 있고, 최악의 경우 기존 구조를 사용하지 못할 수도 있다.
그렇기 때문에 운영을 하다보면 지속적으로 구조를 개선하고 발전시키는 경험을 쌓을 수 있게 된다.
이러한 경험들을 피하지 않는다면 위에서 언급했던 지속 가능한 코드를 만드는 능력이 생길 것이다.
이러한 능력이 쌓이면 같은 결과물이더라도 확장성 높고 퀄리티가 높은 코드들을 작성할 수 있을 것이다.
마무리
당장 떠오르는 것만 적어놓고 보아도 모두 개발자들에게 소중한 경험들이다.
강의를 듣거나 클론 코딩만 하지 말고 프로젝트 경험을 쌓아보면 좋을 것 같다.
대학 동기들과 해봐도 좋고, 사이드 프로젝트 사이트들을 찾아서 해봐도 좋다.
자신의 능력이 부족하다고 다양한 경험을 미루지 않았으면 좋겠다.
'개인' 카테고리의 다른 글
개인 프로젝트 시작 (KBO팬들을 위한 플랫폼) (0) | 2025.03.14 |
---|