시니어 개발자에 맞는 생각 이라는것이 무엇일까요?

안녕하세요

팀장님께서 회사에서 채용 계획을 이야기 해 주실때
시니어 개발자에 걸맞은 생각을 할 수 있는 분을 채용 하려고한다. 라고 하셔서
궁금즘이 생겼습니다.

개발 지식이 주니어와 미들을 가르는 가장 큰 차이라고 한다면.

시니어로 성장하기 위해선 어떤것이 업무를 진행하는데 있어 가장 중요한 생각인것일까요?

팀장님과 이야기 해 보면 비용대비 적절한 노력을 들일수 있고, 하나의 업무적 문제에 대해서 여러 적정한 기준을 이용해서 적절한 결과를 내는 사람이라고 생각하시는것 같긴하지만.

여기 계신 시니어 개발자 분들은 어떻게 생각하실까요?

3개의 좋아요

적절 밖에 보이는게 없네요…

구체적인 기준을 제시 해 달라고 해보시는게 나을듯 합니다.

가령 팀리딩 능력, 분석 및 설계 시 문서 작성 능력
구체적인 문서 아웃풋 기준을 마련 하시는게 어떨지…

개발 할때 분석,설계 가 끝나면 코더가 일 할수 있도록 완벽한 문서 라면 좋지만
그렇지 않아도 작업에 필요한 내용이 들어 가있는 문서가 없다면
주먹 구구식 으로 갈수 밖에 없어요

오픈소스 적용 능력도 보아야 합니다.

3개의 좋아요

저는 시니어는 아니고 9년차라 중니어 정도 되겠네요.

제 의견을 말씀드리면, 시니어 개발자는 노련함이 있어야 한다고 생각합니다.

많은 경험과 여유, 주니어에게 방향 제시 같은 것이죠.

시니어 개발자라는 것을 떠나 사람이 하는 일이고 연륜이 쌓이는 만큼 다양한 경험을 하게 될 것입니다.

해당 도메인에 갓입문한 주니어라면 내가 알고있는 또는 내가 들어서 알고있는 이 도메인 장점과 단점같은 특징을 알려줄수도 있고 자주 쓰이는 개발패턴을 지도해 줄 수도 있겠지요.

그리고 내가 시니어지만, 이 세상에는 나보다 더 잘하는 사람이 엄청나게 많고 내가 가르치는 이 주니어도 나보다 더 빠르게 성장할 수 있을테니 항상 열린 마음을 가지고 나의 경험에 빗대서 비판이 아니라 비교를 해보려는 긍정적인 성장의 자세도 중요할 것입니다.

솔직히 ChatGPT가 있고, 시니어가 있어도 StackOverFlow 답변이 더 뛰어나기 때문에 시니어가 개발적으로 어떤 테크닉과 스킬을 알려주는 시대는 지났다고 봅니다.

코딩한다는 것의 가치, 내가 연구개발하는 사람이 아니라 고품질의 제품을 만들어서 고객에게 좋은 프로그램과 경험을 제공해야겠다는 마인드 같은 것들이 중요하다고 생각합니다.

물론, 코어 메카닉스를 개발하는 팀이라면 개발실력이나 알고리즘 능력 또한 당연히 중요하겠지요. 하지만 그런 분야가 아니라면 IT 지식이나 기술보다는 사람을 Managing 하는데에 더 비전이 있는 게 시니어개발자이지 않을까 생각합니다.

아 그래도 물론 최소한 주니어가 막혔을 때 단기간에 해결해 줄 수 있는 문제해결능력은 있어야겠네요. 그래도 그 도메인에 오래 몸담은 사람으로서요…

6개의 좋아요

저기 적어둔건 평소에 팀장님 말씀을 요점으로 제가 생각해 둔 거에요 ㅎㅎ;; 좀 두서가 없습니다.

제가 팀장님께 한번 여쭤보긴 했는데
시니어를 딱 몇마디로 정리하긴 힘들어 다른분 생각을 한번 들어보는게 좋다고 하시더라고요 ㅎㅎ;;

정리하자면

  1. 팀원 들의 역량을 리딩할 수 있고, 리딩할 수 있게 친근한 대화가 가능하며
  2. 도메인에 대해서 분석 설계해서 작업에 적절한 문서로 작성할 수 있고
  3. 개발 기간을 줄이기 위해서 적절한 오픈소스를 선택할 수 있는 능력

이걸 크게 보신다는거군요?

3개의 좋아요

Vincent 님이 생각하는 시니어는 노련함(경험, 여유) 으로

  1. 고객에게 좋은 프로그램과 경험을 줄 수 있도록 적극적인 자세
  2. 동료가 잘 일할 수 있도록 매니징 하는 것
  3. 주니어 개발자가 파악하지 못한 도메인 문제를 단기간에 해결할 수 있는 문제해결 능력

이군요!

정말 좋은 모습인것 같습니다 :grinning:

4개의 좋아요

회사의 상황에 따라 적합한 포지션의 시니어 개발자는 상이 많이 달라질 수 있다고 생각합니다. 제 의견도 적어보고 싶어 답글을 남깁니다.

  • 일반적으로 우리나라에서 시니어 개발자는 개발자가 아닌 관리자에 가까울 수 있습니다. 여러 개발자들을 통솔하고, 문제를 적극적으로 해결하고, 의사 결정을 지휘할 수 있는 '관리자’를 원하는 경우가 많습니다. 그런데 아시겠지만, 관리 업무는 개발 업무가 아닙니다. 하이 테크가 아닌 인적 경영에 대한 이해가 필요하기 때문에 "전직"을 요구하는 것으로 보는 것이 타당합니다. (일반적으로 관리자로 승진하게 될 경우 코딩을 못한다는 이유가 바로 여기에 있습니다. 내야 하는 output과 달성해야하는 KPI가 code나 commit 갯수가 아니게 되기 때문이죠!)
  • 반면 정말 처음부터 끝까지 "개발"에만 전념하는 경우도 얼마든지 있다고 생각합니다. 단, 이 때에는 정말 개발에만 전념하는 "장인"인 것이 유리하므로 관리에 대한 부하를 줄이는 것이 필요하겠지요. 그러면서도, 본인이 속한 도메인에서 품질 높은 output을 만들어내기 위해 domain expert가 되기를 지향할 수 있을 것이라고 생각합니다. 우리나라 사례는 아니지만, 리눅스 커널 개발을 지휘하는 리누즈 토발즈 같은 분들이 한 예시가 되지 않을까 생각합니다.

지금 계시는 회사에서 시니어 개발자가 어떤 일을 하기를 바라는지 job description을 정밀하게 세우고 까다롭게 채용해보셔야 할 것 같습니다. 시니어 개발자 채용은 amazon 식으로 이야기하면 다시 열고 되돌아갈 수 없는 one-way door일 가능성이 높습니다. 실제로도 시니어 개발자 채용이 잘못되어 큰 좌절을 겪는 모습을 많이 봐오기도 했고요!

5개의 좋아요

말씀하시는대로라면 최종적인 시니어 개발자의 모습에는

  1. 관리자
  2. 장인 (특정 도메인의 전문가)
    가 있고

우리나라에서는 1번 유형이 시장성이 더 있다.

이걸 개인이 현재 시장의 요구에 맞춰
커리어 유지를 위한 시니어 개발자로 발전하기 위한 유형으로 생각 해본다면
특정 도메인의 문제를 해결 해 가며 의사 결정을 지휘 / 보조하는 경험을 하고
인적 경영에 대한 이해를 해 나가는것이 현재 시장이 바라는 시니어의 모습이다.

라고 어느정도는 생각해 보면 될까요??

4개의 좋아요

@rkttu 님의 의견에 저도 첨언을 하나 더 드리자면, JD는 상당히 중요합니다.

그리고 동종업계여도 회사의 도메인 성숙도에 따라 JD가 달라집니다.

그래서 이제 막 시작하는 회사가 동종업계의 도메인이 성숙할 대로 성숙해버린 큰 회사의 JD를 참고하는 것이죠.

게임업계라면 블리자드, 스퀘어에닉스 같은 기업을 말하는 것입니다.

객체지향에서도 데이터 주도 설계를 하면 내가 필요한 데이터가 무엇인가를 먼저 질문함으로 시작하기 때문에 초반에 빠르게 개발 가능하지만 데이터에 집중했기 때문에 나중에 비지니스가 성숙하게 되면 데이터가 추가되거나 변경이 됩니다.

하지만 책임 주도 설계로 해놓는다면, 하는 역할이 바뀌지는 않습니다. 잘게 쪼개져서 분야가 확장되는 것이지요.

회사에서 일을 할 때도 개발자끼리만 모아두고 다른 비개발팀에서 개발팀에게 외주를 주는 형태로 “코딩은 너네가 다해” 라고 하는게 아니라 각 팀마다 적절하게 서비스 디자이너와 개발자와 PM등 함께 여러 직군이 하나의 분야를 구성하도록 해야 소통비용을 줄이고 팀이 할 일을 갖게 됩니다.

그리고 그 성과를 외부에 노티만 해주면 되죠. 객체지향으로 말한다면 이것이 곧 캡슐화라는 것입니다.

이런 식으로 하게 되면 JD도 책임 주도 설계처럼 여러 직군이 스킬을 공유하면서 하나의 일을 하게 되고 그게 곧 팀이 됩니다.

개발자만 코딩하는게 아니라, PM도 팀의 소통 비용을 줄이기 위해 노코드 로우코드 툴을 통해 자동화를 하는 일같은 업무도 하면서 스크립팅도 할 수 있게 되는 거죠. 서비스 디자이너도 본인의 업무에 코딩을 도입하는 거고…개발자만 코딩하지 않게 되는 것입니다.

그리고 개발자도 PM 업무를 이해하기 위해 애자일같은 방법론도 공부를 하게되고 서로가 서로의 직군을 이해하기위한 소통비용 최적화를 시작합니다.

이것처럼 막 시작할 때는 적은 사람에게 여러 책임과 여러 의존성이 걸려서 정해진 일을 하게 되지만, 서비스를 진행하면서 돈을 벌게 되고 사람들이 뭘 좋아하는지, 뭐가 돈이 되는지 파악하다보면, 사람을 충원하게 되고 돈이 되는 부분을 떼어내어서 TF를 소집하던지, 추가 채용을 통해 사세를 확장합니다.

프로그램으로 치면 모듈러 모놀리스가 MSA로 발전하는 과정으로 비유할 수 있겠습니다.

그러면서 기존에 회사에 없던 직군들이 생겨나기 시작합니다.

하지만 그 직군이 반드시 유명한 회사들의 JD와 동일하지는 않습니다.

동종업계이긴 그 회사만의 특징을 이해하는 직군일 것이고 도메인 성숙도에 맞는 직군의 JD 일 것입니다.

동일하다면 도메인 성숙도가 같거나, 밴치마킹하는 회사와 완전히 같은 일을 해서 경쟁력이 없거나, 아니면 JD를 잘못써놓는 경우일 것입니다.


JD에 대해서 나와서 그냥 관련없는 말 해봤습니다.
제 의견 참고만 해주세요~

7개의 좋아요

Vincent 님 친절하게 하나하나 알려주셔서 감사합니다!

사실 JD (job description = 해당 포지션에 어떤 역할을 기대하는지, 역할을 잘 수행하기 위해 어떤 역량을 필요로 하는지, 기존 팀원들과 잘 협업하기 위해 어떤 인성이 필요한지) 이라는걸 잘 모르고,
슥 지나갈뻔 했는데 코멘트 해 주셔서 깨닫고 넘어갑니다!

제가 정말로 궁금하던 질문이

  • 시니어가 되기위해서 어떤것을 해야하는가? 보다
  • 시니어가 되려면 업무를 잘 수행해야하고, 선택한 직장에서 필요한 JD는 어떤것이 있고 어떻게 파악해야하는지

라는걸 알게 되었습니다.

도와 주신덕분에 제가 진짜 무엇을 궁금해 하는지 좀 더 알게된것 같고
선배님들의 도움 덕에 오늘도 직무라는것에 대해서 좀 더 이해하게 되었습니다.

도움주셔서 정말 감사합니다!!

5개의 좋아요

시장성의 관점이라기보다 본인이 어떤 것을 지향하는지, 더 잘할 수 있겠는지를 보셔야하지 않을까 생각합니다! :smiling_face:

4개의 좋아요

관련하여 요런 좋은 발표가 있어서 공유 드려봅니다.
[NDC22-커리어] 언젠가 시니어가 될 주니어를 위하여

6개의 좋아요

정말 가치 있는 내용이 모여있네요. :blush:

제 생각에는 모든 그룹에 반드시 시니어 역할을 할 수 있는 개발자가 필요하다고 생각됩니다. 그러므로 시니어 개발자의 전반적인 능력은 상대적이라고 생각해요.

기술적인 면에서 약간 부족해도 동료들을 잘 케어하며 프로젝트를 성공으로 이끄는 시니어 개발자들이 주변에도 많이 있으며, 저 또한 성장에 있어 많은 도움을 받아왔습니다.

4개의 좋아요

좋은 자료 감사합니다!

3개의 좋아요

동료를 잘 케어할 수 있는 부분도 아주 중요하군요

ㅎㅎㅎ 말씀하신 시니어로 성장할때 까지 많은 가르침 부탁드리겠습니다!

3개의 좋아요

관리자 영역으로 갈수록 교육과 코칭의 책임이 생긴다고 생각하시는게 아닐런지요?
시니어 시절은 자신의 일을 잘 처리하는게 책임이었다면,
이제는 누군가를 잘 지도하고 교육하는 책임이 생기는거죠…

결론

주니어 개발자는 업무로 월급을 받지만
시니어(또는 관리자)는 교육 및 코칭하는 업무로 월급을 받는다.

가 될 것 같습니다.
제 생각은 그래요… :grin:

4개의 좋아요