멘토링 정리 - JH 멘토님
2월 3일 월요일 오후 9시 ~ 10시
현재 5년차 백엔드 개발자. 처음에는 작은 중소기업, 그 후에는 대기업 (11번가), 스타트업 짧게 근무하시고 현재는 명합 관련 중견기업 등 다양한 분야에서 근무하심.
프로젝트에서는 MVP를 빠르게 만들고 기능을 추가해나가는 방식으로 진행하는 것이 좋습니다. 또한 페어 프로그래밍 등 다양한 경험을 하면 좋겠습니다. 프로젝트를 포트폴리오로 사용할 수 있으려면 ERD 등의 시각적인 자료들도 많이 문서화 해놓으면 좋습니다.
프론트 영역에 있어서는 최악의 경우 API만 개발해도 괜찮을 정도로 챗GPT 등을 사용해서 간략하게 화면이라도 구현하는 정도면 됩니다. 최대한 적은 시간을 사용해서 가능한 많은 리소스는 백엔드에 투자하는 것이 좋겠습니다.
하지만 백엔드 개발자는 프론트엔드 개발자와 가장 밀접한데, 프론트 지식이 많을 수록 소통이 원할해집니다. 그리고 상황에 따라 풀스택을 하게 될 수도 있기도 하고, 일반적으로 업무가 잘 나눠진 대기업이라도 백오피스로 어드민 관련 페이지 정도는 백엔드 개발자가 담당하기도 합니다.
취업을 준비하거나 신입 정도에서는 중요할 수 있겠으나 연차가 쌓일수록 전공은 중요하지 않습니다. 전공자와 비전공자의 차이는 들인 시간의 차이로, 본인이 얼마나 많은 노력을 들였고 어떤 업무를 맡아서 진행했는지가 점점 더 중요해지게 됩니다.
하나를 하더라도 깊게 학습하고 개발하는 습관을 만들고, 나보다 잘하는 사람들과 함께 하며 그들의 지식을 흡수하는 방법을 고민하다보면 누구든 좋은 개발자가 될 수 있을 것입니다.
좋은 경험과 성장을 위해서는 단순히 사용하고 구현하는 것을 넘어 깊은 고민이 필요합니다. 예를 들어, OpenAPI를 사용한다면, 들어오는 요청마다 외부 API를 사용하게 되는데 너무 많은 요청이 들어오면 어떻게 처리할 수 있을지, 그리고 외부 API에 장애가 일어나면 어떤 식으로 요청을 처리해야 할 지 생각해볼 수 있습니다.
(Rate Limiter : 너무 많은 요청 제한 / Circuit Breaker : 외부 API 측 문제 대응)
그리고 회원 인가, 인증을 위해 스프링 시큐리티를 사용하는데, 스프링 시큐리티는 추상화가 복잡합니다. 작업을 하며 시큐리티 내부 소스 코드까지 파보면서 깊게 학습한다면 그냥 단순한 구현보다 훨씬 가치있고 매력적인 경험이 될 것입니다.
자격증은 가고자 하는 회사에서 특정 자격을 필요로 한다면 준비해야하지만, 일반적인 서비스 회사들의 경우는 정보처리기사 등의 자격증이 크게 중요하지는 않은 것 같습니다.
영어는 잘하면 좋습니다. 많은 공식 문서들이 영어로 되어 있기도 해서 다른 것보다 어느정도의 독해력은 있으면 좋은 것 같습니다.
코테 공부(와 CS 공부)는 꾸준히 하는 것이 중요합니다. 코딩 테스트는 면접으로 가는 관문으로 떨어지면 면접의 기회도 얻을 수 없기에 중요합니다. 학습 방법은 다양하게 있겠지만, 많이 푸는 것도 좋은 하나의 방법입니다. 자주 나오는 알고리즘들을 분류별로 많이 풀어보며 감을 느끼는 것이 좋습니다.
일반적으로 카카오 코테가 어려운 편으로 프로그래머스 3.5 ~ 4.5 단계 정도 되는데 이정도면 국내 웬만한 코테는 통과할 수 있습니다. 신입 기준으로는 평균적으로 3단계 정도는 되어야 할 것 같고, 이직하는 경력직의 경우는 2 ~ 3 단계 정도로 쉬운 편입니다.
언어 제한이 있는 코테는 10개 중에 1개 정도로 거의 없는 편입니다. 지금은 자바, 스프링 개발자로 공부하고 있고 자바가 유명하기는 하지만, 평생 자바나 코틀린만 한다는 보장도 없기에, 예를들어 파이썬은 제공하는 것들이 자바보다 많아서 짧게 작성이 가능하고 데이터나 크롤링 등 다양한 분야에서 쓰이는 일이 많기 때문에, 이미 할 줄 안다면 언어를 바꿀 필요 없이 둘 다 사용하는 것을 추천합니다.
신입에서는 엄청나게 특출난 사람이 아니라면 성장하는 모습과 마음가짐, 기본기 등이 중요합니다. 그리고 주니어 정도에서는 주어진 요구사항을 구현해 낼 수 있는 것이 요구됩니다.
미들급 정도라면 완성도 있게 구현하며 일정까지 관리할 수 있는 것, 시니어는 자신뿐만 아니라 주변 사람들까지 리딩하는 능력이 필요합니다.
백엔드를 잘하는 것, 좋은 백엔드 개발자라는 것은 연차나 레벨에 따라 달라지기에 지금 자신에게 맞는, 필요한 영역들에 대한 학습과 훈련이 중요합니다.
일반적으로 큰 회사일 수록 좋은 개발문화와 연봉과 복지를 가진 곳이 많습니다. 하지만 업무의 범위들이 많이 달라서 사람마다 어떤 곳이 더 좋은지는 다른 것 같습니다.
큰 기업은 직무별로 세분화가 잘 되어 있습니다. 그래서 각 분야에 대해서 깊게 경험할 수 있다는 장점이 있습니다. 그러나 업무의 범위가 좁아서 인프라나 데이터베이스 등 할 수 있는 것이 다양하지 않습니다. 예를들어 컬럼을 수정하는 것도 직접 할 수 없고 DB팀에 문의하는 것이 필요한 것입니다.
하지만 스타트업은 서비스의 많은 부분을 자유롭게 만들 수 있는 환경이 주어질 수 있습니다. 그래서 다양한 경험을 할 수 있다는 장점이 있습니다.
REST API를 사용하며 URL의 depth는 너무 길어지면 유지보수 등의 어려움이 생길 수 있지만 필요한 것들을 포함하다보면 2, 3 단계 정도 되어도 괜찮습니다.
새로운 기능을 추가하고 변경하면서 버전을 사용하는 경우가 많은데, 클래스 네이밍 마지막에 버전을 추가해서 관리하기도 합니다. 한번에 바꾸기 보다는 신규 사용자부터 새로운 버전을 사용하며 점진적으로 바꿔나가는 방식을 사용합니다.
비즈니스 예외처리는 서비스 단에서 하는 것이 좋고, 컨트롤러에서는 요청과 응답에 집중하는 것이 좋습니다. 컨트롤러는 엔티티와 비즈니스 로직을 알지 못하는 구조가 바람직합니다.
Rq 등 보다는 처음보는 사람도 알아보기 쉬운 네이밍을 사용하는 것이 좋습니다.
컨트롤러에서 응답하는 데이터는 DTO 객체를 사용하는 것이 좋고 final을 사용하는 것이 좋습니다. record를 사용할 수도 있습니다.