Easy Understanding

내가 개발자가 되기 위해 공부한 것들(BE 2년째 취준생의 공부 현황) 본문

Job

내가 개발자가 되기 위해 공부한 것들(BE 2년째 취준생의 공부 현황)

appleg1226 2021. 5. 18. 17:08

나는 대학에서 컴퓨터 관련 복수전공을 이수했고, 

파이썬과 머신러닝, 자바와 시작한 백엔드를 거쳐 지금까지 지내왔다.

 

대학교에서 2년, 머신러닝 공부에 1년, 백엔드 공부에 1년 동안 어떤 것을 배웠는지,

지금 어느 정도까지 왔는지 정리해보려고 한다.

 


1. 대학

대학교에서는 전공하면서 CS의 기초를 배웠다.

누구나 처음에 배우는 C, Java, 알고리즘, 운영체제, 자료구조, 데이터베이스를 배웠다.

중간중간 알고리즘 스터디를 하기도 했다.

 

이 전공 과정은 실무 개발자로 나아가기 위한 어떤 지식/경험도 제공하지 않았기 때문에,

심지어 백엔드, 프론트엔드가 뭔지도 몰랐고, 스프링이라는 것도 당연히 몰랐다.

그냥 알고리즘만 잘해도 취업이 되는 줄 알았던 시기.

 

나에게 이쪽 세계를 입문시켜 주었지만, 사실상 이 중에서 제일 배운 것이 적은 시기기도 하다.

 


2. 머신러닝(컴퓨터비전)

데이터사이언티스트 양성 국비 과정을 들었지만, 말도 안되는 과정이라는 것을 깨닫고 중도 하차,

그리고 대학원 진학을 위해 딥러닝을 공부하던 중, 컴퓨터 비전 관련 연구실에서 일을 하게 되었다.

 

Andrew 교수의 머신러닝/딥러닝 수업을 듣고, 스탠퍼드의 유명한 강좌인 CS231n 을 수강했다.

연구실에서는 주로 파이썬을 이용해서 데이터를 다루고, darknet 같은 프레임워크와 YOLO 네트워크를 이용하여 프로젝트를 진행했다.

 

그러나 업무 스트레스로 중도 하차.

 


3. 백엔드

나는 놀랍게도 이때가 되어서야 백엔드가 무엇이고, 스프링이 무엇인지의 존재를 깨달았다.

가장 먼저 우리나라의 거의 표준이라고 할 수 있는 스프링부터 시작했다.

 

이후로 2회의 인턴, 각종 개인 프로젝트, 공부들을 통해서 1년 동안 실력이 많이 늘게 되었다.

대충 개발 테크트리를 목록으로 정리해보면 다음과 같다. 

 

1) 파이썬/자바/노드 중에서 어떤 것이 유망한지 비교하여, 최종적으로 자바 테크트리를 선택. 정말 옳은 선택이었다.

 

2) 처음에는 '구멍가게 코딩단'의 책을 사서 스프링 프레임워크 예제를 따라하던 것으로 시작하였다. 이때만 해도 XML 파일로 스프링 설정을 진행했었다.

 

3) 스프링부트의 존재에 대해서 알게되고 스프링부트 본격 도입. 그리고 관련 예제 프로젝트들을 진행했다. 간단한 CRUD 게시판 만드는 예제였을 것이다.

 

4) Mybatis -> JPA로 기술 스펙 전환. '자바 ORM 표준 JPA 프로그래밍' 이 책을 열심히 읽었다.(물론 이 당시엔 100% 이해가 안 되긴 했다. 최근에 읽었을 땐 이해도가 많이 늘었다)

 

5) React, Vue, Django, Node.js 같은 다양한 기술들에 관심이 많아서 입문 정도 수준의 공부를 했다. 지금 생각해보면 정말 뭐 그냥 체험 정도였던 것 같다. 

 

6) 여름방학 인턴을 통해서 하나의 완전한 어플리케이션 개발. 이 당시에 새로 도입하고 배운 기술이 정말 다양하다. 클라우드 서비스(AWS, NCP 같은), 비동기 처리, Redis, ELK Stack, Kafka를 공부하고 도입했다. 이 시기에 어플리케이션의 설계에 대한 감을 잡음은 물론, 개발 전반에 대해서 거의 눈이 뜨이는 계기가 되었다.

 

7) 개발 지식에 관성이 붙어서 정말 다양한 것들을 공부하고 실습했다. Kafka, RabbitMQ, MongoDB, Docker, Kubernetes, JWT, Kotlin, Spring Security, Cloud, Webflux 등 유명한 기술이지만 내가 궁금한 모든 것들을 공부했다.

 

8) 연말에는 각 IT 기업에서 개발자 컨퍼런스가 열리는데, 코로나로 인해 온라인에 영상이 올라와서 거의 모든 컨퍼런스 영상들을 다 들었다. 확실히 인턴 이전에 알던 지식에서 발전했다는 것을 느낀 것이, 대부분의 영상 내용이 이해될 정도의 실력이 되었다는 점이다. 드디어 이쪽 생태계에 대해서 감 정도는 잡은 것 같은 기분이었다.

 

9) 겨울에는 인턴을 통해서 평소에 경험하고 싶었던 모니터링 시스템을 개발했다. ElasticSearch을 제대로 사용해보는 기회가 되었으며, Vue.js를 이용해서 제대로 된 웹 페이지를 만드는 경험도 했다. 특히 서버에 이전에 공부했던 Kotlin과 Spring Webflux를 성공적으로 도입했다. 최신 기술이라 레퍼런스가 적어서 힘들었지만 어찌저찌 완성은 했다.

 

10) Typescript Nest.js 어플리케이션까지 만들어보면서 Node.js에도 얼쩡거리는 중이다. 또 Golang을 사용해서 간단한 API 서버도 만들어봤다. 물론 거의 찍먹 수준의 공부지만 확실히 이전에 비해서 전반적인 언어에 대한 숙련도가 늘은 것 같다. 아마도 자바라는 한 언어에 대한 이해도가 높아지고, Kotlin을 도입하면서 느낀 점들이 실력에 반영이 된 것 같다.

 


이렇게 나열해본 것은 여러 이유가 있지만,

나 자신이 어느 정도 왔는지를 정확하게 파악하고자 하는 목적이 첫 번째였다.

나를 제대로 알면 이후에 어떤 방향으로 나가야하는지 보이니까 말이다. 

 

또한 백엔드 공부에는 이런 테크트리도 있다는 것을 보여주고 싶었다.

다양한 방법들이 있겠지만, 나는 이런 방법으로 지금까지 왔다는 것을 보여주려고 글을 썼다.

 

그러나 나도 아직 취준생이라는 것이 문제다...

취업을 위해서라면 어떤 것을 더 해야할지에 대해선 계속 고민 중이다.