개발자 선배님들과 이야기하다보면 내가 프론트보다 백엔드적인 성향이 강하다는 평을 듣곤 한다. 백엔드 경험은 옛날에 학교에서 자바수업 들으면서 스윙으로 소켓 통신 구현해본게 다인데 말이다.
저런 평을 듣다보면 백엔드 공부를 해보고 싶다는 생각이 들면서도 내가 왜 프론트엔드 개발자를 꿈꿨는지에 대해 생각하게 된다.
프론트엔드 개발자를 지망하게 된 계기는 three.js로 태양계를 3D로 구현한 사이트 이었다. 물리 공식을 적용해 각 행성의 위치와 자전과 공전을 구현한 사이트였는데, 사용자의 마우스 움직임에 따라 UI가 변경되는 것을 보고 저런 인터렉티브 UI를 구현하는 프론트엔드 개발자가 되어야겠다고 결심하게 되었다.
하지만 실 서비스에서 저런 3D 인터렉션을 할 일이 생각보다 많진 않더라. 그리고 프론트엔드란 데이터를 잘 보여주고 빠르게 보여주는 것이 중요한 역량이더라고.
그래서 조금씩 성능 최적화에 대해 알아보고 적용하게 되었다. 트리쉐이킹, 캐싱, 버추얼 스크롤, AWS S3... 이런 것들을 적용하다보니 최적화에 재미를 붙이게 되어 대규모를 가정해 가능한 모든 최적화를 해보려고 했었다.
또한 최대한 컴포넌트를 재사용하고 싶어서, 이해는 거의 못했어도 어떻게든 디자인 패턴을 적용해서 해답을 찾으려고 노력하였다. "컴포넌트의 공통 로직을 재사용하고 불필요한 인터페이스를 숨긴다"라는 생각으로 하나의 컴포넌트를 몇 번을 리팩터링하면서 계속 정답을 찾으려고 고민했었다.
하지만 프론트엔드에서 성능 최적화가 백엔드보다 상대적으로 덜 중요하기도 하고, 컴포넌트를 재사용하려고 하던 방식이 때로는 독이 될 때도 많더라고. 하드 코딩이 더 좋을 때가 많더라. 그러다보니 이런 내 고민들이 상대적으로 덜 중요한 걸까... 라는 생각이 들었다. 그러면서 동시에 이 니즈가 백엔드에서 충족될 수 있는 거라면, 백엔드로 커리어를 잡아볼까 라는 생각을 하였다. (백엔드를 절대 쉽게 본 것이 아닙니다)
이러한 생각을 하다가 약간의 무력감이 느껴져 며칠간 내리 쉬었다. 그러다 어제 오로지 재미만을 위해 three.js로 3D 카드를 만들어 보았다. 카드가 마우스 움직임에 따라 360도 움직이고, 몇 초간 마우스 움직임이 없으면 원상태로 돌아가는 기능이었다.
온갖 인터렉션을 집어 넣으면서 내가 이런걸 하기 위해 프론트엔드를 지망했었다는걸 다시금 깨달았다. 그리고 이런 인터렉션이 정말 재미있다는 생각이 들었다! 그동안 잊고 있었던 프론트엔드만이 느낄 수 있는 즐거움이었다! 이런 경험을 현업에서 10퍼센트라도 한다면 정말 행복할 거 같다는 생각이 들었다.
그래서 나는 일단은 지금처럼 프론트엔드 개발을 하기로 결심했다. 아직은 정말 재밌으니까! 하지만 백엔드 공부를 1년 안으로 시작하기로 결심했다. 백엔드도 1년정도 한 뒤에 둘 중 더 흥미를 느끼는 분야를 선택하기로 결심했다.
화이팅입니다!!