'풀스택 개발자'
흘깃 문구를 보고는 이내 다른 지원서를 살폈다.
"백엔드, 프론트 엔드를 모두 아우르는 풀스택 개발자가 되고 싶습니다."
요샌 풀스택이 유행인가!?
지원서 살피다보면 '풀스택(Full Stack)'이란 단어를 종종 접하게 된다.
나의 편향일지는 모르나,
신입 또는 주니어 레벨의 지원서에서 특히 많이 본 것 같다.
일단 서두에 못박고 시작하겠다.
"99% 확률로
당신은 풀스택 개발자가 아닙니다."
풀스택 개발자란?
우선 풀스택 개발자가 무엇인지 정의 하는 것부터 시작해보자.
단어가 의미하는 바와 맥락을 공유할 수 있다면,
우리가 건설적으로 의견을 나눌 수 있을테니까.
AWS 문서에서는 풀스택 개발자를 다음과 같이 설명하고 있다.
풀 스택 개발자란 무엇입니까?
클라이언트 및 서버 사이드 코드를 학습하고 웹 사이트가 작동하도록 해주는 모든 기술군에 대해 이해하고 있는 개발자입니다. 클라이언트 측에서는 일반적으로 HTML, CSS 및 JavaScript를 사용하여 웹 사이트에 실제로 표시되는 모든 사항(예: 레이아웃, 텍스트 및 이미지 배치, 색상, 글꼴, 버튼 등)을 개발할 수 있습니다. 서버 측에서는 클라이언트 측에서 수신된 데이터를 조작할 수 있는 알고리즘 및 비즈니스 로직을 개발할 수 있습니다.
AWS 문서에서는 개발 영역을 크게 클라이언트 사이드와 서버 사이드로 구분하며,
풀스택 개발자는 두 기술군을 이해하는 자라고 설명한다.
다소 상이해보이는 두 가지 영역의 기술을 다루는 사람.
개발 영역은 아니더라도, 현실에서는 오타니 쇼헤이 정도가 비슷한 사례가 아닐까.
이도류라고 불리며 투타를 겸업하고 있으니까 말이다.
당신이 풀스택 개발자가 아닌 이유
어, 그럼 저는 풀스택인데용?
자, 자, 아직 당신을 풀스택 개발자로 간주하긴 이르다.
단순히 클라이언트와 서버를 좀 알면 풀스택이라 부를 수 있을까?
아니다.
어떤 개발 직군이든 클라이언트와 서버 사이드의 기초 지식 함양은 기본 소양이다.
기초 수준의 지식은 굳이 프론트엔드와 백엔드로 구분지을 이유가 없다.
기본기니까.
한편 요즘에는 개발 도구와 프레임워크가 워낙 발달 되어 있다.
깊은 이해 없이도 나쁘지 않은 수준의 어플리케이션을 만들 수 있다.
예컨대 백엔드 개발자라도 리액트(react.js) 써서 간단한 UI를 만들 수 있고,
프론트엔드 개발자라도 Next.js 및 docker 등을 사용해서 서버를 만들 수 있다.
그래서 다음과 같은 맥락에서,
나는 거듭 당신이 풀스택이 아니라고 말해주고 싶다.
전문가 문제
비유를 통해서 전문가 문제에 대해 다뤄보자.
앞서 나는 야구선수 오타니 쇼헤이를 언급했다.
오타니의 대단한 점은 단순히 투타 겸업을 하기 때문만이 아니다.
그가 대단한 이유는 두 가지다.
한 가지 이유는 퍼포먼스다.
오타니는 뛰어난 성과를 보여줬다.
보통 한 가지 분야를 그럭저럭 하기도 쉽지 않은데,
그는 두 가지 분야를 '뛰어나게' 잘했다.
또 다른 이유는 메이저 리거라는 것이다.
동네 야구가 아니다.
그 레벨에서는 사랑시 고백구 행복동의 김덕배도 투타 겸업을 할 수 있다.
메이저 리그다.
오타니는 세계 최고의 재능이 모인 곳에서 투타를 겸업하고 있는 것이다.
다시 개발의 세계로 돌아와보자.
여전히 풀스택 개발자라고 생각하는 당신,
다음 두 가지 문제에 Yes라고 답할 수 있는가?
하나, 당신은 뛰어난 퍼포먼스를 보여주고 있는가?
UI는 수려하고 UX는 군더더기 없으며,
API 응답 속도는 빠르고 REST한 요청과 응답을 제공하며,
확장에는 열려 있고 수정에는 닫힌 시스템을 구축했는가?
둘, 당신이 소속된 리그는 어디인가?
당신이 만든 프로덕트를 필요로 하는 구체적인 클라이언트가 있는가?
해당 프로덕트를 사용할 유의미한 규모의 사용자는 있는가?
그럼에도 풀스택이 괜찮은 이유
여태까지 사람 기죽이는 소리만 주욱 한 거 같아서 죄송하다.
이래놓고 사실 난 풀스택을 좋아한다.
다만 조건이 붙는다. 조건부 사랑.
그 조건은 엔지니어로서 성장 기회를 주어야 한다는 것이다.
다음과 같은 상황에서는 적극적으로 풀스택을 해보는 것은 어떨까?
프로젝트 초기
프로젝트 초기 또는 PoC 성격의 프로젝트라면,
풀스택을 지향해볼만 할 것 같다.
신속하게 만드는 게 중요하니까.
높은 퀄리티를 뽑겠다고 과도한 시간을 붓는 게 더 손해니까 말이다.
짧더라도 앞단부터 뒷단까지의 개발 사이클을 겪는 것은 값진 경험이 될 것이다.
마치며
한 가지를 제대로 하기도 힘든 세상인데,
두 가지를 동시에 하려면 얼마나 많은 도전에 직면하겠는가?
풀스택 개발을 하는 동안 혹독한 시간을 보낼 것이 분명하다.
하지만 힘든 경험 뒤에는 엔지니어로서 성장이 기다리고 있지 않을까?
안녕,
즐거운 개발 생활을 기원하며!
'공학 > 단상' 카테고리의 다른 글
나는 좋은 팀원입니다? (0) | 2021.07.20 |
---|---|
React Native 맛보기 (0) | 2020.12.08 |
사내 교육을 망치고... (0) | 2020.10.13 |
리팩터링 (0) | 2020.08.17 |
1월은 무엇을 했나? (0) | 2020.08.17 |