INTRO
같은 일을 해도 돈을 받고 일하면 프로라고 한다
프로로써 3달차 3개월간의 프로 개발자로서 회고를 해보려고 한다.
기대했던 회사생활
나는 회사에 합류하자마자 코로나에 걸리게 된다.
정확히 7일 차 때의 일이었다.
뒤늦게 걸린 코로나에 끙끙 앓다가 처음으로 진행한 프로젝트는 이미 구현된 PC웹 프로젝트에 기반해 모바일 웹을 만드는 vue2 프로젝트였고 이미 구현된 바가 있어서 api에 대한 설계 db에 대한 설계가 전혀 필요 없는 순수한 프론트엔드 작업뿐이었다.
해당 프로젝트를 진행하면서 두 가지 문제가 있었는데 하나는 회사에 그 누구도 vue를 다뤄본 적 없었다는 것이고 두 번째는 나 역시 그렇다는 것이었다. 나는 여태 Java, spring과 비즈니스로직, 데이터베이스구조를 위주로 학습했고 복잡한 프론트 로직이나 UI프레임워크를 써본 적이 없었어서 해당 부분에 진입비용이 상당히 발생했었다.
백엔드개발을 지향하더라도 프론트를 아예 모르고 넘어갈 수는 없기에 언젠가 학습하고자 마음만 먹고 있었던 일을 입사하자마자 겪게 된 것이었다. 진짜 문제점은 회사에 입사하게 되면 사수로부터 그것을 전수받을 것이라고 생각했는데 이곳에는 그 누구도 프론트엔드 프레임워크를 다룰 줄 모르는 것이 문제였다. ( 회사에 프론트엔드가 없어요 )
다행인 것은 개발기한에 여유가 있었고 회사에서 5일간 학습시간을 보장받았고 해당 기간, 퇴근 후, 주말을 활용해 최대한 vue에 대해 학습했는데 백견이 불여일타라고 막상 그 기간 동안 학습한 내용보다 실제 프론트를 구현하면서 학습한 것이 더 크게 다가왔었다.
내가 처음으로 맡게 된 일
내가 코로나에 걸린동안 부장님이 만들어놓은 탭 라이브러리가 의도한 대로 동작하지 않아서 해당 UI라이브러리를 들어내고 새 라이브러리를 장착하는 일을 맡게 되었다.
- 내가 생각한 무언가를 반영시키기 위해서는 근거 있는 논리와 설득이 필요하다.
- 내가 일하는 시간에 대한 합당한 이유가 필요하다.
해당 프로젝트를 진행하며 이 두 가지를 크게 느꼈는데
학습용 프로젝트를 진행할 때는 특별한 이유가 없어도 내가 적용하고 싶은 기술, 라이브러리를 사용하는 데 있어서 누군가를 설득하는데 크게 힘이 든 적 없었는데 실무 프로젝트에서는 라이브러리를 선정하는 것부터 큰 난관이었다.
적합하다고 생각되는 라이브러리에 대한 리스트업,
해당 라이브러리들이 제공하는 문서 수준이 양호한 지,
해당 문서들에 대한 테스트코드를 작성해 보고 정상적으로 동작하는지
...
단순한 나의 생각보다 훨씬 디테일한 수준의 검증이 요구됐다.
복잡한 과정을 거치고 작업을 시작하는 것 또한 일을 바로 시작하는 게 아닌 일감에 대한 브레이크다운, 해당 일감들에 대한 소요시간 책정 과정을 거친 후에야 일을 할 수 있었는데 이 일감 나누는 것 과 일정 잡는 것이 입사 초반에 나를 너무 괴롭혔었다
일정을 길게 늘여가면 컷당하고 짧게 잡아가면 그 기간 안에 일을 다 처리하기 어려웠는데 이 부분에 대해서는 일정을 짧게 잡아 해당 일정에 소화하지 못해 개인시간을 부어가며 일정마감을 지켜가기를 여럿 한 끝에 다음과 같은 원칙을 통해 일감을 정하게 되었다.
- 작업에 대해 설계하는 시간 고려
- 작업이 얼마나 걸릴지 예상
- 작업에 대한 버퍼 ( 10% ~ 20% 정도 )
- 테스트에 대한 일정고려
- 이슈가 발생할 시 (1~4에 고려 안된) 즉시 리포트
일정을 잡는 것에 대해 익숙해지기 전에는 작업을 분석하는 시간이 적었고 해당 시간은 고려하지 않은 채 대충 ~ 정도면 끝나겠지 생각하고 해당 시간을 일정으로 등록했는데 작업에 대한 충분히 분석이 이뤄지고 나서 일정을 등록하는 것이 우선되었다.
또한 작업 후에 테스트하는 것 역시 일정으로 등록되어 개발 품질에 대해 고려하게 되었고 이 과정에서 이슈가 발생한 경우 일정이 늘어질 수 있기 때문에 해당 이슈는 최우선적으로 즉시 팀장에 보고하는 습관이 생겼다.
이 정도 노하우가 생길 무렵 진행하던 프로젝트가 홀딩되고 새 프로젝트를 맡게 된다.
vue프로젝트가 6주 정도 진행됐을 무렵 프로젝트를 홀딩하고 신규 프로젝트를 들어가게 되었다.
1.0.0 버전까지 만들어진 프로젝트에 특정 기능들을 추가, 배포하는 프로젝트였고 해당 프로젝트에 회원관리기능을 추가하는 작업을 맡았다
해당프로젝트는 리액트로 짜인 프론트와 nest로 만들어진 api서버를 가지고있었고 이번에는 백엔드작업과 프론트 화면 구현 모두를 맡게 되었다.
db컬렉션을 만들고 비즈니스 로직을 설계하는 것과 만든 rest api를 테스트하고 잘 동작하는 걸 보면 즐거웠다.
앞으로도 여러 프로젝트를 진행하며 여러 작업을 하겠지만 성급하지 않게 차근차근 백엔드 개발자로 성장해 나아가겠다.