본문 바로가기

Reports/Monthly

2020년 1월 생각정리

 

혼자 세운 계획에 따라 개발 공부를 하게 되면 장단점이 뚜렷한 것 같다. 원하는 분야를 선택하여 자유롭게 공부할 수 있기 때문에 좋은 집중력으로 지식을 획득 할 수 있다는 큰 장점이다. 하지만 해당 분야의 현장에 대한 정보, 정말 실용적인 지식 등의 배경지식이 없다면 종종 내가 세운 계획이 정말 올바른 계획인지 혼란스러울 때가 많다. 이 혼란 자체도 개발을 배우는 과정 중의 하나로 생각하며 즐거운 마음으로 해결해나가려 한다! 그렇기 위해 주기적으로 ①내가 할 수 있는 일, ② 내가 하고 싶은 일, ③ 내가 해야하는 일을 정리할 필요를 느꼈다.

 

<Ⅰ. 현재 시점에서 할 수 있는 일>

 

  • Java Back-end : Spring과 MyBatis를 활용해 MVC모델로 간단한 CRUD 기능이 있는 웹페이지 구현 가능
    • Framework : Spring 3.xx
    • ORM : MyBatis 3.xx
    • DBMS : Oracle 10g xe

  • DataBase :
    • SQL : SQLD 응시했다가 낙방 ㅠ

  • Front-end :
    • HTML / CSS : 기본적인 레이아웃
    • JavaScript : 간단한 게시판 기능의 웹페이지를 구성할 수 있는 정도
    • JQuery : Ajax기능 구현을 위한 간단한 JQuery

  • Python Back-end : Django로 CRUD 기능 구현을 위한 기본 개념을 숙지한 상태
    • Framework : Django 2.xx

  • Python Data Analysis :
    • Numpy : 선형대수학을 몰라서 겉핥기 수준의 활용
    • Pandas : 시중 파이썬 데이터 분석 기초 도서에 나오는 예제를 이해하는데 큰 무리가 없는 정도
    • Visualization : 많은 연습이 필요

약 5개월 동안 학원을 다니며 거의 매주 새로운 언어와 개념을 접하며 멘붕에 빠지던 시간들이 주마등처럼 스쳐간다... 당시에는 '이것만 알면 Spring을 정복할 수 있는 것인가!' 라는 생각으로 이를 꽉 물고 이해하려 노력했다. 지금와서 돌아보면 정말 기본 중에 기본만을 배운 것이더라 ㅋ... 조금 허탈한 감은 없지않아 있다. 하지만 처음 써보는 프로그래밍 머리가 과부하로 강제종료될 것 같은 순간들을 잘 버텼기 때문에 지금 알고리즘을 공부할 기초 두뇌체력이 생기지 않았나 싶다.

 


<Ⅱ. 장기적 관점에서 하고 싶은 일>

 

2월 말이면 학원을 수료한다. 이제 약 50일 정도 밖에 남지 않았다. 학원이 끝나면 바로 취업할 계획이었기 때문에 새해가 밝으면서 본격적으로 백엔드개발자/ 데이터 분석에 대한 구직정보를 알아보기 시작했다. 그렇게 또다시 혼란이 시작되었다..! 학원에서 공부하며 백엔드 개발과 데이터 분석은 성격이 많이 다르다는 것은 진작에 깨달았다. 그리고 백엔드 개발과 데이터 분석의 분야에서도 각각 전문화의 가지가 사방으로 뻗어나간다는 것도 공부를 하면서 크게 느끼고 있다. 나도 생각을 가다듬어 전문화의 길을 선택하고 준비해야할 필요성을 느꼈다.

나는 내가 하고 싶은 일을 할 때에 쭉쭉 올라가는 생산력과 집중력에 경험적 신뢰가 있다. 하지만 현실의 조건들을 생각하다보면 내가 세운 목표를 잊고 방향이 흔들릴 때가 많다. 이렇게나 자주 혼란이 오다니..! 천 번은 흔들려야 어른이 된다는데 이러다 진짜 금방 어른이 되겠다. 각설하고 사실상 이 글의 목적이었던 내가 하고 싶은 일에 대한 문서화를 해본다.

내가 궁극적으로 하고 싶은 일은 추천 시스템/ 알고리즘 구현이다(스스로 좀 그만 까먹었으면 좋겠다). 나는 이 시스템과 알고리즘이 현재는 물론 미래까지 사회를 굵직하게 좌지우지할 힘이라 믿고 이것에 대한 지식과 전문성을 키우고 싶다(확신에 가득 찬 표정). 이 목표에 가까이 가기 위해 내가 해야 할 공부할 것을 개인적인 생각으로 정리한 것은 아래와 같다.

 

  • Python :
    • 나는 파이썬의 간결함과 넓은 사용범위에 완전히 반했다. 앞으로도 파이썬을 메인 프로그래밍 언어로 삼고 많은 공부들을 하고 싶다.

  • Algorithm :
    • 데이터 구조와 알고리즘은 당장 취업해야 하는 비전공자의 입장에서는 건드리기 힘든 영역이다. 하지만 장기적으로 성장하고 싶은 개발자라면 당연히 배워두어야 할 분야라 생각한다. 글을 쓰는 시점 이전에 기본 정렬 알고리즘 문제를 혼자서 몇 개 풀어보았는데 다행히도 재미있었다!(여전히 실력과 재미와의 상관관계는 없다)


  • Data Analysis :
    • 개발의 길을 선택한 가장 큰 이유지만, 현실적인 지금 당장 취업을 염두에 두면 아직 기본기가 너무나 부족하여 막막할 때가 많다. 우선 차근차근 하나씩 공부해 나가며 길이 보이길 기다리고 있다.


    • 사회/기술통계 :
      • 기본적인 전문 통계 지식없이 데이터 분석을 한다는 것은 어불성설이라 생각한다. 내가 아는 통계지식은 고등학교 다뤘던 수1의 내용이 전부라 이를 보완할 필요가 있다. 공부 방법으로는 사회조사분석사 2급 자격증 필기시험을 준비해가며 통계지식을 체계적으로 정리하려 한다.

    • 선형대수학 :
      • 데이터 분석은 행렬의 대환장 파티같다. 이 행렬을 심도있게 다루는 선형대수학의 존재를 최근에야 알게 되었다. 내 수준에 맞는 데이터 분석의 예제를 다루기에는 필수는 아니지만, 우선순위를 조금 뒤로 미뤄두되 2021년 내로 꼭 기초적인 내용을 배워 Python의 Numpy 라이브러리를 깊게 이해하고 다루고 싶다.


  • Back-end : Django vs Flask
    • 나는 언젠가 꼭 나만의 데이터 분석 서비스를 배포하고 싶다. 플랫폼은 웹이 적당할 것같다. 학원에서 배운 웹 개발이 재미있었고 이에 따라 웹 개발의 실력을 더 키우고 싶은 욕심이 있기 때문이다. Python을 메인 프로그래밍 언어로 다루고자 마음 먹었기 때문에 백엔드 프레임워크로는 Django와 Flask 중 하나를 선택해 전문적으로 다뤄야 할 것이다. 두 가지 다 자유자재로 다룰 수 있으면 좋겠지만 일단 지금으로써는 선택과 집중을 해야하니..! Flask는 Spring과 유사한 부분이 있어 학원에서 아주 간략하게 다루었고, Django는 개인적으로 관심이 있어 따로 공부해 둔 상태다. 사실 여기가 취업과 관련하여 고민이 가장 많은 부분이다. 

 

문제는 이 많은 공부량을 어느 세월에 다 통달할 것이며, 그사이 소는 누가 키울 것이냐는 것이다. 솔직한 현실을 반영하여 내가 만약 어느 기업의 인사담당자라면 '국비지원교육 6개월 과정을 수료한 인문계열 학사 출신 개발 비전공자'를 의미있는 데이터를 분석하는 분야에 채용하지 않을 것 같다. 이런 상황에서 백엔드 개발에 대한 실력에 집중하는 것이 현명한 선택인지도 모른다. 생계를 유지해야 하는 방법과 궁극적으로 하고 싶은 일에 대한 간극과 그 간극을 빨리 좁히거나 둘 중 하나를 선택해야 한다는 압박감 때문에 또다시 조급함이 생기고 있었다. 

이런 1월의 조급함을 진정시킨 나의 계획은 '시간을 더 갖고 두 분야의 기초를 공부해보자' 였다. 아직 학원수업도 마무리 되지 않은 상황인데 고민만 너무 많이 하고 있었다. 부모님에게는 또 죄송해졌지만... 학원 수료와 동시에 취업하지 않아도 되니 더 하고 싶은 공부를 해도 괜찮다고 스스로 진정시켰다. 글로 적고 나면 굉장히 싱거운 해결책인데 이 결론을 내릴때까지 뭐가 그렇게 어렵고 힘들었는지 참... 그래도 글로 정리하니 생각들이 조금 더 탄탄해진 기분이 든다.

 


<Ⅲ. 1월의 해야 하는 일>

 

그렇다 아직 학원의 수업과 과제는 진행 중이다. 위의 고민들이 사실 시간사치로 만큼 당장 해야하는 육중한 일들이 여러 있다...

  • Java Spring Team Project :
    • 학원의 마지막 과제로 자바 스프링으로 웹을 구현하는 팀 프로젝트가 남아 있었다. 이 팀 프로젝트는 커리큘럼 중 가장 기대하고 기다리던 과정이었다. 나는 팀으로 서로 협력해 난관을 헤쳐가면서 결국에 이뤄낸 결과물에서 얻는 성취감을 굉장히 좋아한다. 하지만 나는 코로나가 만들어낸 거리두기 상황에서 프로젝트를 진행할 방법을 찾지 못했다.

      개인적으로 대학교의 과제든 사회에서의 프로젝트든 화상회의를 통해 좋은 결과를 이끌어 내본 경험이 없다. 서로에 대한 정보가 부족한 상황이나 목표가 다른 경우에는 더더욱 일을 진행하기가 힘들었다. 이번 학원의 프로젝트의 팀 구성은 원격강의가 시작된 직후 강사님이 자리배정에 따라 임의로 정해주셨다. 때문에 팀원들 간의 대화를 직접 나눌 수 있는 기회가 없었다. 서로 데면데면한 상태에서 진행되는 온라인 미팅은 너무 비효율적이라 느껴졌고, 코로나 확진자가 지속적으로 증가하는 마당에 이 답답함을 해결하기 위해 따로 모일 수 있는 상황도 아니었다. 다음주면 괜찮아지겠지라 생각했지만 다음주는 다음달이되고 새해까지 밝아버렸다. 더이상 상황을 낙관적으로 보기가 어려웠다. 일에 진척은 없이 그저 흘러가는 시간과 과제를 제대로 시작하지 못하고 있는 상황에 스트레스를 받았다. 그래서 어리석은 판단인 것을 알면서도 결국 혼자서라도 간단히 진행하는 것으로 결정내렸다. 이것이 내 시간과 조급함을 조금이라도 진정시킬 수 있는 방향이라 생각했다.

    • Python에 점점 재미를 붙여가면서 Java와는 빨리 이별을 하고 싶었다. 그래서 가장 신속하게 학원이 원하는 기준에만 맞춘 과제를 제출하며 그동안 배웠던 것을 한 번 복기하는 방향으로 프로젝트 방향을 잡기로 했다. 복기하는 방법으로는 클론코딩이 가장 효율적이라 생각했다. 여타 학원들의 수강생들의 소스코드를 구하려다 그냥 조금 더 정리가 잘 되어있을 책을 하나 고르기로 한다. 해당 책에 기재되어 있는 프로젝트의 소스를 클론코딩하며 문서화하는 방향으로 학원과제를 마무리하려 한다. 부디 현명한 선택이었기를..!

  • 학원 R 수업 문서화 :
    • 학원은 현재 R에 대한 진도를 나가고 있다. 이왕 가르쳐주시는 거 배워서 독이 될 것은 없을 것 같으니 이 내용들도 블로그에 문서화하면 좋지 않을까 싶다.


  • 데이터 분석 vs 백엔드 :
    • 남은 시간에 무엇에 더 중점을 두고 공부할 지는 아직 결론을 내리지 못했다. 다행히도(?) 더 시급히 끝내야하는 스프링 과제 때문에 조금 더 시간을 두고 구직시장 현실을 고려하며 고민해보려 한다.