일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 값객체
- spring-web
- zuul
- java17
- 개발자
- spring6
- springcloud
- mongo
- spring caching
- 반버논
- Kotlin
- kakao
- armeria
- ifkakao
- IDDD
- MongoDB
- Conference
- MSA
- Redis
- ddd
- 바운디드컨텍스트
- docker
- spring scheduler
- Pay
- 신입
- springboot
- 애그리거트
- Spring
- webframework
- springboot3
- Today
- Total
Easy Understanding
개발자로서의 2020년을 되돌아보기 본문
나는 2020년부터 개발자가 되기로 결심을 했다.
이전까지는 머신러닝을 공부한다고 하다가 결국은 어쩌다보니 이쪽 분야로 옮기게 되었다.
그리고 2020년의 마지막 날, 아직 취업은 되지 않았지만 발전 과정 자체는 굉장히 만족할만한 수준이어서
한 번 정리해보고자 마음을 먹었다.
~1월. 코딩테스트만 할줄 알던 시기
처음에는 코딩테스트로 취업을 준비했다.
대부분의 개발자 입사 과정에서는 코딩테스트가 필수였고, 나는 이에 대해서 나름 자신이 있었다.
예전에도 학부 때 문제 풀이를 좋아했기 때문에, 그 경험을 이용해서 다시 공부를 시작했다.
백준과 프로그래머스 위주로 문제를 풀었고, 필수 문항들은 웬만한 문제들은 다 풀었다.
이 때문에 코딩테스트에 대한 자신감은 꽤나 있었고, 이 덕분에 코딩테스트 전형은 쉽게 붙었다.
그러나 면접 전형을 겪어보니, 나는 아무것도 아는 것이 없었다.
CS 지식들은 나름 열심히 준비해갔다. 여기에서는 그렇게 크게 막히는 것은 없었다.
그렇지만 경험 관련해서는 정말 무엇이 없었다.
제대로된 Github Repository 하나 조차도 없던 상황이라 자신감도 없었다.
물론 이후에 백엔드 공부를 시작하겠다는 계획은 있었으나,
도대체 제대로된 서버 개발 프로그램 하나도 짜보지 않은 상태에서는 취업을 할 수가 없다고 생각했다.
1~3월. 개발자의 세계로의 입문
나는 머신러닝 쪽을 공부하면서 이미 파이썬에는 익숙했다.
그리고 코딩테스트도 파이썬으로 진행했기 때문에 파이썬 개발자는 어떨까하는 생각도 했다.
그러나 초반에는 어떤 공부를 시작해야하는지에 대해서 리서치를 많이 해보기는 했다.
여러 사이트들을 돌아다니면서 어떤 언어가 취업에 가장 도움이 될지를 꽤나 오래 찾아보았다.
압도적인 것은 자바, 그럼에도 불구하고 인기나 지지도가 높은 것은 NodeJS,
그리고 간간히 보이는 Python과 PHP 등이 있었다.
여러 고민들을 거치고 나는 Java Spring 기술 테크를 타기로 결심했다.
일단 경험이라도 해보자는 의미로 '구멍가게 코딩단'의 '코드로 배우는 스프링 웹 프로젝트'
라는 책을 골라서 실습을 시작했다.
실제로 동작하는 어플리케이션을 함께 만들어볼 수 있기 때문에, 이론부터 배우는 방식과는 다르게 빠르게 학습할 수 있는 바탕이 되었다. 부족한 개념들은 구글링을 하면서 보충을 했다.
그러나 그럼에도 불구하고 나는 따라만 하는 단계였고 각각이 무엇을 의미하는지에 대해서는 어렴풋이
밑그림만 그리는 수준이었다.
이 당시에 '토비의 스프링'이라는 책을 많이 추천해주어서 읽어보았지만, 읽은 것은 단지 글자뿐이었다.
지금 생각해보며 그 당시에는 읽을 필요가 전혀 없던 책이었다.
최근이 되어서야 그 책의 진가를 알 수가 있었다.
그 외에도 이 당시에는 많은 지식들을 공부하기는 했다.
NodeJS를 실습해보기도 했고, React도 책을 빌려서 실습을 하다가 어려워서 그만두기도 했다.
Django의 튜토리얼을 따라하기도 했으며, 클라우드 서비스로의 배포도 공부했다.
Docker를 이용해서 어플리케이션을 띄우기도 했었다.
이렇게 많은 것을 나는 단지 '경험'하기만 했다.
사실 초보자 입장에서 알면 얼마나 알겠는가. 물론 경험해보지 않은 것에 비해서는 얻은 것은 훨씬 많다고는 생각한다. 그렇지만 깊이 없이 단순한 체험 정도의 공부 수준이었다.
3월~6월. 자바 개발자가 되기로 결심하다.
나는 결국 스프링을 선택하기로 했다.
대부분의 회사들에서 스프링을 기본 자격 요건으로 하는 경우가 많았기 때문이라는 수동적인 이유였다.
사실 파이썬으로 코딩테스트 문제를 풀면서, 자바 코드를 보았을 때 참 자바는 별로라고 생각했다.
왜 저렇게 코드가 길까 라는 생각 때문에 자바를 사실 무시를 조금은 했었다.
이 당시에도 나는 자바를 해야하니까 공부한 상황이었다. 딱히 애정은 없었던 상황이었다.
(물론 지금은 나는 스프링을 매우 좋아한다. 자바는 나의 최애 언어가 되었다.)
그러던 와중에 스프링부트를 공부하기 시작했다.
이전에 공부했던 '구멍가게 코딩단'의 '코드로 배우는 스프링부트 웹 프로젝트' 라는 책을 통해서 공부했다.
인터넷 서치를 하는데 사람들이 하도 스프링을 먼저 공부하고 스프링부트로 넘어가야한다고 하는 사람들이 많아서, 스프링을 나름 열심히 다지고 스프링부트 공부로 들어갔다.
스프링부트 책도 똑같이 따라하는 과정을 진행했다.
이전과 다른 점은 MyBatis 대신 JPA Hibernate를 이용했다는 것이다.
그리고 JSP 대신 Thymeleaf 템플릿 엔진을 사용해서 html 파일을 작성했다는 것이다.
이때만 해도 역시나 따라하기만 했다.
그러다가 JPA에 대해서는 서칭을 통해서 여러가지 의견들을 접하게 되었다.
국내에서는 아직 JPA 보다는 Mybatis가 선호된다는 의견들도 있었고,
JPA를 별로 좋아하지 않는 개발자도 있다는 이야기를 들었다.
그렇지만 JPA는 나름 선도적인 기술임이 확실하고,
특히 '자바 ORM 표준 JPA 프로그래밍'이라는 책을 읽으면서 나도 JPA에 전도를 당해버렸다.
그래서 나름 JPA를 잘 사용해보고자 열심히 공부와 삽질을 하기도 했다.
JPA를 프로젝트에 메인으로 사용하기로 결심하고 약간 어깨가 으쓱해졌던 것 같다.
나름 나도 신기술을 채택하는 힙한 개발자라는 생각이 들었던 것 같다.(지금 생각하면...)
이 당시의 나를 한 마디로 표현하자면 '따라하기 시작한 개발자' 라는 말이 맞는 것 같다.
나는 여러 강의들과 도서들을 읽으면서 기술과 지식을 습득하기는 했지만,
막상 어떤 프로그램을 개발해야한다면 어떻게 해야하는지에 대한 경험이 전혀 없었고 자신도 없었다.
그렇게 어떤 공부를 해야할지도 잘 모르겠고, 취업의 문은 열리지 않다보니 정체되는 시기가 잠깐은 찾아왔었다.
그러던 중...
7~8월. 여름 개발 인턴
네이버 인턴 프로그램에 하나 합격하게 되었다.
클라우드 개발팀에서 6주간 진행되는 인턴이었다. 그 당시에 굉장히 기뻐서 설렘으로 인턴을 시작했다.
6주간 과제를 하나 받았고, 마지막 발표를 통해서 평가를 받는 그런 과정이었다.
기술부터 아키텍처까지 요구사항들을 통해서 스스로 결과물을 내야 했다.
멘토들의 조언이 있었지만 그렇게 직접적으로 도와주지는 않았기 때문에 스스로 공부하고 찾아봐야할 것들이 많았다.
처음에 과제 설명을 듣는데 내가 경험해보지 못한 것들이 너무나도 많았다.
Kafka라든지 병렬처리, 멀티스레드, AWS SDK 등 아예 모르는 것들이 대부분이었다.
그러나 모르는 것이 많은 그 상황이 나는 굉장히 설렜다.
이 많은 것들을 공부를 해서 내 것으로 만들어야겠다는 생각뿐이었다.
짧은 시간동안 굉장히 많은 구글링과 책들을 읽었다.
그렇게 공부하면서 스스로 아키텍처를 설계하고 피드백을 받기도 했으며,
새로운 미들웨어들을 도입하면서 신기함을 느낀 적도 여러번 있었다.
Redis, Kafka, VisualVM, AWS SDK, ELK Stack, Docker, Jenkins 등 여러 가지 도구들을 스스로 공부하면서 익혔다.
물론 중간중간 꽤나 어려움이 많았지만, 나름 다 따라가면서 개발 인턴을 마쳤다.
나름 결과물은 만족스러운 수준이었고, 내가 그 동안 배운 것이 정말 많았기에 잃을 것은 없던 시간이었다.
전환 결과는 실패였다. 나름 열심히 했고, 다른 팀원들과 비교해서도 만족할만한 결과였지만
전환에 있어서 윗사람들의 생각은 좀 달랐던 것 같다.
하기야 면접은 대부분 사람 운도 많이 중요하다고 하니..
잠깐만 힘들고 다음 취업을 준비할 수 밖에 없었다.(잠깐이 한 달은 되었나...)
9~12월. 이제야 개발자로서 무엇인가를 시작한 것 같은 시기
그러나 생각보다 내가 인턴을 통해서 얻게 된 지식들은 엄청났다.
단순히 그런 새로운 어플리케이션을 만들어봤다는 경험이 그렇게 큰 경험의 업그레이드를 시켜줄지는 전혀 예상하지 못했다.
아키텍처를 구성해 본 경험.
그리고 빡세게 테스트 케이스들을 작성해 본 경험.
프로그램의 완성도를 위해서 디테일하게 개발에 참여한 경험.
이런 것들이 다 합쳐져서 약간 개발자로서의 경험의 단계가 완전히 바뀌어 있었다.
상반기 때만 해도 어떤 어플리케이션을 개발하라고 했을 때 내가 무엇을 할 수 있을까 싶었는데,
이제는 무엇이든지 시키면 공부해서 할 수가 있을 것 같은 자신감이 생겼다.
어떤 기술을 사용해야하는지도 슬슬 감이 오는 단계가 되었고,
무엇보다도 이전에 이해되지 않던 지식들이 이해가 되었다.
리팩터링, 디자인패턴 등을 공부하니 이것이 왜 필요한지 알게 되었고,
어떤 미들웨어를 어디에 사용하는지, 그리고 어떤 기술이 핫한지 왜 사용해야 하는지 이런 것들이
머릿속에서 정리되고 왜 그런지도 알 수 있게 되었다.
이전에는 분명히 이해되지 않았던 개념이라고 생각했던 쿠버네티스 책을 한 번 읽었는데,
책의 내용 중에 이해가 되지 않는 내용이 거의 없다는 것에 놀랐다.
게다가 내가 쿠버네티스가 좋은 기술이라는 것에 감동했다는 사실 조차도 놀라웠다.
아 이제 이 기술이 어떤 기술인지 알 수 있는 수준이 되었다는 것이기에 새삼 기뻤다.
언어나 기술에 대한 선입견도 줄어들었다.
아직도 특정 커뮤니티에서는 어떤 언어가 좋다, 어떤 언어는 구리다 이런 논쟁도 나오고 하는데
요새 다시 생각해보니 의미는 없던 것 같다.
개발자는 필요할 때 필요한 도구를 꺼낼 수 있어야 하고,
본질을 이해하고 나면 그 기술이 그 기술이라는 생각이 들기도 한다.
사실 난 한 동안 자바와 스프링 생태계의 매력에 빠져있었다.
웹 서버 개발에서는 만능 프레임워크라는 인식이 나에게 자리잡았고,
Spring Webflux, Spring Cloud project 등을 공부하면서 정말 좋은 프레임워크라는 생각이 들었다.
그러나 요새 자바 개발자들이 Kotlin으로 넘어간다는 소식을 자주 들었기에 Kotlin에도 도전을 해 보았다.
면접을 보면서도 그렇고, 입사 공고를 보아도 Kotlin은 이제 필수가 되어가는 것 같다는 생각이 들었다.
그렇게 Kotlin 공부까지도 가볍게 마치고 스프링 프로젝트로 만들어 봄으로서
중간중간 새로운 지식을 배우는 즐거움까지도 느끼게 되었다.
그리고 최근에는 카카오, 네이버, AWS, NHN, 우아한형제들 등에서 진행한 개발자 컨퍼런스에 참여하기도 했다.
코로나로 인해 언택트로 열리게 된 것이 나에게는 오히려 행운이었다.
이전에도 컨퍼런스 영상들을 참고한 적이 있지만 사실 그 때는 대부분의 세션을 이해하지 못했다.
그러나 이제는 대부분의 백엔드 세션에서 이해할 수 없는 기술은 없었고, 각 세션들이 너무 매력적으로 느껴졌다.
실제로 굉장히 재미있게 시청했으며, 필요한 것은 이후에 다시 참고할 수 있도록 메모도 해 놓았다.
빨리 나도 이런 개발의 세계에 뛰어들어 어떤 것을 이루고 싶다는 끓어오름이 있었지만, 일단 취업부터 해야겠지...
나도 언젠간 그런 자리에 설 날을 생각하며 오늘도 열심히 공부하려고 한다.
그리고 블로그를 시작했다.
블로그는 취업을 위한 것도 있지만, 나름대로 지식을 쉽게 나누고 전달하고 싶다는 생각에서 운영하고 싶어졌다.
잘나가는 블로그들을 보면서 나도 저런 블로거가 되고 싶다는 생각을 하기도 했는데,
그런 생각에서 일단 한 발자국씩 나아가보려고 한다.
그래서 좀 서치해보고 남들이 정리하지 않는 것들을 정리해보려고 시도해보기도 했다.
물론 깊이는 얕아서 아직까지는 자랑할만한 포스트들은 아니기는 하다.
마무리
나는 2020년에 취업 빼고는 정말 많은 성장을 이루기는 했다.
내가 생각한 것 이상의 성장을 이루었다.
1년 만에 이렇게 개발자로서 개발 지식에 대해서 논할 수 있다는 것에 꽤나 만족한다.
물론 아직 만족하지 못하는 부분이 훨씬 많이 있다.
나에게는 경험이 필요하고, 그에 의해서 배울 수 있는 지식들이 필요하다.
내년에도 여러 지식들을 탐구하기도 하며,
여러 새로운 것들을 배우고,
다양한 실전 경험들을 겪기를 바라며 올해를 마무리하려고 한다.
'Job' 카테고리의 다른 글
2022년 2분기 주니어 개발자의 회고 (2) | 2022.07.03 |
---|---|
2022년 1분기 주니어 개발자의 회고 (2) | 2022.04.09 |
취업 이후 신입 개발자 취업에 대한 여러가지 생각들 (1) | 2021.12.26 |
신입 백엔드 개발 면접 질문 Template (0) | 2021.10.26 |
내가 개발자가 되기 위해 공부한 것들(BE 2년째 취준생의 공부 현황) (0) | 2021.05.18 |