프론트엔드 vs 백엔드 무엇이 더 어려운가..

Longcat·2025년 4월 30일
0

뻘글

목록 보기
1/2
post-thumbnail

비자발적 풀스택 개발자로 일한지 2년을 돌아보며

나는 우연히 정부지원사업에 선정된 덕분에 창업이라는 길에 들어섰고, 지금도 (아직까지는) 사업을 운영 중이다. 창업 이후 자연스럽게 다양한 개발자들과 교류할 기회가 생겼다. 주니어 개발자부터 수십 년 경력의 시니어까지, 스펙트럼은 넓다.

물론 내가 긴 세월 현업에서 몸담은 것은 아니기에, 이 글은 철저히 나의 개인적인 경험과 주관에 기반한 이야기다. 가볍게 읽어주시면 감사하겠다.


비정상적(?)인 백엔드 선호도

스타트업은 본질적으로 자원이 부족한 조직이다. 그래서 채용도 정규직보다는 사이드 프로젝트나 단기 계약 위주로 이루어지는 경우가 많다. 나 역시 그런 사이드 프로젝트에 참여하거나, 다른 스타트업들의 개발 과정을 구경할 일이 종종 있었다.

그런데 놀랍도록 일관된 흐름이 하나 있었다. 바로 백엔드 개발에 대한 과도한 선호다.
더 흥미로운 점은, 이미 프론트엔드에서 나름의 성과를 쌓은 몇몇 주니어 개발자들조차 장기적으로는 백엔드 개발자로의 커리어 전환을 고민하고 있다는 사실이다.

나는 원래 전기전자공학을 전공했기 때문에 웹 개발보다는 C/C++나 Python이 더 익숙했다. 그럼에도 불구하고, 회사를 직접 운영하다 보니 자연스럽게 비즈니스 요구에 따라 프론트엔드부터 백엔드, 데브옵스, MLOps까지 전방위적인 개발 업무를 다루게 됐다. 말하자면, 비자발적 풀스택 개발자가 되어버린 셈이다.

이 과정에서 나는 프론트엔드와 백엔드를 최대한 편견 없이, 그리고 공식 문서와 기술 서적 중심으로 공부하고 실제로 적용해 보았다. 그리고 아래와 같은 의문들을 품게 되었다.


1. 프론트엔드가 백엔드보다 쉽다고? 정말 그런가?

대학 시절 나는 주로 임베디드 시스템이나 AI 관련 개발을 해왔던 전형적인 공대생이었고, 디자인 감각은 솔직히 부족한 편이다. 그럼에도 불구하고 실제 현업에서 프론트엔드 개발을 해보며 느낀 점은 생각보다 훨씬 어렵다는 것이다. 그 이유는 다음과 같다.

  1. 의사결정의 복잡성
    프론트엔드는 직무 특성상 디자이너, 기획자, 마케팅팀 등 다양한 이해관계자들과 지속적으로 협업해야 한다. 자연히 피드백도 많고, 그만큼 의견 조율과 결정에 드는 시간과 에너지가 크다. 사공이 많으면 배가 산으로 간다는 말이 괜히 있는 게 아니다.

  2. 기술 스택의 다양성과 조합의 무한성
    React, Svelte, Vue 등 프레임워크가 워낙 다양하고, React 하나만 봐도 상태 관리에 Redux를 쓸지, Jotai를 쓸지, Context로 때울지 등 선택지가 끝이 없다. 프로젝트마다 최적의 조합을 찾는 일 자체가 하나의 과제다.

    예를 들어, "React 기반 프로젝트를 시작한다"고 가정해도 선택해야 할 요소들이 어마어마하게 많다. 조합을 구성하는 대표적인 결정 항목은 다음과 같다:

    1. 어떤 React 프레임워크를 쓸 것인가?

      • React (CRA)
      • Next.js
      • Remix
      • Gatsby
    2. 상태 관리는 어떤 라이브러리로 할 것인가?

      • Redux (Toolkit)
      • Recoil
      • Jotai
      • Zustand
      • MobX
      • 기본 Context API
    3. 디자인 시스템/컴포넌트는 어떻게 구성할 것인가?

      • 처음부터 직접 구성하기 (vanilla CSS, Tailwind, etc.)
      • Material UI (MUI)
      • Chakra UI
      • shadcn/ui
      • Radix + Tailwind 커스텀

    지금 당장 떠오르는 것만 해도 경우의 수가 120가지 이다. 물론 자주 사용되는 조합이 있기는 하겠지만 과연...?

  3. 테스트 코드 작성의 난이도
    내가 주로 사용하는 FastAPI에서는 pytest를 활용해 비교적 단순하게 테스트 코드를 작성할 수 있다. 반면 프론트엔드는 DOM 조작, 사용자 상호작용, 스타일링 변화 등 눈에 보이는 동작을 테스트해야 하기 때문에 진입장벽이 높다. 테스트 환경 구축도 쉽지 않다. 시간에 쫓겨서 시간 남는 사람이 이것저것 버튼 눌러보는 것으로 QA를 대신하는 경우가 많을것이다.

  4. 대규모 프로젝트의 아키텍처와 지속적인 유지보수 부담
    단순한 ToDo 앱은 누구나 만들 수 있다. 그러나 실사용이 가능한 상업적 수준의 웹사이트는 이야기가 다르다. 규모가 커질수록 코드 구조를 어떻게 설계할지, 수십~수백 개의 의존성 패키지를 어떻게 관리하고 마이그레이션할지 신경 써야 할 게 많아진다.

    코드의 지속가능성에 큰 영향을 주는데, 예를 들어 인수인계를 한다고 가정해 보자. FastAPI 기반 백엔드라면? 솔직히 인수인계가 필요한가 싶다. 엔드포인트가 많더라도 docstring을 잘 작성해 놨다면 /docs 만으로 충분할 것이다.

    하지만 프론트엔드는? 파일 구조, 전역 상태, 스타일 전략, 라우팅 설정 등 수많은 암묵적 컨벤션이 얽혀 있어 설명 없이는 한 줄도 고치기 힘들다.

  5. 모바일 반응형 대응
    데스크톱과 모바일 등 다양한 디바이스에 대응하려면 레이아웃을 반응형으로 짜야 하고, 이는 곧 코드 작성량과 테스트 범위를 2배로 늘리는 셈이다. 게다가 브라우저 간 렌더링 차이도 여전히 무시할 수 없는 요소다.

  6. LLM 기반 코드 생성의 한계
    많은 사람들이 나처럼 LLM을 이용해 코딩 보조를 받고 있지만, 프론트엔드에선 기대만큼 효율적이지 않다. 이유는 간단하다. 각 프로젝트의 상태 관리 방식, 디렉토리 구조, 스타일링 전략이 천차만별이기 때문이다. LLM이 맥락을 파악하지 못하면, 질문을 수십 번 반복해야 겨우 쓸만한 코드를 얻는다.

  7. 처참한 편리성을 가진 CSS 문법
    솔직히 가장 많은 시간을 소모하는 것은 이 부분이 아닐까 싶다...

나도 대학교 2학년 부터 나름 프로그래밍을 열심히 공부했다고 생각했는데, 프론트엔드는 공부가 쉽다고 쳐도 제대로 하기가 정~말 어려운 것 같다. 차라리 어셈블리로 코드를 작성하라는 것은 참을 수 있는데 스파게티 형식의 React를 표준 문법으로 전환하는 일이 부여된다? 바로 사직서 제출할 것 같다.


2. 백엔드는 생각보다 쉽...다(?)

여기까지 정리해보면, 나는 백엔드가 프론트엔드보다 쉽다고 느낀다.
물론 이건 어디까지나 Python 기반 백엔드를 쓰는 나의 입장에서 그렇다는 얘기다.

JavaSpring Boot 기반의 백엔드 개발자라면 또 다른 지옥을 경험 중일 수도 있다.
하지만 적어도 FastAPI + PostgreSQL + Docker 조합이라면,

  • 문서화도 잘 되어 있고
  • 테스트도 구조적으로 작성 가능하며
  • 배포도 비교적 단순하다

내 기준에서는 훨씬 더 "명확하고 예측 가능한 세계"에 가깝다. 그저 수많은 함수들을 만들고 API에 연결하는 정도?

LLM에게 설명하기도 쉽다. 백엔드 코드를 작성하는데 어려움을 겪는다면 조금 돈을 들여서 Firebase, supabase같은 서비스를 활용할 수 있다.


3. 왜 프론트엔드는 이렇게 평가절하당할까?

솔직히 말해, 현장에서 프론트엔드는 종종 "하찮은 일"이나 "감성적인 영역"으로 치부되곤 한다.

왜 이런 인식이 생겼을까?

  1. "보이는 것"은 쉬워 보인다
    UI는 누구나 볼 수 있다. 그래서 더 쉽게 평가받는다.
    동작은 되는데 버튼이 좀 이상하다? → "그냥 CSS 좀 고치면 되잖아."
    애니메이션이 어색하다? → "그거야 감성이지 뭐."
    하지만 정작 그 '보이는 것' 하나가 사용자의 전반적인 경험을 좌우한다.

  2. 코드보다 감성, 협업보다 설득이 중요해 보이기 때문
    프론트엔드는 코드를 잘 짜는 것보다 조율하고 설득하고 공감하는 일이 많다.
    그래서 '딱 떨어지는 정답'이 없고, 상대적으로 정량적 성과도 측정하기 어렵다.
    개발자 입장에서 이건 꽤 스트레스 받는 구조다.

  3. 주도권이 개발자보다는 디자이너/기획자에게 있는 경우가 많다
    프론트엔드 개발자는 종종 디자이너의 손발처럼 취급된다.
    기획서에 나와 있는 대로 "그냥 구현해 주세요." 식의 요청이 반복되면,
    자율성과 창의성이 제한되고, 자연스레 직무에 대한 인식도 낮아진다.

  4. 백엔드보다 기술적으로 단순하다고 '착각'하기 쉽다
    "API 만들고 DB 붙이는 게 더 어렵지, 버튼 좀 띄우는 건 쉽잖아?"
    이런 식의 편견은 아직도 너무 많다.
    그런데 정작 본인이 프론트를 맡아보면, 몇 시간 만에 멘탈이 나가게 된다.
    "왜 margin이 안 맞지?", "왜 모바일에서 버튼이 안 눌리지?" 같은 문제에 갇히면
    백엔드보다 훨씬 더 많은 디버깅 시간이 필요하다.


4. 백엔드 올려치기로 인한 프론트엔드 인재의 부족

안타깝게도 앞서 언급한 프론트엔드 경시 인식은 단순한 분위기에서 끝나지 않는다.
임금 격차, 역할 비중, 채용 시장 내 위상까지 직결된다.

실제로 많은 기업에서 백엔드 개발자에게 더 높은 연봉을 책정하는 것이 일반적이며,
동일한 경력이라도 프론트엔드보다는 백엔드에 더 많은 예산을 배정하는 경우가 많다.
이런 상황이 반복되다 보면 어떤 일이 벌어질까?

  1. 역량 있는 개발자일수록 백엔드를 선택하게 된다
    주어진 선택지에서 더 많은 보상, 더 높은 기술적 존중을 받는 영역이 있다면
    자연스럽게 실력 있는 개발자들이 그쪽으로 몰린다.
    그리고 이 흐름은 지금 이 순간에도 계속되고 있다.

  2. 프론트엔드 인재풀의 기술 밀도가 점점 낮아진다
    프론트엔드에 남는 인재들은 상대적으로 경험이 부족하거나,
    애초에 프론트엔드를 ‘개발 진입용’ 포지션으로 생각한 경우가 많다.
    이는 팀의 전체 기술 역량에도 영향을 미치고,
    결과적으로 프론트엔드 자체의 위상을 더욱 약화시킨다.

  3. 프론트엔드가 '디자인 구현직'으로 인식되는 악순환이 심화된다
    프론트엔드 직무에 기술적으로 숙련된 개발자가 줄어들면
    자연스럽게 해당 포지션은 “기획서에 따라 UI 만드는 역할”로 축소된다.
    그렇게 되면 다시 연봉은 낮아지고, 존중은 줄고, 기술적 성장은 멈춘다.
    이 구조는 악순환이며, 그 고리를 끊기 어렵다.

물론 모든 기업이 이런 구조에 빠져 있는 것은 아니다.
하지만 시장 전반의 경향이 이런 쪽으로 기울어져 있는 것은 부정하기 어렵다.

나는 프론트엔드 개발이 단순히 UI를 그리는 작업이 아니라
사용자 경험 전체를 설계하고, 시스템과 사용자를 연결하는 핵심 계층이라고 생각한다.

솔직히 백엔드 성능 향상이 목적이라면 눈 딱 감고 서버 등급 하나 올리면 그만이다.
DB 튜닝이나 캐시 전략, 리소스 증설 같은 비교적 직선적인 방법으로 병목을 해결할 수 있다.

하지만 프론트엔드는 다르다.
단순히 성능 수치를 올리는 것이 아니라, 사용자의 체감 속도, 전환율, 이탈률,
그리고 브랜드 인식까지 전방위적으로 영향을 미친다.

  • 버튼 하나의 위치나 색상 때문에 이탈률이 바뀌고,
  • 페이지 전환의 자연스러움이 구매율을 좌우하며,
  • 로딩 중에 보여주는 피드백 하나로도 유저 경험이 완전히 달라진다.

이건 단순히 개발을 잘하느냐의 문제가 아니다.
디자인, 심리, 기술, 데이터 기반 의사결정이 총체적으로 융합된 영역이다.
그렇기에 프론트엔드 개발자는 기술자이면서도 설계자이며, 동시에 사용자 입장에서 사고할 줄 아는 전략가여야 한다.


그럼에도 불구하고

프론트엔드, 백엔드, DevOps 등 어떤 직군이든 그 안에는 각자의 전문성과 고충이 있다. 그리고 그 누구도 '쉬운 일'을 하고 있지는 않다.

이 글은 특정 분야를 올려치거나 깎아내리기 위한 것이 아니다. 다만 풀스택 개발자로서 현업에서 겪은 솔직한 체감과, 그 과정에서 느꼈던 작은 불균형에 대한 개인적인 목소리를 기록하고 싶었다.

사실 CSS 수정하다가 현타와서 작성한 뻘글

profile
Python 중독자

0개의 댓글