한국의 주니어, 시니어 개발자

한국의 주니어, 시니어 개발자

서론

이 글에서 이야기 하는 개발자는 모두 소프트웨어 개발자를 의미한다.

필자는 한국 스타트업에서 웹 서비스를 개발하는, 만 4년차 주니어 개발자이다. 규모에 상관 없이 온라인 서비스를 하나라도 운영 하는 기업이라면, 외주를 포함해서 반드시 필요로 하는 직업이 개발자라고 생각 되는데, 이런 기업들의 채용 공고를 보면 다음과 같은 문구를 흔히 볼 수 있다.

~를 다루어 본 경험이 있는 3년차 이하의 주니어 개발자
~에 대한 이해가 풍부한 10년차 이상의 시니어 개발자

이런 공고를 보았을 때, 이런 저런 궁금증들이 생겼다.

  • 3년차 이하는 주니어고, 10년차 이상은 시니어인가?
  • 필자는 시니어가 되고 싶은데, 시니어가 되면 얻는 장점이 뭘까?
  • 시니어가 되려면 어떤 노력을 해야 하나?

필자는 이 글을 통해 주니어 개발자(이하 주니어)와 시니어 개발자(이하 시니어)의 차이를 명확히 알아 보고자 한다. 도대체 주니어 개발자와 시니어 개발자를 나누는 기준이 무엇일까?

개발자란, 어떤 직업일까?

소프트웨어 개발자(software developer)는 소프트웨어 개발 작업에 종사하는 사람을 말한다. 좁게는 소프트웨어 설계와 코딩, 넓게는 프로젝트 관리 업무를 수행하는 사람을 포함한다.

출처: 위키피디아, 소프트웨어 개발자

소프트웨어 개발자라는 단어 그대로 소프트웨어를 개발하는 사람을 의미한다. 하지만, 보통의 생각처럼 개발자는 코드를 작성하고 최적화 하는 수준에서 그치지 않고, 위키피디아의 설명처럼 프로젝트 관리까지 수행하는 사람을 의미 하기도 한다.

이런 직업에 주니어와 시니어라는 수식어가 붙어 불리고 있다면, 전문성과 경험치에 따라 암묵적인 등급이 매겨져 있다고 생각해 볼 수 있겠다.

주니어, 그리고 시니어

왜 주니어와 시니어를 구분 짓는 걸까?

필자와 이런 저런 이야기를 많이 하는 회사 선배가 있는데, “구체적으로 왜 시니어의 연봉이 높은가요?”라는 질문에 대한 답 중 하나로, 이런 대답을 해 주셨다.

회사는 개인의 경험과 시간을 돈으로 사는 거야. 모든 사람이 그런 건 아니지만, 경험이 풍부한 개발자일수록 문제 해결이 빠르고, 그렇기 때문에 의사소통과 사업 진행에 걸림돌이 적겠지. 그런 장점들을 얻기 위해서 기업은 돈을 더 투자 하는 것이고, 그래서 시니어의 연봉이 높은 거야.

서론에서 본 채용 공고의 문구를 보아도, 경험이 풍부한 시니어 개발자라는 조건을 걸고 있다. 예를 들어, 다음 가상의 두 개발자를 보자.

개발자 A는 현재 2년 6개월의 경력이며, 스타트업 두 곳에서 일을 해 본 경험이 있다. 세 개의 웹 서비스 개발 프로젝트에서 프론트 엔드 개발을 진행 하였다. 경험 분야가 적기 때문에 프로젝트 규모, 일정을 위한 타협점, 시스템 이슈 우려 사항 등 전체적인 큰 그림을 보는 능력이 부족하다.
개발자 B는 현재 10년의 경력이며, 매우 다양한 웹 서비스 개발 프로젝트를 진행한 경험이 있고, 프로젝트 진행 중 얻은 프론트 엔드, 백 엔드, 인프라, 데이터베이스 등 다양한 분야의 엔지니어링 지식을 보유하고 있다. 또한, 다양한 프로젝트 경험으로 축적된 안목으로 큰 그림을 볼 수 있으며, 효율적인 프로젝트 관리가 가능하다.

이들은 프로젝트 진행 경험, 지식 수준 면에서 확연한 차이가 있다. 프로젝트 진행 경험, 지식 수준 등이 다르기 때문에 프로젝트 관리 업무, 그리고 시스템 설계 및 개발 업무에서도 효율의 차이가 있을 것이다. 우리는 일반적으로 개발자 A를 주니어, 그리고 개발자 B를 시니어라고 정의 한다. 그렇다면 단순히 경험이 많고 다양한 지식이 있으면 시니어일까?

시니어의 기준이 뭘까?

시니어는 주니어에게는 없는 능력들을 가지고 있는데, 솔직하게 말씀드리면 필자는 아직도 주니어이기에 모든 것을 알 수 없다. 하지만, 주변의 시니어들을 보고 느낀 경험을 서술 해보고자 한다.

  • 책임감 : 의사 결정의 범위가 넓고 상대적으로 책임이 무겁다. 시니어의 결정에 따라 프로젝트의 방향성이 결정 되기도 하고, 갑작스러운 이슈 발생 등의 돌발 상황에 대처해야 하기 때문이다.
  • 전문성 : 사업적인 시각과 기술적인 시각을 충분히 연계하여 갖추고 있다. 현재 사용해야 하는 기술이 무엇인지 결정 하거나, 프로젝트의 일정을 산출하는 등 지식과 경험에 기반한 결정을 해야 하기 때문이다.
  • 의사소통 : 다른 영역의 리더들과 의사소통이 원활해야 한다. 위의 전문성과도 연계 되는 부분인데, 비즈니스는 항상 기술로만 이루어 지지 않는다. 따라서, 사업 방향성, 자본 등의 다양한 기준을 가지고 의사소통을 할 수 있는 능력을 가지고 있어야 한다.
  • 리더십 : 팀과 동료들을 올바른 방향으로 이끌어 갈 수 있어야 한다. 규모가 작은 조직의 경우는 대부분의 시니어가 기술 그룹의 리더를 맡는다. 그리고 그룹의 성향은 대부분 리더에 따라 결정 된다고 한다. 그렇기 때문에, 시니어라면 그룹을 올바르게 이끌어 갈 수 있는 리더십이 필요하다.

위에 서술한 내용들처럼, 단순히 경력이 오래 되었다고 해서 시니어가 될 수 없다. 경력이 2~3년 정도 되는, 주변에서 주니어라고 생각 할 수 있는 개발자도 다양한 능력이 검증 된다면 시니어라고 불릴 수 있다. 대부분의 경력이 오래 된 개발자들이 시니어라고 불리는 이유는, 오랜 기간의 직무로 하여금 다양한 경험을 했기 때문이다.

결론

이렇게 시니어 개발자는 주니어 개발자와 무엇이 다른지 생각해 보았다. 개발자마다 시니어가 되고 싶은 이유가 각각 있을 것이고, 과도한 책임을 지어야 한다는 생각에 시니어로 인정 받고 싶지 않을 수도 있을 것이다.

하지만, 어떤 개발자라도 언젠가는 시니어 개발자가 되는 것을 피할 수 없을 것이기 때문에, 본인의 커리어를 어떻게 잘 쌓아 가야 하는지에 대해 생각해 보는 시간을 가졌으면 좋겠다.

첨언으로, 필자는 시니어의 기준이 뭘까? 문단에서 ‘경력이 오래 되었다고 해서 시니어가 될 수 없다’라고 서술했지만, 한국 내에서는 성립하지 않는 것으로 보인다. 시니어의 자질이 없는 개발자에게도 단순히 경력이 오래 되었으니 시니어 타이틀을 달아 주는 경우도 있다고 하는데, 지속적으로 이러한 문화가 발생하는 것을 지양하고 걷어 내어야 할 것이다.

Subscribe to Eric's Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe