온라인에서와 다르게 오프라인에서 여러 개발자를 만나보면 100이면 100 하는 얘기가 있다.
“아, 리액트 공부해야 하는데” “아, 플러터도 배워야 하는데” “쿠버네티스도 배워야 하는데”…
이처럼 각자 분야에서 트렌드가 된 기술을 배워야 한다거나, 분야를 넓히기 위해 다른 분야의 트렌드 기술을 배워야 한다고 생각한다.
심지어 과거 PHP, jQuery를 오래전부터 사용해 온 개발자를, 최근에 만났는데, 같은 얘기를 했다. 최근 기술을 배워야 하는데 못 따라가겠다고.
개발자의 이러한 성향 덕분에(?) 온라인 강의 시장이 개발 관련 주제로 크게 성장했던 것 같고, 시장도 제일 큰 것으로 보인다. 입시를 뺀다면.
당연히 나도 마찬가지였다. 한국에서 워낙 대세인 스프링뿐만 아니라 함께 발전해 온 OOP 개념, 기술을 따라가지 못했다. 갈증이 생겼고, 책도 보고, 영상도 봤다. 실제 개발자들이 맨 줄에서 걷고 있다면, 나는 100보쯤 뒤에 있을 것으로 생각했었는데, 실제로 살펴보니 그렇게까지 멀진 않았다.
개발자에게 중요한 것은 이 요구사항대로 구현할 수 있는지이다. 조금 더 정확히 제한하면, 제한된 시간 안에 할 수 있는지 이다. 여기서 요구사항은 새로운 기능일 수도 있고, 기존 기능의 변경일 수도 있다. 결국 제한된 시간 안에 개발할 수 있는지가 가장 중요한 부분이다.
이러한 관점에서 보면, 기술은 언제나 도구에 불과하다. 리액트를 사용해야만 만들 수 있는 서비스는 없다. 당연히 플러터만 사용해야 만들 수 있는 앱도 없다. 내가 바닐라JS와 jQuery만을 가지고 프론트엔드를 다 만들 수 있고, 오래 해와서 내가 쓰는 라이브러리 셋도 있고, 결국 제한된 시간 안에 개발할 수 있는 사람이라면 굳이 죄책감을 가질 필요는 없다. 당연히 배우면 좋겠지만, 배워야만 하는 것은 아니니까.
다른 예를 하나 더 보자. MSA로 구성하진 않았지만, Scale-out은 필요한 서비스가 있다면 쿠버네티스를 사용할 필요가 없다. 굳이 “요즘 배포하려면 도커와 쿠버네티스는 당연히 알아야지”라는 대세에 흔들릴 필요가 없다. 이미 인스턴스 그룹같이, 클라우드에서 Scale-out 해주는 서비스만 알아도 충분하다.
여기까지만 본다면, “만들 줄 알면 공부할 필요 없네”라는 생각이 들고, 실제로 맞다고 생각한다. 왜냐하면 결국 새로운 것을 학습해야 하는 것은 그것들이 필요해질 때이다. 개발 조직이 커져서 프론트엔드를 페이지 단위로 개발할 수 없고 컴포넌트로 구성하고, 재사용성도 확보가 필요해지고 그럴 때 고민해 보는 것이다. 팀 구성이 TS(TypeScript)나 리액트에 대해 진입장벽을 느낄 구성원이라면 상대적으로 쉬운 Vue로 시작할 수도 있는 것이다.
즉, 이미 필요한 사람은 “~해야 하는데” 라는 말을 사용하지 않고, 이미 하고 있다. 필요하니까.
그러니 죄책감 가질 필요 없다.
다른 관점에서 바라보면, 이렇게 볼 수 있다. 배우고 싶은 기술이 있으면, 그 기술이 필요한 서비스를 만들거나, 만드는 곳으로 가야 한다는 것이다. 사실 당연한 얘기다. 동시접속자가 1~2명이고 DAU가 10명 내외인 서비스를 운영하면서, 페이지 캐시를 위해, Redis를 붙이지는 않을 것이다. 동시접속자가 늘어나고, DB 인스턴스가 힘들어하고, 여러 지표가 드러날 때 또는 예상될 때 고려하게 된다.
그러니, 개발자들은 뭔가를 하고 있지 않다고 죄책감 느끼지 않았으면 좋겠다. 그렇게 자유로워진다면, 정말 하고 싶은 공부를 할 수도 있을 것이다.