신입개발자 6개월 회고
내가 백엔드 개발을 6개월 동안 하면서 배운 것들
회사에 입사를 한지도 6개월이 넘었다. 사실은 12월에 입사를 했기때문에 7개월차이다.
하지만 스스로 6개월이라고 정의하고 6개월차 회고를 쓰는 이유는 12월은 정말 아무것도 못 하고 눈만 뜨고 있었기때문이다.
정말 바쁘다바빠- 적응하고 코드이해하고 하느라 정신없는 한달이었다.
정말 바빴는데 매달 어떤 일이 있었을까? 한 줄로 정리해보고싶어졌다.
더불어 내가 얼마나 성장했는 지 정리해보려고한다.
🗓️ 6개월 동안 무엇을 했을까?
- 12월: 시스템개발팀으로 입사 + 눈만 뜨고 있었음.
- 1월: 학사시스템 프로젝트 참여 + 배포
- 2월: 학사시스템 프로젝트 유지보수 + 교육
- 3월: 연구개발팀으로 발령 + 신규프로젝트 대기하면서 리액트스터디
- 4월: 리액트스터디
- 5월: 다른 신규 프로젝트 백엔드개발자로 참여
- 6월: 다른 신규 프로젝트 백엔드개발자로 참여
학사프로젝트
12월, 1월은 나에게 참 정신없는 달이었다.
입사와 동시에 프로젝트 막바지였던 학사시스템 프로젝트에 투입되었다.
막바지라는 의미는 거의 다 끝났다는 의미임과 동시에 해결할 것이 엄청나게 많이 남아있어 막판 스퍼트를 해야함을 의미했다.
입사하자마자 한달내내 야근을 했다. 집에 도착하면 밤 11시여서 씻고 자고 눈뜨면 바로 출근하는 정말 힘든 한달을 보냈다.
IT업계는 야근이 많다던데 진짜 이정도일 줄이야…
신입이었던 나는 주로 어드민페이지 수정와 이미지게시판 구현, 팝업기능 구현, 슬라이드기능 구현, SNS API로 실시간 글 호출기능구현과 그밖의 자잘한 오류들을 해결했다.
리액트스터디
수습기간을 거쳐 정직원이 된 후 연구개발팀으로 팀이동을 했다.
나는 백엔드개발자로 입사했지만 신규 프로젝트에서는 리액트 개발을 담당하게 되었다.
어떻게?
그냥 하라고 하면 하는 거다. 그것이 직장생활…😎
자바와 JSP를 주력으로 다뤄본 나에게 리액트를 배워볼 수 있는 좋은 기회라는 생각이 들었다.
신규 프로젝트가 기획되는 동안 주어진 업무에 최선을 다하기위해 열심히 리액트 공부를 하며 회의때 쏟아지는 용어들을 공부했다.
새로운 프로젝트 백엔드 개발
위에서 말한 신규 프로젝트 작업이 생각보다 늦어지면서 다른 새로운 프로젝트를 맡게되었다.
생체정보를 활용한 웹/앱 서비스를 만드는 프로젝트이다.(이하 막프)
지금도 진행되고 있는 막프는 6월까지해서 개발을 끝내는 것이 스프린트의 목표인데 연계되어있는 디바이스업체와 AI연구소와의 조율때문에 시간이 더 걸릴 것 같다.
😘 6개월동안 성장한 것
1 서버와 클라이언트사이에서 HTTP통신에 대한 확실한 이해
현재 진행중인 막프덕분에 프론트엔드와 백엔드의 상호작용 흐름을 확실하게 이해할 수 있게 되었다.
POSTMAN을 이해하고 쓸 수 있다.
특히 Path Variable, Query Parameter, ResquestBody를 필요한 상황에 따라 정확히 구분하여 사용할 수 있다.
2 RestAPI 이해도 향상
예전엔 그냥 구글링해서 따라했다면 이젠 RestAPI를 정확히 인지하고 어떻게 사용하면 좋을지 고민하는 단계까지 왔다.
앞으로 적절한 디자인패턴을 적용하고 RestAPI 규칙을 완전히 따르는 카카오나 MS, 공공API와 같은 RestAPI 만들어보고 싶다.
- 관련 포스팅 : REST API 컨트롤러 Mapping을 어떻게 하지?
3 개발과 문서화를 쉽게 할 수 있도록 도와주는 라이브러리들과 친밀도 향상
LOG4J와 SWAGGER를 자유자재로 사용할 수 있다.
Logback로 SQL 쿼리문을 콘솔에 출력하여 개발 효율성이 한증 증가했다.
4 커스텀 예외 클래스로 예외처리 가능
단순한 예외처리뿐만아니라 커스텀예외클래스를 생성하여 예외처리를 할 수 있다.
NPE 처리는 여전히 어렵지만 if(object != null)이 아닌 StringUtils, isEmpty() 또는 equals()를 사용하고 toString() 대신 String.valueOf()를 사용하여 예방할 수 있다.
또한 아예 쿼리를 이용해서 NPE를 예방할 수 있다.
5 Springboot security와 JWT 경험
이번 막프에서 나를 가장 많이 애먹인 부분이다.
팀장님의 도움없이는 이렇게까지 절대 이해하지 못했을것이다. 이자리를 빌어 다시한번 감사드린다고 말하고싶다.
팀장님 진짜 감사합니다!
Springboot security는 여전히 어려운 부분이 많지만 기본 개념을 이해하고 사용하는 데는 문제가 없으며 Session이 아닌 JWT를 통해 인증기능을 구현할 수 있다.
6 공통코드테이블 구현 가능
테이블의 관계를 파악하고 공통코드테이블을 구현할 수 있다.
7 JOIN과 동적쿼리 실력 향상
INNER JOIN과 OUTER JOIN을 구분하여 사용할 수 있다.
Mybatis의 동적쿼리인 selectKey는 물론 ${}와 #{}를 구분하여 사용할 수 있다.
- 관련포스팅: selet 컬럼명을 조건에 따라 다르게 출력할 수 있을까?
- 관련포스팅: update할때 컬럼명 바꿀 수 없을까?
- 관련포스팅: select한 값을 바로 insert할 수 있을까?
8 리액트 이해도 향상
아직 부족하지만 그래도 CRA를 이용해 리액트 프로젝트를 만들고 리액트hook과 Material-ui를 활용하여 간단한 게시판 구현을 할 수 있다.
🖐️ 6개월 동안에 업무외로 내가 실천한 것들과 그 성과
취업하고서도 1일 1커밋을 목표로 매일 알고리즘 한 문제씩 풀려고 노력했다.
그결과 아래처럼 멋진 잔디를 가질 수 있게 되었다.
앞으로도 취미처럼 1일1커밋을 실천해나갈것이다.
1일1커밋
코딩을 취미화 그리고 습관화하기 위해 취업후에도 1일 1커밋을 계속 실천하고 있다.
커밋은 알고리즘 한문제씩 풀거나 오늘 배웠던 TWIL이나 개발정보정리글 위주로 했다.
노력한 끝에 아래와 같이 멋진 잔디밭을 가질 수 있게 되었다.
알고리즘스터디
취준때부터 친한 개발자언니와 100문제 알고리즘 스터디를 만들어 진행하다가 취업후에도 멈추지않고 계속도전하였다. 그 결과 17주안에 100문제 풀기에 성공했다.
스터디가 끝난 이후에도 혼자서 지속적으로하여 현재 50문제를 추가로 더 풀었고
앞으로도 매일 한문제씩 쭉 도전할 예정이다.
- Rhythming-Algorithm 스터디 깃헙레포
- 나혼자하는 알고리즘 깃헙레포