Prologue
-
이 글은 필자의 개인적인 의견이 담겨 있습니다.
-
이 글에 대해 공감하거나 다른 생각이 있으시면 댓글로 의견을 남겨주시면 감사하겠습니다.
-
그럼 개발자에 대한 저의 생각을 간략하게 말씀드리겠습니다.
개발자라는 직업을 선택한 이유
-
내가 개발자의 직업을 선택한 이유는 끊임없이 자신을 성장시킬 수 있는 직업 중 하나였고,
우리의 삶에서 필요한 서비스를 직접 개발한 것을 누군가가 사용함으로써 행복을 전해줄 수 있는 뿌듯함이 나에게 맞았다.
-
그리고 무엇보다 개발 실력을 계속 디벨롭 한다면, 시장이 나에 대한 가치를 높여줄 것이라 생각했다.
개발할 때 가장 중요한 부분
-
개발할 때 가장 중요한 부분은
왜?
라는 질문을 항상 가져야 한다고 생각한다. -
내가 그 이유를 알아야 일의 동기부여가 되기 때문이다.
-
이 이유가 없이 개발만 한다면, 어느 순간에
내가 이걸 왜 개발하고 있지?
라는 생각과 번아웃이 찾아올지도 모른다.
서버 개발자(백엔드)에게 필요한 지식 및 경험은 무엇인가요?
-
일단 기본적으로 알고리즘 구현 실력이다. 이는 백엔드 개발자 뿐만 아니라 모든 개발자가 갖춰야 할 역량이라고 본다.
적어도 프로그래머스에 나와 있는 Lv3를 풀 수 있는 능력을 갖춰야 기업에서 나오는 코딩테스트를 무난하게 통과한다고 생각한다.
-
두 번째로 CS 관련 기본기이다. 여기서 말하는 CS란 Computer Science의 약자로 컴퓨터와 관련된 학문적 지식을 의미한다.
내가 생각하는 CS 과목은 자료구조 & 알고리즘, 운영체제, 네트워크, 데이터베이스이고, 추가적으로는 컴퓨터구조, 시스템이라고 생각한다.
-
세 번째로 프로젝트 경험과 기술스택 & 인프라다.
제대로 된 프로젝트 경험을 최소 2개 이상 갖춰야, 나중에 자소서 작성 및 면접에서 본인의 경험을 구체적이고 명확하게 전달한다면, 면접관분들이 좋게 봐주실 거라고 본다.
기술스택 & 인프라 같은 경우는 회사마다 다르기 때문에, 꼭 본인이 가고자 하는 회사의 채용공고를 확인해야 한다.
예로 들자면, 카카오뱅크의
서버 엔지니어
는 JDK 1.8+, Kotlin, Java를 활용 중이며, DB는 서비스 특성에 따라 Oracle, MySQL, Postgre 등 다양하게 사용 중이다.시스템 엔지니어
는 Linux, HCI, Docker, Kubernetes, Terraform 등을 활용하고 있다.일부 운영성 업무를 수행하는 팀은 node.js를 활용하기도 하지만, 대용량 서비스를 안정적으로 제공하기 위해선 JVM 기반 에코시스템이 보다 효과적이기에 Java를 주로 활용하고 있다.
-
필자는 이 세 가지를 완벽하게 갖추지 못했기 때문에, 꾸준히 공부를 하고 있는 중이다.
앞으로 어떤 개발자가 되고 싶나요?
-
남들에게 인정받는 쓸모 있는 개발자가 되고 싶다.
-
그리고 나의 지식과 경험을 동료에게 혹은 제3자에게 공유하면서, 도움이 된다면 엄청 뿌듯한 기분이 들 것 같다.
-
그러기 위해서는 항상 개발에 대한 실력을 높이도록 열심히 성장할 것이다.
-
10년 후에는 구성원들이 일을 효율적으로 할 수 있도록 시스템을 잘 갖추도록 노력할 것이고,
개인적인 면에서는 백엔드 개발자의 역량뿐만 아니라 다른 개발 역량도 우수한 실력을 갖추는 것이다.