ecsimsw

2020.03.03 / 울타리 위에 있다. 본문

2020.03.03 / 울타리 위에 있다.

JinHwan Kim 2020. 3. 3. 10:13

백엔드 개발자를 꿈꾸는 학생 개발자에게

 

우연히 네이버 D2의 정상혁님이 쓰신 진로 칼럼 '백엔드 개발자를 꿈꾸는 학생 개발자에게' 을 읽게 되었다. 백엔드 개발자의 일, 전망, 필요한 지식, 네이버는 어떤 백엔드 개발자를 원하는지까지, 개발자를 꿈꾸는 학생들이 고민할 것들을 답 해두셨다.

 

백엔드 개발자, 시스템 엔지니어, 머신러닝 엔지니어,,, 아직 뭘 해야할지, 어떤 개발자가 되야할지 모르고 고민하고 있던 중에, 이 칼럼을 읽고, 개발 공부 방향에 느낀게 많아 생각을 정리할겸, 글쓰는 연습도 해볼겸 처음으로 블로그에 내 생각에 대한 글을 쓰게 되었다.

 

울타리 위에 있다! 

( 갈팡질팡하는 모습을 영어로 On the fence라고 표현한다고 한다. 표현이 재밌어 써보고 싶었다.)

 

C언어를 대학교 1학년 때 배우고, 주구장창 아두이노만 만들었다. 학교 실험 과목에서도 아두이노로 라인트레이서, 설계 수업 때는 아두이노로 스마트홈 만들기. 2학년 중반, 아두이노에 질려 처음 내가 직접 해보고 싶어 공부한건 게임 개발이었다. c#을 공부하고, 객체지향을 공부하고, 스터디에서 한주에 한번 발표하고, 그러면서 처음 코딩에 빠진거 같다. 내 인생에서 가장 재밌었던 책을 뽑으라고 하면, 해리포터 시리즈와 '뇌를 자극하는 c#' 중에 고민할 것이다. c#을 공부하면서 유니티로 귀여운 총 게임을 만들었더니 통신이 안되면 재미가 없길래 소켓 프로그래밍을 공부하게 되었다.

(돌고 돌아, 결국 nodeJS로 서버를 만들고 통신이 가능해졌는데 게임은 여전히 재미 없었다. )

 

소켓 프로그래밍을 하다보니 이번엔 채팅앱을 만들고 싶어졌다. 만들어둔 소켓 서버에 winform으로 클라이언트만 만들었다. 서버는 데이터만 기다리다가 데이터를 받음 뿌리고, 클라이언트는 메인 스레드로 데이터를 표시하고, 부 스레드로 데이터를 하염없이 기다리는 그 간단한 로직이 그땐 뭐가 그렇게 복잡하고 어려웠던지,,, 특히 스레드를 처음 공부하고 사용했을 때는 정말 신기해서 가장 기억에 남는다. 이후 네트워크 공부, 홍콩 시립대학 어학 연수, 시스템 프로그래밍 등으로 2학년을 마치고 군휴학을 하였다.

 

군 휴학 후 가장 먼저 하고 싶었던건 윈폼 벗어나기였다. 윈폼은 깔끔했지만, 더 익숙한 앱을 만들고 싶어졌다. 이를 테면 웹 페이지나, 안드로이드 앱. 그래서 이번에는 nodeJS+express, android Studio 를 차례로 만져보게 된다. 처음에는 HTML, CSS, JS를 배우고 개인 홈페이지를 만드는 것을 시작해서, NodeJS와 Express로 페이지 안에 게시판, 체팅 기능을 만들었다. 그러면서 3학년인 동기 친구들에게 과제를 받아 그대로 풀어보면서 컴퓨터 구조 과목에 빠져, 컴퓨터 구조,  운영체제, 네트워크, 자료구조 같은 과목을 공부하게 된다. 이렇게 2019년 1년을 보냈다.

 

19년 말~ 20년 초 지금은 머신러닝에 빠졌다. 우연히 매트릭스 영상에서 사람을 인식해서 누구인지 표시해주는 프로그램을 보고 재밌겠다! 싶어 바로 빠지게 되었다. 텐서플로우, 사이킷런, 케라스를 사용해보고 유명한 예제들을 실습해보며 머신러닝이 이런거구나를 경험하게 되었다. 그리고 그 머신러닝을 효율적으로 사용하려면 모델과 알고리즘 등의 개념을 알아야한다고 생각해서 공부하고 있다. 이를테면 왜 이진 분류에는 로지스틱 회귀를 사용하며, 가설을 시그모이드 함수로 세우고, 목적 함수를 크로스 엔트로피를 사용하는가, Batch/Epoch가 뭐고, 과적합을 줄이려면 어떻게 해야하는가 등을 아는 것이 중요하다고 생각했다. 

 

이번에는 내가 만든 것들을 서비스해서 다른 사람에게 사용하도록 하고 싶다는 생각을 하고 있다. 스프링부트와 AWS를 이용해서 웹 서비스를 출시하는게 목표다. 이번 프로젝트는 처음으로 다른 사람들을 위해 만드는 서비스가 될 것이다. 

 

근데 또 새로운거?

 

내가 '이거 재밌겠는데?' 싶어서 아두이노, 유니티, nodeJs, 안드로이드 스튜디오, 리눅스 등을 공부한 것들, 지금은 다 까먹었다. 기억이 하나도 안난다. 꾸준히 유니티를 한 것이 아닌 나는 지금은 결국 다 까먹고 이전에 해온 것들을 다시 하라면 다시 관련 Docs와 책을 봐야할 것이다. 조금은 시간이 줄겠지만.

 

이런 생각에 내가 해온 공부가 결국 아무것도 아닌거 같고, 시간이 아까워지고, 현자 타임이 왔다. 무엇을 해야 나한테 남을까에 대해 고민하는 시간만 늘어갔다. 공부 순서나 개발 직군을 찾는 시간만 늘어났다. 그런 와중에 '백엔드 개발자를 꿈꾸는 학생 개발자에게' 칼럼을 보게 되었고, 백엔드 개발을 떠나 내가 어떤 방향으로 공부를 할지 생각을 잡는데 많은 도움을 받았다.

 

내가 정한 남은 대학 생활의 공부 방향은 '빠르게 배워 적응할 수 있는 튼튼한 개발자가 되자'이다. 결국 능력있는 개발자가 되고 싶은게 목표고, 능력있는 개발자는 빠르게 적응하고, 주변과 협업할 수 있는 사람이 아닐까 싶다는 생각을 하게 되었다. 그리고 그러려면 기반이 있어야한다고 생각했다. 그게 언어에 대한 이해 정도 일 수 도 있고, CS를 얼마나 깊게 공부했냐 일 수 도 있고, 좁게는 구글링 실력일 수 도 있을 것 같다. 어떤 프레임워크, 언어를 사용해본 사람보다, 다른 사람과 잘 어울려, 적응하고 학습할 수 있는 사람이 더 유능한 개발자가 아닐까 하는 생각이 들었다.

 

그래서 이제는...

 

일단 지금까지 해온 것이 아무것도 아니라는 생각을 바로 잡으려 한다. 엄청 대단한 것을 한 건 아니지만, 지금까지 해온게 없이 지금의 내가 있다고도 생각하지 않는다. 개발 환경 설정에 삽질해 본 경험, Docs 읽어가며 따라가본 경험, 모르는 걸 검색하는 방법, 블로그에 내 공부를 정리하는 습관 등의 경험을 무의미한 것으로 여기지 않기로 했다.

 

나는 내 것을 만드는 일이 재밌다. 내가 만들고자 하는 것을 위해 공부하는 것에 거부감도 없다. 앞으로도 내가 하고 싶은 것을 만들어가며, 평생 공부하는 개발자가 되려고 한다.

 

단, 앞으로는 git과 테스트코드를 공부하고 활용해서, 다른 사람과 협업하는 방법을 배울 생각이다. 또, 다른 사람들이 필요한 서비스를 고민해볼 생각이다. 해커톤이랑 공모전에 적극적으로 참여해서, 혼자가 아닌 팀으로 남을 위한 서비스를 기획하고 협업하는 경험을 쌓아볼 생각이다.

Comments