시니어 개발자와 주니어 개발자는 어떻게 다를까 (2025 1월 구름 Commit 후기)
시니어 개발자와 주니어 개발자는 어떻게 다를까 (2025 1월 구름 Commit 후기)
서론
경력이 3,4년이 되면서 제대로 된 방향을 가지고 나아가고 있는지에 대한 고민이 많았습니다. 그런 도중 구름 커밋에서 제 고민을 덜어줄만한 주제의 발표가 있어서 오프라인 참여를 신청했고 운이 좋게 참여하게 되었습니다. 좋은 발표를 듣고 그냥 지나가기가 아쉬워서 제 생각을 나름대로 정리하기 위해 블로그를 남겼습니다.
이 아래와 같은 고민을 하시는 분들이 보면 좋을 것 같습니다.
- 경력이 쌓이며 어떤 스킬을 가져야 시니어로서 성장이 가능할지
- 해당 스킬 들은 어떻게 해야 익힐 수 있는지.
경력을 쌓으며 어떻게 성장할 수 있을까?
7년동안의 기간동안 지켜보며 크게 두가지의 사람이 있었습니다.
- J커브로 성장하는 사람
- 그대로인 사람
두 사람의 차이는 어떻게 나뉠까요? J커브로 성장하는 사람의 특징은 뭘까요? 바로 하드 스킬과 소프트 스킬을 꾸준히 습득해 나가는 사람입니다.
하드 스킬 : 어떻게 개발을 잘할까?
멋있는 것을 하지 마라
멋있는 것은 일종의 포장지입니다. 멋있지 않은 것은 깊이 있는 무언가라고 볼 수 있습니다. 예를 들면 ‘NextJS를 사용했다.’와 ‘비동기 처리에 대해 깊이 공부 고민했다.’ 중에서 무엇이 더 멋있어 보일까요…아마 멋있는 것은 NextJS, Tailwindcss와 같은 이름이 반짝거리는 것들이 더 멋있어 보일 수 있습니다.
멋있는 공부는 외부에서 보이는 것에 집중한다는 의미이기도 하며 겉만 보다보니 깊게 알 수가 없을 것이고 깊게 알지 못하면 장기적이지 못하고 구체적이지 못하게 됩니다.
그럼 어떻게 공부해야할까요?
공부법
멋있는 것(포장지)
아까 “멋있는 것은 하지 마라!” 라고 말했습니다. 그럼 멋있는 것들은 어떻게 해야할까요?
- 깊게 하기보다 (물론 상황에따라 다를 수 있습니다.) 이것저것 많이 사용해보도록 합니다.
- 눈으로 많이 보기 : 무언가를 잘하려면 압도적으로 좋은 것을 많이 봐야합니다.
- 평범한 것으로 새로운 인사이트를 얻기는 어렵습니다.
- 나보다 압도적으로 잘하는 코드를 보거나, 기술 난이도가 높은 코드, 퀄리티가 높은 코드를 보아야 시야가 넓어질 것입니다. 혼자 고민하는 것보다 나보다 잘하는 코드를 보는 것이 중요합니다.
깊이 있는 것(알맹이)
깊이 있는 게 뭘까..라고 한다면 멋있는 것의 포장지를 뜯고 알맹이를 본다고 생각하면 쉽습니다. (포장지가 멋있지 않는 것도 포함..)
알맹이를 보는 방법은 생각보다 단순한데 꼬리질문을 해서 습득하는 것입니다.
예를들면 ‘Jotai를 사용한다.’라고 했을때.
왜 Jotai를 사용할까?
- 전역관리를 해야하니까. ⇒ 왜 전역관리를 해야하지?
- 여러 컴포넌트 사이에 데이터 공유가 필요하니까. ⇒ 왜 컴포넌트 사이에 공유가 필요하지?
- 컴포넌트를 나눴으니까 ⇒ 왜 컴포넌트를 나누지? 그럼 잘 나누는 기준은 뭐지?
하드스킬 점검
개발관련 스킬을 말합니다. 개발 관련 스킬을 우리는 과연 잘 습득하고 있을까요? 아래의 내용을 보고 이전에 공부했던 것을 되돌아볼 필요가 있습니다.
두뇌를 풀 가동시키기
- 평소에 할 수 있는 것보다 약간 어려운 것들을 하는게 성장으로 이루어집니다.
- 예를 들면 도저히 모르겠어서 계속 알기위해 노력하는 시간을 가지는 것입니다.
내 학습 시간 돌아보기
- 내가 공부할 때 두뇌에 땀이 나고 있는지.
- 내가 공부하고 있는 내용의 난이도는 적당히 어려운지.
- 내가 아직 자신이 없는 개발 영역은 어디인지.
깊이 공부하고 코드에 적용해보기
- 이게 무슨 말인지 발표할 수 있을 정도로 이해해 보기
- 내가 지금까지 알고 있었던 내용과 연결시켜 보기
- 내가 짜고 있는 코드와 연결시켜 보기
- 예) 응집도라는 개념은 내가 어제 개발한 컴포넌트와 어떻게 연관이 있을까?
하드 스킬 적용하기
점검은 했습니다. 그럼 하드 스킬을 바로 적용하는 법은 무엇일까요?
배움은 행동 변화를 일으킵니다.
- 어떤 것을 아는 것을 넘어서, 다음에 행동하는 것이 바뀌는 것이 중요합니다.
- 지식을 습득하고 그것을 행동까지 옮기고 회고를 하여 좋았던 점, 안좋았던 점 등등 실제로 해당 지식을 사용해보며 배움까지 일으키는 방법입니다.
실천해보기
- 행동 계획을 세우자.
- 소프트웨어 설계 : 이 프로젝트 코드를 이렇게 리팩토링해야겠다!
- 디버깅 : 다음에 디버깅할 때부터 이것부터 해봐야지!
- 말하기 방법 : 이번에는 이렇게 이야기를 시작해보자!
- 실천
- 오늘 발표 내용을 행동으로 옮겨본다면?
- 오늘 본 뉴스레터 sns를 어떻게 적용해볼 수 있을까?
- 책에서 읽은 코드 전략은 어떻게?
중요한 점
- 본인의 실력보다 약간 버거운 정도의 난이도의 도서를 읽고있는지(혹은 공부) 확인이 필요
- 꾸준히 새로운 양질의 지식을 얻기 (sns 구독 등)
소프트 스킬 : 어떻게 더 좋은 사람이 될까?
소프트 스킬은 두 가지 영역이 존재합니다.
- 나를 발전시키기
- 다른 사람과 잘 일하기 ⇒ 처음으로 기술 리더가 된 개발자를 위한 안내서
이번에는 나를 발전시키기를 주제로 진행합니다.
나를 발전시키기 중요성
개발 뿐만 아니라 인생과 커리어 전반에 걸친 영향을 미칩니다. 예를 들면 대화, 피드백, 시간 관리, 문제 해결, 메타인지, 휴식 등등..그럼 어떻게 나를 발전시킬까요?
변화에 열려 있기
No matter the circumstance you can always improve.You can always start improving with yourself.You can always start improving today.– Kent Beck (Extreme Programming Explained 2/e)
상황이 어떻건 간에 당신은 언제나 더 나아질 수 있습니다.
당신은 언제나 자기 자신부터 개선을 시작할 수 있습니다.
당신은 언제나 오늘부터 개선을 시작할 수 있습니다.
켄트 벡 (익스트림 프로그래밍 2판)
무엇이든 개선할 수 있다, 나에게 맞는 방법으로
- 소프트 스킬도 바뀔 수 있는 영역이 있고 나에게 맞는방향이 있습니다. 변화에 닫혀있지만 않는다면 우리는 변화할 수 있습니다.
재능 vs 노력
재능이 있는 사람만 할 수 있는 것이 있지 않을까..내향적인 사람이 많은 사람들앞에서 이야기할 수 있을까..걱정이 앞설 수 있습니다. 그러나 하나 알아야할 것이 있습니다. 우리는 웅변대회를 나가는 것이 아니고 알고리즘 대회를 나가는 것도 아닙니다.
실제 생활에서는 대부분 노력의 차이가 생깁니다. 위에서 말했던 웅변대회나 알고리즘 대회같이 하나의 역량을 가지고 겨루는 것이 아닌 소프트, 하드스킬이 어우러져 시너지를 발휘하는 것으로 차이가 드러납니다. 소프트 스킬을 발전하고자 한다면 재능보다는 어떻게 노력할 것인가? 에 집중해야합니다.
무엇이든 개선할 수 있다는 마인드셋이 중요
우리는 무엇이든 개선할 수 있습니다. 시간 관리는 GTD, PARA 대화는 GROW, 문제 해결은 TRIZ 등 여러가지 모델과 방법론들이 존재합니다. 문제로 인식하고 그것을 개선하고자하는 마인드셋만 있다면 변화할 수 있습니다.
- 시간 관리 : GTD,PARA
- 대화 : GROW 모델, 비폭력 대화
- 문제 해결 : TRIZ
잘해보고 싶은 포인트 정해보기
그럼 우리는 뭘 잘해야될지 고민을 할 수 있습니다. 만약 그렇다면 아래의 순서대로 한번 생각해보면 찾을 수 있을 것입니다.
- 가까운 한달 안에 해야하는 일을 찾기
- 해야하는 일 중 하던대로 하고 있는일이 무엇인지 찾기(ex: 회의, 시간 관리)
- 그 일을 잘하는 방법 찾아보기(ex : 회의 ⇒ 퍼실리테이션, 시간관리 ⇒ 업무 시각화)
- 실천으로 옮겨보기
차이를 만드는 것은 재능보다는 꾸준함이며 단계적으로 연차가 쌓여가며 꾸준히 성장하고 어려운 역할을 맡는 것이 실질적인 성장입니다.
지금까지의 것들을 꾸준히 반복하려면?
- 너무 잘하려고 하지 않고 꾸준히 하기
- 한달에 책한권이 힘들다면 반 권만 읽으면 됩니다.
- 피드백과 칭찬으로 꾸준히 하기 : 행동 유발
나를 봐주는 사람이 있으면 더 행동하기 쉽습니다. 그게 자기자신일 수도 있고 타인이면 더 좋습니다. 방법은 아래와 같습니다.
- 스스로 피드백, 축하하기
- 외부 피드백 받기
- 나의 행동을 봐주는 사람을 어떻게 만들 수 있을까?를 고민해보는 것도 좋습니다.
- 함께해서 꾸준히 하기
- 함께 있는 것만으로 좋은 사람들과 함께해 보기
인상깊었던 Q&A 답변
하드 스킬
사이드 이펙트를 방지하기 위한 방법
- 배포 사이즈를 줄이는 것이 사이드 이펙트를 줄이는 가장 큰 방법
- 소프트웨어 품질을 판단하는 기준 중 결합도가 낮은지.
토스의 좋은 코드의 기준 : https://frontend-fundamentals.com/code/
- 풀리퀘스트에서 변경사항의 크기가 클 수도 있다는 것을 의심.
소프트 스킬
시니어로 성장하는 길
- 대부분 어려운 문제들은 나 혼자서 해결하기 어려운 경우가 많습니다. 모두가 기술적인 역량이 높아져야 문제가 풀립니다. 결국 주변에 영향력을 미치고 같은 방향을 바라보게 하는 것, 큰 범위의 문제를 어떻게 풀 수 있을 것인가가 시니어로서 중요하다고 생각합니다.
시니어로 달려오며 했던 몰입
- 몰입의 방해 요소 제거 : 이회사가 좋은가? 다른회사가 좋은가? 라는 생각은 회사에 대한 몰입이 안될 수 있기 때문에 의심없이 몰입에 집중하는 것이 중요.
- 회사의 방향성에 몰입 : 몰입에 대해 중요한것은 핵심 의사결정권자(keyman)분들이 어떻게 생각하고 무엇을 중요하게 생각하는지 알아보고 그 문제를 탁월하게 풀기위해 노력.
공부 방법
- 업무 외적인 시간투자는 일정부분 필요.
- 좀 더 중요한 것은 업무와 공부를 일치시키는 것.
- 개발도 하던대로 하기보다는 업무와 공부를 일치시키는 방향으로 하며 공부했던 내용을 적용, 리팩터링 합니다.
- 자신이 없고 모르는 분야에 대해 공부합니다.
- 문제를 해결하기위해 JS만이 아니라도 다른 언어에서도 힌트를 얻는 등 프론트엔드라는 직무내에 갖혀있지 않습니다.
직접 했던 질문
알맹이(근본적인) 기술과 NextJS와 같은 포장지 기술에 어느정도의 시간을 분배할지 내가 하고 싶은 공부는 알맹이 기술인데 회사에서는 NextJS를 사용하여 항상 고민하며 공부합니다. 서진님은 어떻게 기준을 잡는지.
답변 요약
- 무엇을 공부하든 근본적인 것을 공부하는 것이 중요하고 자신의 스타일에 맞게 공부하는 것이 중요합니다. 결국 중요한것은 꾸준함과 근본적인 공부입니다.
프론트엔드의 기술은 굉장히 빠르게 진화한다고 생각합니다. 그래서 출시당시에 도입하지 않으면 금세 레거시가 되는 경우도 있습니다. 그래서 항상 도입 시기를 고민하고 안전하게 도입을 하기위한 기준을 찾으려 합니다.
답변 요약
- 도입은 최대한 빠르게 합니다. 중요한 것은 그 기술을 이해하고 있냐는 겁니다. 근본적으로 이해하고 있다면 문제가 생겨도 해결할 수 있을 것입니다.
후기
발표가 정말 유익했습니다.
특히 하드스킬을 공부하는 방법에서 새로운 관점을 얻은 것 같아 인상적이었습니다. 지금까지는 주로 파인만 기법을 활용해 공부했는데, 여기에 행동계획법을 적절히 접목한다면 제 공부 방법이 한층 더 발전할 것 같아 기대가 됩니다.
또한, 소프트스킬에 대해서는 크게 중요하게 생각하지 않았던 제 자신을 돌아보게 되었습니다. 이번 발표를 통해 소프트스킬의 중요성을 알게 되었고, 제가 그동안 이 부분에 너무 무관심했던 것은 아닌지 반성하게 되었습니다.
전반적으로 아직 배워야 할 것도, 공부해야 할 것도 많다는 것을 깨달을 수 있었던 유익한 발표였습니다. 감사합니다!
구름 테크 블로그 https://tech.goorm.io/ko/2501_commit/
공개 발표 자료 : 공개 후 업데이트 예정

