오늘은 2023년 04월 30일

2017년 10월 16일 특성화 고등학교 학생이었던 나는 하루 아침에 프론트엔드 개발자라는 타이틀을 달고 인생에 큰 전환점을 맞이하게 된다. 그 누구보다 대충 살아왔지만, 그 누구보다 열심히 살아온 개발자인 내 이야기를 조금 해볼까 한다. 내 글이 각자의 개발자를 정의하는데 있어, 도움이 되길 바란다.

왜 개발자?

인생에 계획 없이 흘러가는 대로 살던 중학교 3학년 나에게 한 가지 큰 시련이 찾아오게 된다. 바로 고등학교 진학이다. 지금 다시 보면 너무 귀여운 고민일 뿐이지만, 그때의 나에게는 인생의 방향이 정해지는 것만 같은 순간이었다.

한 번뿐인 인생 좋아하는 일을 하고 살아야 한다고 생각하던 나는 내가 뭘 좋아하는지 생각했다. 어릴 적부터 맞벌이를 하시던 부모님 덕에 집에 혼자 게임을 하던 시간이 많던 나는 게임에 빠져서 살았는데 재밌게 하던 게임도 많이 하면 질리는 법 어느 순간 내가 재밌는 게임을 만들어야겠다는 생각에 취미로 플래시8, 쯔꾸르 등을 이용하여 게임을 만들었었는데, 이게 너무 재미있다는 생각을 하게 되어 개발자를 해야겠다고 빠르게 결단내린 후, 진학을 결정했다.

쯔꾸르 게임 화면
지금봐도 명작이다.

나는 무교이지만 참 좋아하는 말 중에 인간이 신을 닮아 창조를 좋아한다 말을 들은 적이 있다. 그 말대로 세상에 없던 것을 만드는 개발이라는 것이 마치 내가 신이 된 것만 같은 느낌을 주었고, 그때부터 직업이 된 지금까지 스트레스는 받을지라도 그 스트레스마저 앞으로도 행복해하며 개발자가 내 길이라고 느끼며 일찍 좋아하는 것을 찾은 것에 감사하며 살고 있다.

프론트엔드 개발자

입사 전까지 웹은 한 번도 한 적이 없었던 내가 지금은 프론트엔드 개발을 하고 있는데, 사실 처음엔 프론트 엔드 개발자에 뜻이 없었다. 입사 당시 20명이 조금 안 되던 회사에서 필요한 역할이 프론트엔드 개발자였고, 뭐가 됐든 회사에 도움이 되고 싶었기에 랜딩페이지 개발부터 시작해서 지금은 회사에서 가장 오래된 프론트 개발자다.

다시 생각해보면 웹 서비스가 복잡해지며 우리나라도 Jquery 중심의 웹 퍼블리셔에서 리액트의 유행과 함께 프론트엔드 개발자로 넘어가는 시기에 프론트엔드 개발자가 되어, 좋은 시기에 시작을 한 것 같다. 운이 정말 좋았다고 생각한다.

개발자란?

운이 좋게도 20명이 안 되는 초기 스타트업에 들어와서 첫 매출이 발생하는 것부터 지금은 80명이 넘어가며 조직의 역할이 나눠지고 세분화되는 IT 회사의 성장 과정을 겪고있는데, 그 안에서 변화와 함께, 지금까지 느낀 개발자가 무슨 일을 하는 직업인지를 적어보려고 한다.

입사 직후

회사에 어떻게든 도움이 되고 싶었던 시기

처음의 나는 화면 개발 도구였다. 첫 작업은 랜딩 페이지 작업이었는데, 직무를 수행하기 위해 JavaScript, HTML을 빠르게 익혀서 Jquery를 이용하여 정적인 웹 사이트를 (약 1주 정도 학습을 했던 것으로 기억한다.) 디자이너의 디자인을 똑같이 구현하는 일을 하였다. 2인 1조로 의사소통을 하며 바로 옆자리에서 피드백을 받고 화면을 만들며, 처음에는 1주일에 한 페이지를 만들다가 나중에 가서는 하루에 한 페이지를 찍어내는 기계가 되었다.

1~2년차

위에서 주는 일을 받아서 어떻게 구현에 집중하던 시기

3달정도 랜딩 페이지 업무를 마치고, 처음으로 서비스 개발에 들어갔는데 이 시기의 나는 프론트엔드 코드 몽키 정도가 아닐까 싶다.

이때 우리 서비스는 Springvelocity라는 템플릿 엔진과 Jquery를 사용하여 개발을 진행했는데 당시에는 프론트엔드 개발팀이 따로 있는것이 아니라 백엔드 개발자가 완성한 기능을 바로 화면에 그리고, 조금 기능 요구가 많은 페이지들을 따로 빼서 3명의 프론트엔드 개발자가 각각 개발을 진행하였다. 그러다 연차가 높은 개발자 한 분이 React라는 것을 도입하셔서 그에 따라 React를 부랴부랴 공부하여 (Velopert선생님 만세) 내가 이 기능을 구현할 수 있을까? 에만 집중하던 시기였던 것 같다.

3~4년차

뭐든지 만들 수 있어 => 뭐든지 못 만들겠어…

그렇게 리액트로 개발을 이어가던 중, 프론트엔드 팀이 생겼다. 이 기간 동안 3~4명의 프론트 개발자들과 일을 같이하였는데, 이때부터 드디어 개발자라는 직업의 시작이 아닌가 싶다.

Canvas로 차트를 만들기도 하고, 이제 요구사항을 받으면 얼마나 걸릴지도 가늠이 가고 개발도 순조롭게 진행되는 단계라고 생각했다. 어려워 보이는 일이 많이 없었고, 공부하고 싶은 것들이 넘쳐났다. 그래서 전에는 바쁘다는 핑계로 많이 하지 못했던 공부들을 하기 시작했다. JavaScript, HMTL, CSS (많은 프론트엔드 개발자가 간과하는 부분인데 CSS를 잘하는 것은 생각보다 더 어렵고 굉장한 일이라고 생각한다.), React 등 사용중인 기술을 깊게 배울 수 있는 자료를 찾거나 책을 읽었고, 디자인 패턴, 개발 방법론 등 흥미가 생기는 것들은 모두 읽었다.

그러고 내가 만들고 있는 코드들을 보니 다 못 만든 코드로 보이기 시작하기 시작했다. 당장 서비스에 있어서 필요한 요구사항만 충족했지, 유지 보수성, 성능, 패턴 등이 부족했고, 다음 개발 요구사항을 받았을 때에 이런 것들을 고려하다 보니 오히려 아무것도 못 하겠는 상황이 펼쳐졌고, 너무 길게 고민하다가 기간이 다가올 무렵 밤새며 완성을 하는 패턴이 반복되었다.

5~6년차

이젠 조금 안다. 개발을 왜 해야하는가? 어떻게 해야하는가?

드디어 현재이다. 이 무렵 아무것도 못 하는 상황을 넘어가서 개발자가 무슨 일을 하는 직업인지에 대한 정의가 좀 되었는데, 이 상황을 넘긴 핵심 키워드는 팀과 공유, 비즈니스 이다.

비즈니스

제목에 개발자가 아닌 프로 개발자라고 붙인 이유, 돈을 받았으면 프로답게 일해야한다 생각한다. 개발을 위한 개발을 하지 않도록 조심하자.

첫째로 얘기할 것은 비즈니스이다. 나도 그랬지만 많은 개발자들이 착각하는 부분인데, 기술에만 몰두하여 비즈니스엔 관심이 없고, 모든 요구사항이 정리되어 나와서 요구사항에 맞추어 개발만 하는 것이 역할이라고 생각한다. 물론 상황에 따라 그럴 수도 있지만, 최소한 내가 겪고 들은 경우에선 조직의 방향을 파악하고 옵션을 제시할 수 있는 개발자가 더 대우받았다.

개발 조직의 힘이 너무 강한 경우, 비즈니스 이슈보다 개발자의 의견이 더 강해, 안전한 프로그램을 만들기 위해 더 많은 기간을 잡고 개발을 하는 경우가 있다. ‘출시한 제품이 만족스럽다면 너무 늦게 출시한 것’ 이라는 말이 있다. 시간은 돈이고 속도는 경쟁력이다. 우리는 개발을 잘 하기 위해 개발하는 것이 아니라 제품을 시장에 내보내 고객을 만족시키고 돈을 벌기 위해 개발을 하고 있다는 것을 잊지 말자.

팀과 공유

개발은 혼자하는 것이 아니다.

처음 개발자를 떠올렸을 때, 개발자는 엄청 내성적이고, 컴퓨터 덕후들이 불꺼진 방안에 앉아서 개발만 하고 있는 이미지를 떠올리곤 한다. 실제로 개발자들과 대화해보면 알겠지만 다들 설명도 잘하고 의사소통에도 적극적이다. 작은 프로젝트가 아닌 이상 개발은 협업을 요구하고 협업엔 커뮤니케이션이 중요해, 개발자에게 개발만큼이나 중요한 것이 커뮤니케이션 능력이다.

현재 우리 회사의 프론트 개발자는 13명이다. 프론트 개발팀은 이제 각각 나뉘어 각 프로젝트 그룹에 속하게 되며, 비즈니스 요구사항은 각 팀에서 해결하고 프론트 개발자들끼리는 주기적으로 모여서 이슈를 공유하는 문화를 갖고 있다. 내 역할은 프로덕트 개발, 프론트 환경 개선, 프론트 개발자들의 중간에서 기술적인 결정을 내리는 역할을 하고 있는데, 3~4년차 에 내가 해야 할 과제라고 생각하던 우리 코드와 제품의 문제점을 지금은 지속적인 공유를 통해 팀의 과제로 만들었다. 팀의 과제로 만들어지니 우선순위가 보이기 시작했고 분업이 가능해졌다. 그러다 보니 자연스럽게 해야 할 일들이 보이기 시작했고, 어느샌가 아무것도 못 하는 상황이 해소되었다.

마치며

하고 싶은 말

내 역할은 애매하다. 그렇기에 마음에 든다.

나는 지금 시니어는 멀고 주니어라 부르기엔 민망한 미드레벨 어딘가에 있는 것 같다. 팀의 리더는 아니지만, 기술은 조금 리딩하고있는 애매한 역할이다.

한 때는 내가 해야 한다고 얘기한 일들을 우선순위에 두지 않는 팀장이 원망스러운 적도 있었다. 지금은 내가 틀렸다는 것을 안다. 좋은 개발자라면 개발에만 몰두하지 말고 조직의 규모, 방향에 따라 필요한 일을 계속 찾아서 해야 하고, 항상 의사소통 해야한다.

나도 이제는 남들의 의견을 모으는 입장이 되니 모두의 의견을 모두 수용할 수는 없고, 결정은 필요하고, 시간은 제한적이기에 누군가의 의견은 들어주지 못하는 경우도 있다. 답을 원하고 찾아오는 분들에게는 죄송하지만, 나에게도 답은 없다. 쓴소리는 힘들고, 실망은 두렵다. 아마 이 글을 보는 많은 분의 사수, 리더, 팀장 등등 많은 사람이 그럴 것이다. 그들도 계속 새로운 역할에 도전하고 있고, 역할의 전문가는 아닐 수 있다. 그럴 때는 원망하지 말고 도와줄 수 있는 사람이 되기를 바란다.

목표

목표는 크게..!

내 목표는 부끄럽지만 최고의 개발자이다. 이룰 수 없는 목표를 갖고 나아가는 것이 삶에 원동력이 된다고 생각한다.

최고의 개발자가 되기 위하여 먼저 최고의 개발자가 무엇인지 정의하고있다. 가장 큰 회사의 CTO가 최고의 개발자인가? 가장 돈을 많이 버는 개발자가 최고의 개발자인가? 앞으로도 답은 없을 것이고 각자 다를 것이다. 내 안에서도 계속 개발자를 다시 정의하고 있고, 최고의 개발자의 모습도 업데이트 하고 있다. 각자 생각하는 개발자를 정의하고, 얘기해 보는 것도 하나의 재미가 될 것 같다.


글 쓰는 재능이 없어, 내가 느낀 바를 다 표현하지 못하여 아쉽지만 개발자를 생각하거나 개발자를 하고 있는 사람들에게 도움이 됐으면 한다.