
https://search.shopping.naver.com/book/catalog/53922279853
최근 시니어 개발자를 목표로 걸어가고 있는 나의 개발자 커리어에 대해 많은 생각이 들었다.
스트레스도 많이 받고 방황도 하면서 일년 전에 사놓았던 '개발자 기술 면접 노트' 를 읽게 되었다.
책은 나중에 내가 누군가를 멘토링하게 된다면 추천하고 싶을 정도로 좋았다.
왜 개발자를 하는지? 에 대한 질문을 던지면 그에 대한 대답은 다양하지만
앞으로 어떤 개발자가 될 거냐? 라는 질문에는 대부분 다 더 좋은 조건의 개발자가 되고 싶어 한다.
( 실력, 연봉, 회사 규모 등…. )
그러면 어떻게 해야 할까? 라는 생각과 고민에 답을 줄 수 있는 책인 것 같다.
참고로 나는 늙어서 할머니가 돼도 개발자 하고 싶은 목표가 있다.
( 엄마가 이 말 듣고 너무 오버한다고 했는데.. 진짜다…. )
그래서 할머니 개발자로 살아남기 위해
지금 당장은 시니어 개발자로서 1인분 이상을 하는 개발자가 되는 게 목표이다.
회사에서 개발자로서
프로그래밍 스킬 셋이나 업무를 처리하기 위한 역량을 키워나가며
회사 생활을 잘하는 것도 중요하지만,
많은 빅테크 기업에서 말하는 개발자의 조건부터 갖춰나가는 게
넓게 보면 더 빠르고 좋은 개발자가 될 수 있다는 생각이 들었다.
🔹 1. 기초적인 컴퓨터 과학 지식
자료구조: 배열, 연결 리스트, 해시맵, 힙, 트리 등
알고리즘: 정렬, 탐색, 그래프 탐색 (DFS, BFS), 동적 계획법 등
시간/공간 복잡도 분석 능력
🔹 2. 문제 해결 능력
주어진 문제를 논리적으로 분석하고, 명확한 해결 방안을 제시하는 능력
복잡한 문제를 작게 쪼개고, 효율적으로 접근할 수 있는 능력
주어진 문제 외에도 숨겨진 제약이나 모호성을 파악하는 능력
🔹 3. 코드 품질
읽기 쉬운 코드 작성 (가독성)
재사용성, 유지보수성 고려
클린 코드, 테스트 가능성 있는 코드 작성
적절한 디자인 패턴 활용
🔹 4. 시스템 설계 능력 (특히 중급 이상 채용 시 중요)
대규모 트래픽/데이터를 처리할 수 있는 구조 설계
API 설계, 데이터베이스 모델링, 캐싱, 로드 밸런싱, 마이크로서비스 등
Google, Meta 등은 System Design Interview를 별도로 봅니다
🔹 5. 협업 및 커뮤니케이션 능력
팀원들과의 소통, 명확한 설명 능력
코드 리뷰 주고받기
피드백을 건설적으로 주고받을 수 있는 태도
🔹 6. 학습 능력 및 성장 마인드셋
새로운 기술을 빠르게 배우는 능력
문서나 레거시 코드를 읽고 이해할 수 있는 능력
"지금 모른다고 해도, 배워서 해결할 수 있는가?"를 중요시함
🔹 7. 영향력과 주도성
주어진 업무를 넘어서 더 나은 방향 제안
다른 팀과 협업하거나 기술적으로 이끄는 경험
리더십이 없더라도 문제를 발견하고 해결하려는 자세
🔹 8. 도메인 이해력 (팀/직무에 따라)
예: 머신러닝 팀이면 수학적 지식, 모델 이해
( chat gpt 가 알려주는 빅테크 개발자의 조건이다. )
객관적인 입장에서 나라는 개발자를 판단했을 때,
1, 3, 4 번은 내가 많이 부족한 부분이고
2, 5, 6, 7 번이 내가 가진 장점이다.
8번은 내가 어떤 도메인을 개발하는 개발자인지에 따라 달라지는 점이라서
판단하기에 애매한 조건이라 생각이 든다.
그 도메인에 관심이 많고 파고 들어서 문제없이 개발을 해나갈 수 있는가? 가 중요할 것 같다.
현 시점에서
나는 1, 3, 4번에 대한 능력을 채워나가야 실력있는 시니어 개발자가 될 수 있다고 생각한다.
또 책을 읽으면서 시니어 개발자분들이 나에게 해주는 조언들과 똑같은 내용들이 많았다.
그분들이 해주시는 조언이 얼마나 중요한 말씀이었다는 걸 좀 더 깨닫게 되었다.
최근에 업무하면서 나에게 필요한 부분이라 느껴지는 것들을 아래와 같이 정리했는데,
제일 중요한 건 '업무를 할 때, 왜? 라는 의문으로 다가가고 파고들기'이다.
* PR은 chunked PR 하는 식으로 작업하기
* 자바 기초부터 공부 다시하기
* Golang 공부 다시 하기
* 내 스스로 정리하고 팀원들에게 말걸기
* 업무 시, 나에게 도움이 되는지 체크하고 블로그 회고록 쓰기
* 🔹 업무를 할 때, 왜? 라는 의문으로 다가가고 파고들기
나는 이 점이 부족한 개발자이다.
당장의 문제 해결과 결과 중심으로 업무를 하다 보니,
문제를 열심히 찾아서 업무를 늘리고
그를 해결하기 위해 검색하고 다른 개발자 작업 로직을 찾으며 빨리 업무를 완료 처리하고 싶어 했다.
이 부분도 당연하게 장점이 있다.
하지만 단점이 더 많다.
스스로 고민과 생각을 깊게 하지 않다 보니
생각하지 못한 부분에서 에러가 발생할 수 있고, 그 에러를 해결하기 위한 문제가 하나 더 생긴다.
그렇게 문제들이 많아지면
아무리 문제 해결을 좋아하는 개발자라도 지친다.
그리고 그 개발자의 실력과 노력에도 신뢰가 사라지게 된다.
그러니 하나의 문제를 해결할 때,
제대로 파악하고 그와 관련된 기술를 충분히 익혀나가며 넓게 생각 해야한다.
그래야 추가로 발생할 수 있는 문제까지 파악하고 그 부분까지 완벽하게 방어할 수있다.
또 지금 나의 업무 방식은 자기 자신에게도 안 좋다.
그냥 그 회사 일을 한 거지
개발자로서 성장에 도움이 된 부분은 그냥 이거 해봤다…. 써봤다…. 경험 정도?
그러니 나중에 다른 회사를 가거나 프리랜서가 되는 경우,
다른 도메인에 개발 문제 해결을 거의 노 베이스로 풀어내야 한다. ( 응용 능력이 없으니….)
고생은 고생대로….
자기만 힘들 뿐이다.
아직 늦지 않았으니 다시 힘을 내서 하나씩 고쳐나가고 내 강점은 더욱더 키워나가면 된다.
최근에 주변 친구들도 이러한 고민들을 하는 걸 보면서, 우리 진짜 늙었다 라는 생각이 들었다.
그만큼 주니어라고 배려받기엔 너무나 시간이 흘러버린거다.
( 중니어...인건가... )
시간이 흘러서 내가 닮고 싶었던 시니어 개발자가 되기 위해서는
더욱더 긴장하고 옳은 방향으로 계속해서 성장해나가야겠다.
