본문 바로가기
PAST

2024 백엔드 커리어 로드맵 - 어떤 백엔드 개발자가 되고 싶은지

by suuuuunnng 2024. 1. 5.

한글판
영문판

출처 : https://roadmap.sh/backend - 영문판 / https://zero-base.co.kr/event/media_BE_school_roadmap  - 한글판.

위 사진은 백엔드 커리어 로드맵이라고 유명한 사진이다. 백엔드 개발자가 되기 위해 어떤 것을 학습해야하고 다룰줄 알아야하고 알고있어야하는지에 대해 나와있는 사진이다.

근데 난 이 중에서 저 사진을 보고 단박에 아는 것이라곤 'Java' 뿐이다. 그만큼 아직 많~~이 모자른 개발자 취준생이다.

그렇다면 최대한 효율적으로 핵심적인 것들을 위주로 공부해야 할 것이다.

영문판과 한글판의 구조가 약간 다른데, 한글판은 작년 봄~여름에 나온 버전, 영문판은 최근에 나온 버전이라 다르다.

 

CS, 언어, DB, Git, Spring, JPA, Security 이렇게 추려보자.

1. CS - Computer Science이다. 그 중 CPU Scheduling, 동기화와 Deadlock, Security(후에 나옴), 자료구조와 알고리즘 을 알아놔야한다.

2. 언어는 자바를 택했다. 이유는 간단하다. 해외 취업? 어려울 것이다. 그렇다면 국내 기업을 상대로 이력서와 자소서를 보내야하는데 백엔드 개발자가 국내 기업에서 승부를 보려면 Java를 익혀야 한다. 그래서 택했다. 기본문법(변수, 연산자, 조건문, 반복문, 배열, 등등), 객체지향, Java와 JVM의 기초지식, Thread, Annotation, Network, JVM고급, 주요 디자인 패턴 등... 내가 쓰면서도 알만한 것은 눈에 확확 들어오는데 생전 처음 듣는 용어들도 있다. 차차 배워나가야 하는 것들이다.

3. DB - Database 이론, Data CRUD, Data Relation, Table, View, CUI, Index 등 내가 모르는 것들을 배워야 한다. 회사의 규모에 따라 DB 설계 또는 관리 전담 팀이 있을 수 있지만 장기적으로 볼 때 정보가 어떤 DB로 들어가고 그리고 DB를 뽑아오고 뽑아올 때 어떤 필터를 걸치는지를 이해할 수 있어야 한다는 점이 중요하기에 알아놔야한다.

4. Git - Git 다루는 것도 알아놔야한다.

5. Spring - Spring기반의 개발을 진행하기에 필수적으로 학습해야한다. 

사실 내가 이 글을 적으면서 아는 것은 시원하게 적겠는데 모르는 부분은 자료조사를 하면서도 뭔지 몰라서 애매하게 적긴했다. 그렇다고 수정하기도 뭐한게 수정한 문장들도 비슷한 느낌이 들어서 안하기로 했다. 

 

이번엔 솔직한 내 생각과 내가 꿈꾸는 개발자의 모습에 대해 말해보겠다.

이 길을 택하면서 사실 어떤 백엔드 개발자가 되고 싶냐는 질문에 진지하게 생각한 적은 몇 번 없었던 것 같다.

흔히 남들이 말하는 소통이 잘되는 개발자, 언어 이해도가 높아 남들에게 설명하기 쉬운 코드를 만들어내는 개발자 등은 생각해보았지만 내가 원하는 개발자의 상은 생각을 잘 안해봤던 것이다.

그렇다면 내가 이상적으로 생각하는 개발자는 어떤 것일까..

 

성장을 우선시 하는 개발자가 가장 먼저 떠오른다.

다만 개인의 성장보단 팀의 성장을 우선시 하는 개발자이다. 팀이 성장을 하면서 나에게도 긍정적인 성장을 동반하는 것이 가장 베스트라고 생각한다. 개인을 우선시 하는 성장을 하다보면 팀은 뒷전으로 미뤄질 것이라 본다. 그렇게 되면 단기간에는 내가 성장한다라는 점은 분명 좋게 보일 것이다. 다만 중장기적으로 본다면 팀 내부 프로젝트는 도태될 것이고 이는 곧 내 성장에도 큰 벽, 장애물을 생성하는 꼴이 된다. 그럴빠엔 팀의 성장을 곧 나의 성장으로 만드는 것이 가장 이상적이지 않을까 싶다.

 

두번째로는 소통이 잘되는 개발자이다.

분명 작게는 회사 내 팀원들과의 협업, 크게는 회사 간의 협업을 할 때 소통은 필수다. 기획단계에서부터 대화를 오고 가며 최종 제품 또는 아이템을 출시를 하게 된다. 그 대화 과정에서 내가 생각하는 것을 정확하게 전달하는 것이 가장 기본이라고 생각된다.

사실 나는 소통 능력이 좋은 편은 아니다. 내가 생각하는 것을 입 밖으로 내뱉어도 되려 상대방에게 다시 묻는다. 

" OO님, A 에 대해 저는 이렇게 생각합니다. " 라고 스타트를 끊어놓고는 대화가 마무리할 쯤에 이 질문을 동반한다.

" 혹시 제가 말한 것에 대해 이해가 되시나요?? 안되시면 꼭 말씀 부탁드립니다. 다시 말씀드리겠습니다. "

누군가는 이걸 배려라고 느끼고, 누군가는 덜 떨어지는 사람이라고 느낀다. (내 경험에서 나왔다...)

그리고 스터디장을 맡고 있다보니 스터디원분들께 DM이나 댓글로 소통할 일이 많다. 그때마다 내가 친 채팅들을 기본 2번은 쓰고 지운다. 이게 맞는 문장인지, 이게 가장 공손하게 질문이나 답변을 적었는지에 대해 고민을 하다보니 그렇게 된 것 같다. 내가 전달하고자 하는 의미와 상대방이 받아드리는 의미가 다르면 서로간의 오해가 생길 수 있기에 더더욱 조심히 소통을 한다.

그래서 매번 소통하는 법을 중요시 여긴다. 그러다보니 모르는 사람 또는 공적인 사람과의 대화를 할 땐 대화가 생각보다 어렵다. 뇌에서 기본 2번이상은 생각은 하고 말은 해야하기에..

소통 능력은 죽을 때 까지 내가 이겨내야하고 키워야할 능력이라고 생각한다. 

 

세번째로는 받아들이는데 있어서 거부감이 없는 개발자이다.

이 직군은 늘 그런 이야기를 한다. 기술을 받아들이는데 거부감을 보이지마라. 근데 문득 이 생각이 들었다. 

'어차피 해당 종사자라면 당연히 기술을 받아들여야 할텐데 왜 이런 말을 내뱉을까' 

나는 이걸 당연한 것이지만 주의해야하는 직업 가치관이라 생각했다. 

사람이라면 신기술에 대해 흥미는 보이되 자기것으로 만드는 것에는 거부감을 느낀다. 받아들이는데 어렵기 때문이다.

짧게는 몇 개월, 길게는 몇 년은 다뤘던 기술이 신기술로 대체된다면 쉽게 받아들일까...

업무의 효율성이 좋다면 쉽게 받아들이겠지만 효율성 측면에서 비슷하다면야 기존 기술을 쓰는게 낫다는 판단이 더 합리적이라고도 생각할 것이다. 나도 그럴 것 같다.

다만 이 개발자 생태계에서 길게 생존하고 싶다면 받아들여야 하는게 맞다고 생각한다.

난 기존 생태계에 새로운 스킬트리과의 최적화를 찾는 방향으로 이를 받아드리는 자세를 추구해야겠다.

물론 내가 아직 이 생태계를 자세히 모르기 때문에 이런 시각을 가질 수 있단 염려는 글 쓰는 지금도 들고 있긴 하지만, 염려와 별개로 저러한 자세는 추구할 것이다.

 

이 외 내가 하는 일에 대한 업무적 책임감을 지닌 개발자, 최적화를 지향하는 개발자, 마지막으로 누군가를 가르칠 수 있는 수준의 개발자가 되는 것이 내가 꿈꾸는 이상적인 개발자의 모습이다.

'PAST' 카테고리의 다른 글

앞으로의 백엔드 공부 계획  (1) 2024.01.05
프론트엔드와 백엔드 차이  (1) 2023.12.17
백엔드 스쿨 20기 시작....  (0) 2023.12.01