본문 바로가기

My Diary

신입 백엔드 개발자가 되기까지의 여정

 안녕하세요. 오랜만에 블로그에 글을 쓰네요. 그 동안 저에게는 굉장히 많은 일들이 있었어요. 3월 부터 게임회사에서 인턴 생활과 학교 생활을 병행하며 지내다 올해 5월이 지난 후에는 N사 인턴 면접, K사 신입 면접을 보게 됐죠. (면접 준비를 하면서도 굉장히 많은 성장을 하게 됐습니다. 기초가 탄탄해진 기분..?ㅎㅎ) 즐기다보니 좋은 결실을 맺게 되어 K사 서버개발자 직무로 돈 버는 개발자가 되었습니다.ㅎㅎ 어찌 됐든 제가 개발자가 되고싶다는 생각을 가진 이후로 어떤 여정을 보내게 되었는지에대해 공유를 하고 싶어 글을 쓰게 됐습니다. 좋지 않은 글 솜씨지만 읽기 편하게 쓰도록 노력하겠습니다. 나름 진지한 글이기에 ㅋㅋ같은 수식어는 생략하겠습니다..ㅎㅎ 글이 무거워지면 조금 루즈해지겠지만 그래도 첫 출근 전에 소프트웨어 엔지니어를 꿈 꾸는 모든 사람들에게 동기부여가 되었으면 하는 바램이기에 이해해주세요.


첫 걸음


 먼저 저는 컴퓨터 전공자가 아닙니다. 그렇다고 비전공자라고 하기에도 살짝 애매하긴하네요. 저는 전자공학쪽에 가까운 학부에서 공부를 하였습니다. 2학년때는 신호처리, 회로 이론, 회로망 해석, 전자회로등등 주로 공학 수학, 미적분을 이용하여 회로 해석을 공부하였습니다. 실제로 회로 설계쪽에 관심도 있었어요. 군복무를 마치고 대학교 2학년을 다니면서 저에게 계속 되물었습니다. 난 엔지니어가 되고싶긴 한데 과연 어떤 분야의 엔지니어가 되고 싶은걸까. 그래서 이것 저것 들쑤시고 다녔습니다. 베릴로그, 아두이노, MFC, 안드로이드 등등 생각해보면 뭐 하나 파고 든적은 없고 살짝 맛만 봤네요. 그러다 생활코딩에서 진행하는 웹 어플리케이션 만들기 라는 프로젝트에 참여하게 되었습니다. 30일간 온라인 강의를 들으며 공부하며 모르는 부분은 댓글을 남겨 피드백을 받았습니다. 어려운 내용은 아니었습니다. (처음엔 어려웠지만..) Node.js와 Mysql을 연동하여 간단하게 이런저런 것들을 만들어 봤었습니다. 후에는 30일동안 강의를 다들은 사람들을 모아 구글 코리아가 있는 건물에서 자유로운 해커톤도 진행하는 행사에 당첨되어 회사 구경도 했었습니다. 이것을 통해 웹이라는 세계를 경험 하였고 저의 방향을 찾은 계기가 되었습니다.


Mash-up Crew


 책을 보며 프로젝트라 할 수는 없는 간단한 기능들을 만들어가며 공부를 하다 앱 개발 동아리인 Mash-up이라는 동아리에 들어가게 되었습니다. 디자인팀, 클라이언트팀, 백엔드팀으로 나누어 함께 프로젝트를 진행하며 스스로를 성장시키는 동아리입니다. 현재도 열심히 참여하고 있습니다. 아무것도 모르던 저에게 프로젝트는 어떻게 진행이되고 어떤 기술들이 사용되는지 구경하게 되었습니다. 저에게는 애정이가는 동아리 일 수 밖에.. 여기서 좋은 멘토 형님들도 만나게 되었습니다.


서버개발캠프 & 지수 함수 성장


 Mash-up이라는 동아리에서 경험한 것들을 바탕으로 S 게임회사에서 진행하는 서버개발캠프 3기로 참가하게 되었습니다. 8주 동안 현업에서 사용하는 이런 저런 기술들을 경험하고 프로젝트를 진행하면서 굉장한 시야를 갖게 된 계기가 되었습니다. 캠프 이후에는 운이 좋게 인턴이라는 기회까지 얻게 되었습니다. 이 3개월 이라는 인턴기간동안 스프링에 대한 이해와 자바(OOP)에대한 이해를 폭발적으로 받아들이게 되었습니다. 물론 쉽지만은 않았습니다. 학교생활과 병행하다 보니 하루에 5시간이상 잔 적이 없었네요. 하지만 그만큼 성장하게 된 것같습니다. 시간과 노력은 저를 속이지 않더군요.


학교 수업 & 기초


 제가 웹 백엔드 개발자가 되겠다고 마음먹은 이후 백엔드 개발자 로드맵등을 찾아보며 어떤 수업들을 들으면 좋을지 찾아보고 수업을 수강하였습니다. 제가 속한 학부에는 없는 과목들은 컴퓨터 학부 수업을 찾아 들으며 부족한 것들을 채워나갔습니다. 데이터베이스 수업을 들어보겠다고 아침 6시부터 학교에서 수강신청이 잘된다는 컴퓨터실 앞에서 10시까지 기다렸다가 수강신청을 성공한 기억도 새록새록 나네요. 뭔가 저에게는 그만큼 재밌었고 제 꿈이 절실했던 것 같습니다. 지금도 노트북 앞에 앉으면 가슴 벅찰 때가 있습니다. 이외에도 운영체제, 시스템프로그래밍, 네트워크, 자료구조, 알고리즘, 웹 프로그래밍 및 설계(서블릿 프로그래밍, JDBC프로그래밍등을 공부하는 과목이더군요.), 고급프로그래밍(OOP를 C++을 배웠습니다.), 컴퓨터 구조, 디지털 공학등등을 공부했습니다. 제가 이렇게 나열한 이유는 사실 요즘 후배들 또는 또래 개발자들을 보면 생각보다 기초가 탄탄한 친구들이 별로 없었습니다. 다들 눈에 보여지는 기술들, 들으면 있어 보이는 신기술(블록체인, 머신러닝등)들을 쫓아가더군요. 자바로 개발을 한다는데 JVM이 메모리에 어떻게 올라가는지 모르는 친구들이 많았고, 스프링을 통해 WAS를 개발하는데 스프링 부트가 모든 설정을 다해주다보니 스프링 컨테이너에 대해 고민하는 친구들이 드물었습니다. 사실 요즘 Node.js나 파이썬 장고, 플라스크 같은 생산성이 좋은 프레임워크들이 많다보니 컴파일언어를 이용하는 친구들도 별로 없는 것 같습니다.(자바도 사실 자바 바이트코드를 해석하는 인터프리터 언어지만 JIT옵티마이저가 있으니..ㅎ)


가치관


 제가 메이저 회사에 들어가고 싶었던 이유는 높은 연봉과 좋은 복지 시스템 때문이 아닙니다. 물론 순위안에 없었다면 거짓말이지만 1순위는 아니었습니다. 서버 개발자에게 서비스의 환경은(단위 시간당 api 호출 횟수등등) 무시하지 못 할 요소인 부분도 있고, 사용자들이 많이 사용하는 서비스의 질을 높이고 싶은 마음도 컸습니다. 또한, 자유로운 비판을 받아들일 수 있는 개발자가 되고 싶었고 그럴려면 그러한 환경에 놓여져야 한다고 생각했습니다. 저의 첫 직장은 그러한 환경이기에 기분 좋게 첫 출발을 하려합니다.


전달


 글의 서두가 없어서 제가 읽기에도 약간은 혼란스럽네요. 저의 여정을 통해 개발자가 되고 싶은 모든이들에게 전달해 드리고 싶은 말이 있습니다. 물론 저의 주관적 가치가 굉장히 많이 함양되어있기에 정답은 아닙니다.


1. 취업을 위한 스펙


 취업을 위해서 토익, 토스, 자격증을 따지마세요. (물론 공기업을 가실 분에게는 해당되지 않은 의견입니다.) 영어 중요합니다. 저도 요즘 영어의 중요성을 깨달았기에 공부하려합니다. 그런데 개발자가 되려는데 토익 점수를 따기 위한 영어 공부, 토스의 문제 유형들이과연 도움이 될까요?? 정보처리기사.. 이건 모르겠습니다. 정보처리기사 시험에 어떤 내용들이 나오는지 본 적이 없어서.. 어찌 됐든 모든지 본인에게 필요 한 것을 공부했으면 합니다. 보여주기용 스펙은 IT회사에서 딱히 먹히지 않는 것 같습니다. (IT회사입니다. 다른 분야는 잘 모릅니다.) 자신의 일자리마저 입시를 준비하던 고등학생처럼 학원을 다니고, 소중한 시간을 전문성을 기르는데 투자하지 못하는 현 사회가 불만 일 뿐입니다.


2. 겸손한 개발자


 절대 자신의 실력에 자만하지 말아주세요. 간혹 자신이 많은 노력과 시간을 들여 공부를 했고 기준 이상의 실력을 갖추게 되었다고 하더라도 다른 사람들의 말에 귀기울여주세요. 생각보다 당신의 기술력에 미치지는 못하더라도 당신보다 좋은 안목을 가진 사람들은 많습니다. 그리고 또 한 가지 개발자 혼자 할 수 있는 일은 절대 없습니다. 개발자는 위대한 사람이 아닙니다. 간혹 기획자나 디자이너분들을 아래로 보는 개발자들이 있더군요.. 정말 협업하기 싫은 유형의 개발자입니다. 기획자와 디자이너분들이 있기에 더 좋은 소프트웨어 제품들을 만들 수 있는 것입니다. 자신의 일에대한 자부심과 자만심은 다른 것임을 알아주세요.


3. 스스로의 끊임없는 성장


 소프트웨어 엔지니어는 의대생들보다 공부를 많이 한다는 말을 우스갯소리로 나누곤 합니다. 위에서도 말했듯이 새로운 기술들과 패러다임이 쏟아져 나오고 있습니다. 새로운 분야 혹은 기술들을 학습하는데 있어서 두려워 하거나 게을리 하지 마세요. 그리고 누군가가 적용해보고 가르쳐 주겠지라는 생각을 버리세요. 요즘 메이저 IT회사들을 보면 예전에 하던 신입 교육을 더 이상 진행하지 않고 있습니다. N사에서는 더 이상 신입공채를 진행하지 않고 있지요. 대학교 다니는 친구들을 보면 간혹 아니 자주 이런 말들을 합니다. "학교에서 가르쳐주는게 없어" 학교의 뒤떨어진 기술력도 문제긴 하지만 고등학생때의 습관을 버리지 못하는 우리의 문제이기도 합니다. 누군가가 다 떠먹여줄거라는 생각은 더 이상은 안됩니다. "스스로"라는 수식어는 굉장히 중요합니다. 생각보다 새로운 기술이나 프레임워크에 대한 문서나 좋은 책들은 아주 많습니다. 다만 우리는 그것을 누군가에게 배우려는 마음이 큰게 문제이지요. C언어, 객체지향 프로그래밍, 자료구조, 네트워크, 알고리즘, 운영체제, 데이터베이스 수업정도만 들었다면 그 이후는 교수님이나 학원에 의지하지 마세요. 


4. 실패를 즐겨라


 실패로 좌절하지마세요. 실패 하기 전과 실패 한 후의 저는 상상이상으로 성장해 있었습니다. 다만 그 실패를 무시하지 않으면 됩니다. 자주 곱씹어보세요. 실패의 이유를.


4. 공채가 다가 아니다


 마지막으로 말 그대로 신입 공채가 전부는 아닙니다. 많은 친구들이 모든 기업에 신입 공채만을 준비합니다. 경력직으로 채용 공고가 나와도 지원해보세요. 서류 내는데 대학입시때 처럼 6만원 씩 내는 거 아니잖습니까. 본인이 개발에 자신감이 있다면 자신의 분야에 수시채용으로 지원하세요. 물론 자소서와 포트폴리오는 상시 업데이트가 되어있어야겠죠??


 당연한 소리들만 나열한 것일 수 있겠지만 생각외로 많은 학생 개발자들은 스스로 나는 어떤 개발자가 되길 원하는가? 이 질문을 자신에게 던지는 친구들이 별로 없는 것 같습니다. 항상 고민해보세요. 저는 사우나 갈 때마다 탕에 들어가서 고뇌합니다. 나는 누구인가? 나는 무엇을 원하고 어떤 가치관을 가지고 있고, 어떤 방향성을 가지고 있는가. 자신을 잘 모르는데 자신을 회사에 당당히 소개할 수 있을까요? 뭔가 글을 쓰다보니 꼰대가 돼버린거 같네요.. 고작 신입 개발자가.. 사실 저도 확실한 가치관을 가지지 못했습니다. 다만 많은 생각을 지금 이 글을 쓰는 순간에도 하고 있고, 배우려고 노력하고 있습니다.


긴 글이 되어버렸네요. 저는 개발을 좋아합니다. 자만심이 아닌 자부심을 가지고 있고, 꿈을 가지게되니 사람도 바뀌더군요. 여러모로 저를 변화시킨 것은 개발자라는 꿈을 가지게 된 순간입니다. 앞으로 더 좋은 글들을 준비하겠습니다. 저의 주관적인 생각들이 많이 녹아져 있으니 필터링해서 읽어주셨으면 합니다. 꿈을 이루기위한 과정이 순탄치만은 않았고, 가끔은 현타도 왔습니다. 이상 학생 개발자의 회고록이었습니다. 이후에는 주니어 개발자로서 열심히 배워나가고 성장해 나가겠습니다.


아래의 링크는 제게 많은 생각들을 하게 해준 좋은 글입니다. 한번 읽어보세요.

https://muchtrans.com/translations/10xdeveloper.ko.html

  • 지나가는오징어 2018.09.09 21:19 신고 댓글주소 수정/삭제 댓글쓰기

    좋은글 잘읽었습니다. 다만 링크가 조금 잘못걸린것같아요
    https://muchtrans.com/translations/10xdeveloper.ko.html
    이걸루 걸으셔야할것같아요!

  • 오징어 뒤에 오징어 2018.10.14 18:19 신고 댓글주소 수정/삭제 댓글쓰기

    안녕하세요. 좋은 글 잘 읽었습니다. 저도 백 엔드 개발자를 목표로 하며 학원도 다니면서 나름 열심히 독학도 하고 있는 학생입니다.
    다만 비전공자이다보니 프로그래밍의 전체적인 숲을 보는 능력이 떨어지는 것 같습니다. 현재 물류업계 IT계열로 취업 준비하고 있는데요.
    이 쪽 분야에서 일하고 싶기 때문에 설정한 방향성입니다. 다만 그 전에 공통적으로 공부해야 하는 부분이 어떤 것이 있을지가 참 궁금합니다.
    현재 JAVA, JSP, Servlet, CSS, HTML,IoT를 공부했는데 물론 백엔드 개발자도 프론트 엔드의 기술을 읽혀야 한다는 생각은 하고 있지만, 주력으로
    백엔드 기술을 익히고 싶습니다. 혹시 더 공부 할 사항이나 책 추천해주시면 정말 감사하겠습니다. 이렇게 긴 글 읽어봐주셔서 감사합니다. 좋은 하루
    되시고, 각자의 영역에서 IT기술로 좋은 사회 만들어 갔으면 좋겠습니다.

  • 비밀댓글입니다