나는 왜 프론트엔드 개발자가 되고 싶었는가?
최근 다시 이직을 준비하면서 이 원초적인 질문을 스스로에게 하는 시간을 갖게 되어 글로 남겨보고자 한다. 결국 시장에서 원하는 사람은 나의 강점을 파악하고 그 강점을 잘 어필할 수 있는 사람이라고 생각하기 때문이다.
(또한 새롭게 지원하는 곳의 담당자 분께서 나에 대해 관심이 있으시다면 참고해주셔도 좋을 것 같다. 가감없이 나란 사람에 대해서 조금이라도 정보를 드릴 수 있는 글이 됐으면 하는 바람에 글을 작성해 본다.)
내가 생각하는 소프트웨어 개발자
개발 공부를 시작한지도 어언 3년 째가 되었으며, 그 동안의 수학기간을 제외한 2년여간 다양한 프로젝트에 참여했었다.
첫 1년여간은 유수의 금융, 보험사들과 협업하며 소프트웨어 개발 프로젝트란 무엇인지, 어떤식으로 프로젝트가 돌아가는지, 개발자 및 프로젝트 담당자는 어떤 입장을 갖고 있는지 그리고, 원활한 프로젝트가 진행되기 위해선 내가 어떤 능력과 태도를 지녀야 하는 지 등을 깨달을 수 있는 경험의 시간이었다.
그 다음 반년여간은 자사 서비스를 만드는 회사의 실무 개발자로서 0부터 1까지 전체 프로세스를 경험하며, 기술자로서 좀 더 심도있는 고민과 성장을 할 수 있는 시간이었다. 이전에는 주로 주어진 태스크를 이해하고 효율적으로 처리하는 프로세스에 집중했다면, 이번엔 그에 더해 핵심 요구사항을 위해 필요한 기능들을 기술적 관점에서 분석하고 더 좋은 프로덕트를 만들기 위해 끊임없이 고민하며 문제를 해결하는 성장의 시간이었다.
이런 시간과 경험을 통해 나름 나만의 가치관으로 소프트웨어 개발자를 정의할 수 있게 되었는데, 내가 생각하는 소프트웨어 개발자란 다음 3가지 특징을 갖는다.
1. 장인정신
2. 카운셀링
3. 돌연변이
이 3가지 특징에 대해 구구절절 설명하면 글이 너무 길어지니 이 글에서는 짧게 한 두문장으로만 정리해서 남겨놓고자 한다. (혹 이 글을 보실 인사 담당자분이 계실지 모르겠지만, 궁금하시면 면접때 물어봐주시면 즐겁게 이야기할 수 있을 것 같습니다.)
장인 정신
- 소프트웨어는 장인의 작품이고, 개발자는 그 작품을 만드는 장인이다. 따라서 소프트웨어를 자신의 분신처럼 생각하고 부끄럽지 않은 작품을 만들기 위해 노력해야 한다.
카운셀링
- 개발자는 소비자(고객)와 공급자의 고민을 모두 상담해주는 카운셀러 같은 존재이다. 따라서 양측의 고민을 이해하는 능력과 문제를 해결하는 능력 둘 다 필요로 한다.
돌연변이
- 기술은 마치 살아있는 유기체처럼 발전하고, 변화하는 환경에 적응하지 못하면 도태되기 마련이다. 개발자 역시 이런 돌연변이 특성을 갖고 있지 않으면 살아남기 어렵다.
그래서 왜 프론트엔드?
프론트엔드 개발자로 일을 하거나 면접을 하게되면 흔히 받는 질문이다. 나는 그때마다 길게 얘기할 수 없어 단축해서 말을 했지만, 이 글에서는 보충설명겸 그 때의 좋았던 기억을 떠올리기 위해 프론트엔드 개발자가 되기로 결심하게 된 계기에 대해 정리해보고자 한다.
근 몇년사이에 프론트엔드 개발자에 대한 인식이 많이 바뀌었지만, 불과 이전까지만 해도 프론트엔드 개발자는 흔히 퍼블리셔와 차별점이 부족한 개발자로 여겨져 왔다. 객체지향 프로그래밍이 대세였던 시기였고, 프론트엔드 분야라는 것이 생기지 얼마 안된 시점이라 그럴 수 밖에 없었던 것도 이해는 간다.
(그런 의미에서 ES6는 정말 혁명이라 할 수 있을 것 같다.)
나의 첫 프로그래밍 은사님 역시 커리어 전반을 JAVA 개발자로서 백엔드를 주 업무로 삼아오셨었고, HTML과 CSS, JS를 동등선에 두고 가볍게 취급하시는게 느껴졌기 때문이다. (적어도 당시의 나에겐 그렇게 느껴졌다.)
그래서 나 역시 프론트엔드의 중요성이나 가치에 대해 느끼지 못했고 당시에는 부끄럽지만 오직 취업을 위한 공부를 해왔던 기억이 있다.
(그 와중에서도 Java보다 JS에 호감을 느껴서 따로 시간을 내서 공부한 것은 지금 생각해보면 기특한 일이었다고 생각한다.)
그러던 중 내가 프론트엔드의 중요성과 가치를 알아보게 된 계기가 생겼다. 당시 고객사의 SAP 솔루션을 고도화하는 프로젝트에 참가한 나에게 기존 솔루션의 UI 개편과 UX 개선을 하는 일이 주어졌다. 이전 프로젝트에서 수백만 데이터의 처리 성능 개선 같은 일을 하다가 갑자기 UI 개선이라니 귀찮다는 생각이 들었지만, 업무를 진행하면 이 생각이 곧 어리석다는 사실을 깨달았다.
프로젝트 진행을 위한 담당자와의 미팅에서 시스템을 어떤식으로 업무에 사용하는지, 기존 시스템의 불편한 것은 무엇인지, 필요없는 기능이나 추가하고 싶은 기능은 없는지 등 기존 업무 방식에선 생각하지 못한 관점에서 프로덕트를 바라보면서 개발을 한다는 점에서 신선함과 즐거움을 느꼈다.
특히 금융 시스템이다 보니 화면에 여러 데이터를 입력해야하는데, 이로 인해 사용자의 눈이 쉽게 피로해질 수 있다는 점을 주목해 자연스러운 시선에 맞춰 Input 창을 재배치하고, 한 눈에 들어올 수 있도록 UI를 수정하는 작업을 진행하였고 시연시에 사용자의 만족도 높은 피드백을 받을 수 있었던 경험을 통해 개발이란 단순히 구현과 성능 개선을 하는 것이 아니라, 사용자들에게 어떻게 하면 더 좋은 방향으로 발전시킬 수 고민하는 것도 포함되는 거라는 사실을 깨닫게 되었다.
이 때를 계기로 조금씩 프론트엔드 개발에 관심을 갖게 되었고, 최근에는 새로운 회사에서 사내 신규 프로젝트의 핵심 개발자의 역할을 맡기도 했었다. 그 이야기는 여기서 다루기엔 또 방대한 분량이 될 것 같아 생략하고, 결론을 지어보고자 한다.
나는 어떤 프론트엔드 개발자의 길을 걷고 있는가
앞서 언급한 내가 생각하는 소프트웨어 개발자의 3가지 특징에 더불어 프론트엔드 개발자는 특히 2번 특징인 카운셀링의 역할이 중요한 개발자라고 생각한다. 기획자, 디자이너, 백엔드 개발자, 사용자까지 접점이 많은 역할이니만큼 여러 파트의 관점을 다양하게 아우를 수 있는 역량이 필요하다고 생각한다.
그런 의미에서 내가 해온 그 동안의 일들이 프론트엔드 개발자로서의 역량에 도움이 되었다고 생각한다. 공기업에서는 민원 업무를 통해 사용자의 니즈를 캐치하고 분석해서 문제 해결에 적용하는 능력을 배웠고, 자산운용 솔루션 회사에서는 다양한 기업들과의 협업 프로젝트 통해 개발자로서 어떻게 소통하고 정해진 시간 내에 효율적으로 개발하기 위한 노하우 등을 배웠다. 마지막으로 이커머스 솔루션 회사에서는 프론트엔트 실무 기술과 프로젝트 매니징 능력 등을 배우며 또 한 단계 개발자로 성장할 수 있었다고 생각한다.
이 문단의 소제목이 처음에는 나는 어떤 프론트엔드 개발자가 되고 싶은가 였지만, 중간에 변경하게 되었다. 그 이유는 현재 내가 알고 있는 지식의 범위에서 좋은 프론트엔드 개발자를 상정해 버리면 나중에 새로운 인사이트를 얻기가 어려울 수 있겠다는 생각이 들었기 때문이다. 앞으로 내가 일하게 될 곳이 어느 곳인지는 모르겠지만, 그곳에서는 내가 여태까지 배운 경험을 살려 또 다른 능력을 개발할 수 있는 곳이 였으면 한다. 그리고 다시 이 질문을 떠올렸을 때 남들에게 공유할 수 있는 새로운 인사이트가 생겼으면 하는 바람을 가지며 이만 글을 마치려고 한다.