[우아한 유스방 3기] 첫 번째 과제

1. 학습 과정과 현재 자신이 생각하는 역량은? (1000자 이내)

최근에 학습하는 것은 코틀린JPA, 스프링(부트)를 학습하고 있습니다. 실무에서 코틀린과 JPA를 사용하게 된 지 얼마 안 되어 코틀린 언어의 특징을 활용한 코딩 스타일을 익히고, ORM의 개념을 숙지하여 JPA를 능숙하고 안전하게 사용할 수 있도록 학습하고 있습니다. 또 팀 내에서도 코드 리뷰를 하며 OOP클린 코드, 리팩터링와 관련된 깔끔한 테스트 코드 등을 위해 항상 노력하고 있습니다. 현재 학습하고 있는 것들이 익숙해진다면 도커, K8s클라우드MSA 순서로 스터디할 계획입니다.

저의 학습 방식은 주제에 따라 다른 편입니다. 클린 코드클린 아키텍처, 이펙티브 자바, 리팩터링 등과 같은 바이블로 알려진 책은 정독 후 까먹은 부분을 다시 보는 편입니다. 이와 다르게 스프링과 같은 프레임워크나 라이브러리, 플랫폼 등과 관련된 내용은 서적을 참고 시 기본 개념만 빠르게 훑고 바로 필요한 부분만 사전처럼 찾아보는 편입니다. 그리고 개발 강의들을 자주 찾아보는 편인데, 이러한 강의들은 강의 내용 외에도 얻어 가는 게 많아 시간적 여유가 된다면 관심이 가는 강의를 사비를 들여서라도 수강하는 편입니다. 최근에는 회사 팀원들과 회사에 필요한 기술 중 하나를 선택해 스터디를 진행하고 있습니다.

제가 생각하는 현재 제 역량은 프로젝트 수행에 필요한 특정 도메인 지식을 지녔다고 가정했을 때, 프로젝트 기본 설정이 가능하고 기본적인 비즈니스 로직(CRUD)구현과 DB 설계클라우드를 활용하여 간단한 인프라 설정 및 CI, CD 설정을 통한 배포 자동화 등이 가능합니다. 즉 기획부터 배포까지의 프로세스를 모두 경험해 보았다는 것이 장점이라고 생각합니다.

하지만 실시간 대용량 트래픽 처리 등은 클라우드에서 지원하는 오토 스케일링 설정 등을 제외하고선 처리 경험이 전무하고 CI, CD의 복잡한 파이프라인 설정 경험 또한 없으며, 도커K8s 등은 기본적인 교육만 받아 간단한 개념 정도만 알고 사용할 수 있습니다. 또한 MSA 설계 및 구축 경험이 없어 이와 관련된 트러블 슈팅 경험이 부족하다고 생각됩니다.

2. 선택한 직군이 되려는 이유는 무엇인가요? (1000자 이내)

대학에서 전공으로 배울 때와는 다르게 개발자로 일하면서 기술적으로 새로운 것을 알게 되었을 때 기분이 좋았습니다. 습득한 지식을 머리로만 알고 있다가 프로젝트에 적용하며 퍼즐이 맞춰지는 느낌이 좋았고, 깔끔한 코드를 작성하는 것이 글을 쓰는 것처럼 느껴져 좋았습니다. 그리고 이 모든 것들을 다른 사람들과 다양한 예시를 통해 설명하고, 이야기하는 것이 즐거웠습니다. 그래서 일을 하며 기술적인 측면에서 수많은 선례를 확인하면서 이를 팀원들과 논의하고 토론하며 상황에 맞는 베스트 프랙티스를 찾는 것이 꽤나 즐겁습니다.

개발자 중에서도 백엔드 개발자라는 포지션은 저에겐 꽤나 매력적이었습니다. 윈도우 애플리케이션과 하이브리드 앱 등을 개발한 경험이 있지만 제겐 백엔드 포지션이 적성에 맞는다고 판단했습니다. 핵심 비즈니스 로직을 구현하면서, 클라우드 같은 인프라부터 앱 서버 및 DB, 배포 자동화 같은 많은 영역을 총망라하면서 무언가를 만든다는 게 흥미롭다고 느꼈습니다.

3. 마음이 끌리는 무엇인가에 몰입해 일정 수준의 결과물을 만들어 낸 경험이 있나요? (1000자 이내)

가장 최근에 회사에서 내부 데이터들을 국제 데이터 표준 모델인 HL7의 맞춰 ETL(Extract, Transform, Load) 작업을 한 적이 있습니다. 그 당시 아래와 같은 문제점들이 있었습니다.

  • 코틀린에 대한 부족한 숙련도로 자바만큼 생산성이 높지 않고, 전혀 코틀린스럽지 못한 코딩 스타일
  • ORMJPA의 개념 및 메커니즘 이해도 부족으로 데이터 조회 시 성능 이슈 발생
  • 데이터를 수신하는 외부 서버의 성능 이슈나 일정 같은 외부 요인

해당 업무는 단발성 업무였기 때문에 편한 기술로 데이터를 적절하게 잘라 보내기만 하면 그만이었지만 아이러니하게도 시간이 지날수록 어떻게든 개선해 보려는 마음은 더 커졌던 것 같습니다. 이를 해결하기 위한 저의 노력은 다음과 같습니다.

  • 팀 내 스터디와 코드 리뷰 형태의 강의를 통해 코틀린 언어에 대한 깊은 이해
  • 비동기 요청 및 요청별 새 트랜잭션 처리로 연관관계 및 DB Connection 이슈 해결
  • 외부 요인은 팀 내 공론화를 통해 협력과 집단 지성으로 처리

기술적으로 부족한 부분은 어떻게든 방법을 찾아 개선 및 해결했으나 외부 요인들은 스스로 해결할 수 없었습니다. 따라서 제가 할 수 없는 부분은 대외적으로 알려 공론화시키려고 무던히 애썼습니다. 예측했던 개발 규모와 실제 개발 규모가 달라서 발생한 일정 지연을 사내에 주기적으로 공유하여 일정 조율 측면에서는 다른 분들의 도움을 최대한 받으려 했고, 의사소통 시간을 줄이기 위해 외부 개발자와 직접 교류하면서 외부 업체와도 일정이나 성능 등 협업을 통해 조율하려 노력하였습니다.

비록 큰 성과는 없었고 회사 업무이기에 어찌 보면 노력의 결과가 당연하다 생각될지 모르나 개인적으로는 예전에 비해서 많이 성장했다고 느끼는 경험이었습니다. 어쩔 줄 몰라 손 놓고 있는 상태가 아닌 할 수 있는 선에서 최선을 다하는 제 모습이 스스로 뿌듯했습니다.

4. 우리 회사에 지원하려는 이유는 무엇인가요? (500자 이내)

현재의 저라는 개발자를 만들어준 우아한테크캠프 Pro 교육을 통해 관심이 생겨 지원하였습니다. 개인적으로 이 교육을 굉장히 힘들 시기에 수강하게 되었습니다. 임금체불로 회사를 그만두게 되면서 실패, 좌절을 경험하면서 이직에 어려움을 겪고 개발자를 그만둘지에 대한 깊은 고민을 하던 찰나였습니다. 이때 심리적으로 이 교육이 많이 힘이 되었습니다. 해당 교육을 통해 앞으로의 성장 방향을 알게 되면서 시간만 더 주어지면 일어설 수 있다는 자신감이 생겼습니다.

결론적으로 저는 힘든 시절 지탱해 준 교육에 감사하며 이렇게 업계에 발전을 위해 힘쓰는 곳은 얼마나 될까라고 생각했습니다. 처우와 복지가 좋은 회사도 많고 화려한 기술 스택을 사용하는 곳도 많지만 일을 하려면 이런 곳에서 선한 영향력을 주고받으며 해야되지 않을까라는 생각으로 지원하였습니다.

댓글남기기