메모

2020년에 마신 커피들

voider 2020. 12. 31. 15:08

 12월 31일이다.

출처 경향신문

  지구 종말 영화의 포스터 같은 풍경이 뉴노멀이라는 괴상한 말과 함께 일상으로 쳐들어왔다.

마스크를 끼지 않은 인간을 째려보기 시작했다. 마스크를 쓰지 않는 것은 범죄가 되었으며 거기에 저항하는 인간들은 뉴스에 나온다. 마스크가 처음엔 답답해 죽을 것 같더니 이제는 그럭저럭 쓰고 다닐만 하다. 나도 이제 뉴노멀에 적응한 뉴제너레이션의 일원이 된 걸까? 올해 가장 끔찍한 일은 역시 만원 지하철에서 사레들린 일이다. 기침할 수도, 하지 않을 수도 없는 상황이었다. 덕분에 침을 매우 조심해서 삼키는 인간이 되었다.

 농담은 그만하고.

국비 학원

 작년 이맘 때는 생활코딩에 푹 빠져있었다. 기억에 남는 문단을 공유하고 싶다.

"웹페이지를 예쁘게 하기 위해서 HTML을 사용하지 않고 웹페이지 전체를 이미지로 만든다면 시각 장애가 있는 분들에게는 암흑과도 같은 상태가 됩니다. 자신도 모르는 사이에 누군가를 소외시키고 있는 것입니다. 반대로, HTML을 의미론적으로 잘 사용한다면 자신도 모르는 사이에 누군가에게 정말 큰 도움을 주고 있는 것입니다. 이렇게 HTML은 비즈니스적인 측면에서도 중요하지만, 휴머니즘적인 측면에서도 중요한 기술입니다." 

   따라하면 결과가 나오는 수준이었지만 재밌었다. 아주 유치한 수준의 재미를 느낄 수 있느냐. 그게 내 기준의 재능이다. 몇 주 안 되어서 이걸 배워야겠다는 결론을 내렸다. 나한테 재능이 있다고 믿었기 때문에 큰 고민은 없었다. 그 믿음은 다음 주나 다음 달이나 언제든 변할지도 모르지만 아직은 여전하다. 내가 재능이 있다는 믿음이 허세든 아니든 그런 건 중요하지 않다. 중요한 것은 내가 그렇게 믿는다는 사실이었다. 내가 좋아하는 서문이 있다.

여기는 구경거리의 세계
처음부터 끝까지 모두 다 꾸며낸 것

하지만 네가 나를 믿어준다면
모두 다 진짜가 될 거야

 어쨌든 그렇게 결론을 내리고 바로 학원을 알아봤다. 검색을 해보니 국비는 비트-쌍용으로 투톱 체제였다. 둘 중에 좀 더 쿨해보이는 이름을 가진 곳으로 결정했다. 1월부터 코로나 휴강 포함해서 7월 말까지 수강했다.

 처음엔 자바를 배웠다. 반복문까지는 공부를 하고 갔는데도 불구하고 첫 두 달은 강사님이 무슨 말을 하는지 거의 알아듣지 못했다. 학원 문 닫는 시간까지 남아서 공부하고 집가는 전철에서 책 읽고 자기 전까지 책 읽고 주말에 공부하고 했다. 두 달 쯤 지나니까 대충 감이 잡혀서 수업도 알아들을 수 있었고 다른 사람에게 어느 정도는 설명해줄 수도 있었다. 자바가 끝나고 HTML, CSS, JS, MySQL, Legacy Spring, MyBatis,Spring boot, JPA를 차례로 배웠다. 매우 짧은 시간에 압축해서 배워야 해서 이론보다는 사용법 위주로 교육 받았다. 마이바티즈에서 JPA로의 변환은 정말 신세계였다. 간단한 CRUD 게시판 정도를 만들 수 있을 만큼은 배운 것 같다. 

 마지막 한 달은 파이널 프로젝트였다. 구체적인 것은 말하지 않겠다. 팀을 꾸려서 아이디어 회의를 하고, 요구사항을 분석, 데이터베이스를 설계했다. 그 당시에는 데이터베이스 설계의 중요성을 알지 못했다. 다시 돌아간다면 아이디어보단 DB설계에 좀 더 많은 시간을 쓸 것 같다. Admin서버를 레거시 스프링 + MyBatis로, 프론트 서버를 스프링부트 + JPA 구성했다. 스프링부트의 자동 설정에 익숙해지기 전에 스프링을 먼저 알아야 한다는 게 강사님의 생각이었다. JSOUP라이브러리로 다른 사이트를 크롤링해서 원하는 정보를 추출하는 작업을 했었는데 자바8 스트림 문법으로 리팩토링하면서 이게 내 코드라고? 뽕에 취하기도 했다. 지금 생각하면 우습고 책임 분배도 제대로 하지 않은 코드지만, 그런 우쭐함에서 재미를 느끼고 더 공부하고 싶다는 동력을 얻을 수 있었다. 프로젝트는 애초에 생각했던 기능을 전부 구현하지 못한 채로 프로젝트를 끝낼 수밖에 없었다. 오버 스펙을 잡는 것보다 이건 너무 쉽지 않나? 정도의 스펙으로 출발해서 살을 덧붙여 나가는 편이 좋았을 것 같다. 이 기능 저 기능 있는 것보다 컨셉을 확실하게 보여줄 수 있는 단 하나의 기능을 가진 프로젝트를 진행했으면 어떨까 싶다. 이거 저거 넣고 싶은 마음이 크다보니 오히려 산으로 간 것 같다. 망했다고까지는 할 수 없어서 나름 만족하며 마무리했다.

 학원에서 배운 것을 크게 정리하자면 이렇다.

  • Java
  • HTML, CSS
  • Javascript
  • Servlet/JSP
  • MySQL
  • Spring(boot)
  • MyBatis
  • JPA
  • React

 이중에 스프링부트, JPA, 리액트는 강사님 재량으로 해주신 거라 모든 국비 학원이 수업하는 것은 아니라고 알고 있다.

블로그와 Github

 수료한 후에는 학원에서 배웠던 내용을 차근차근 한 번씩 더 보면서 코딩해보고, 블로그에 포스팅하기 시작했다. 프로젝트 하면서 github과 블로그는 꼭 만들어야겠다고 생각했고 수료하고 바로 실천했다. 공부한 내용 정리해서 블로그에 올리고 github에 커밋하고. 이것 자체가 재밌어서 한두 달 보냈다.

 블로그에 방문자가 늘어나고, 초록색 네모칸이 하나 둘 채워질수록 뭔가 뿌듯하긴 했다. 그러다 문득 내가 뭔가를 하고 있다는 착각에 빠져있는 것은 아닌가, 하는 의구심이 들었다.블로그에 글이 쌓이고 깃헙에 초록색 네모칸이 늘어나는 것처럼 눈에 보이는 결과는 좋은 동력이 되지만 이게 정말 공부일까? 하는 느낌. 솔직히 잘 모르겠다. 블로그에 쓴 모든 글을 내 머릿속에 집어넣은 것도 아니고, 깃헙에 커밋한 코드를 모두 다시 작성할 수 있는 것도 아니다. 이런 질문은 좀 망연자실하지만 그럼 이게 무슨 소용일까? 딱히 더 좋은 방법도 없다는 생각이다. 스터디를 할 수 있으면 좋겠지만 코로나도 그렇고 무언가에 제약되어 반드시 해야 한다는 강박을 가지는 게 싫다. 그래도 코로나가 아니었다면 책을 읽고 각자 발표하는 방식의 스터디를 참여해보고 싶은 마음은 있다.

온라인 강의

  패스트캠퍼스에서 운영체제 강의를 샀는데 정적(?)이어서 잘 듣지 않게 된다. 대신 인프런에서 백기선님이 웹 애플리케이션을 만드는 강의를 큰맘 먹고 하나 사서 열심히 들었다. 기술을 이용하는 것도 이용하는 거지만, 이런 식으로 코딩하는구나, 하는 개발 과정에 대해 배울 수 있어서 좋았다. 단순히 기술에 대한 개념을 설명하는 강의에서는 알 수 없는 것들이어서 좋았다.

새로운 프로젝트

 학원에서 만난 사람들이 프로젝트성 스터디를 하자는 제안을 해줬다. 주마다 만나서 프로젝트를 설계했고 작업에 들어갔다. 하지만 생각처럼 온라인으로 협업하는 게 쉬운 일은 아니었다. 자율적인 스터디다보니 반드시 해야 한다는 강박, 시간에 대한 제약도 없었다. 스프링부트와 JPA, MySQL을 기본 기술로 잡았다. 설계까지 끝마치고 각자 하나의 도메인을 하나씩 맡아서 개발하기로 하고 헤어졌는데 코로나가 급격히 심해졌다. 온라인 스터디로 진행 방식을 바꿨다. 팀으로 하는 일이니까 약속을 지켜야 한다는 조급함에 스프링부트, JPA강의와 책을 읽으면서 공부한 걸로 작업을 진행했다. 배운 것을 프로젝트에 바로바로 적용해볼 수 있어서 재밌었는데 1주, 2주가 지나는 동안 다들 진전이 없었다. 그 중에 한 명이 JPA를 어려워하며 스터디를 나가게 되면서 흐지부지 되어가고 있다는 느낌을 받았다. 멤버들 의지도 시들해진 것 같다. 스터디로 팀 프로젝트를 하면 흐지부지 될 확률이 높다는 글을 이곳 저곳에서 많이 봐 왔는데 그게 내가 될 줄은 몰랐다. 아직은 끝내기로 한 게 아니어서 실패했다고 단정하긴 이르지만 시간을 너무 오래 끈 것은 사실이다. 이 프로젝트에 2-3주라는 긴 시간을 풀타임으로 쏟아가며 유저 도메인을 개발했는데 아쉽다. 물론 이 부분을 다른 프로젝트에 적용해볼 수 있을 것 같고, 또 하면서 공부가 많이 되었으니 큰 후회는 없다.

대학

 방통대(정확히는 방송대) 컴퓨터 과학과에 입학 지원했다. 아무래도 CS학위가 있으면 좋을 것 같고 컴퓨터 과학에 대한 기초를 쌓고 싶다는 생각에 지원하게 됐다. 열심히보단 꾸준히 해서 반드시 졸업하고 싶다.

기술 도서

 난 책 읽는 것보다 구경하고 사 모으는 걸 좋아한다. 관심사가 개발로 바뀐 올해는 책을 많이 사지는 못했다. 평소에 내가 사던 책에 두 배에서 세 배 정도가 기본 가격이었다. 전에는 5-6권 정도 살 돈으로 이제는 3권을 산다. 슬프지만 그럼에도 불구하고 계속 사야 한다고 생각한다. 잘 읽지 않아도 사놓는 편이 잘 읽지 않고 잘 사지도 않는 편보다는 책을 읽게 될 확률이 높기 때문이다. 책을 잘 안 읽는다면 확률을 높이는 게 좋다. 야금야금 모아서 한 권씩 사고 있다. 심심할 때마다 보고 공부할 때 참고할 수 있어서 좋다. 학원을 수료하면서부터 새 책을 읽을 시간이 났기 때문에 많이 읽지는 못했어도 돈이 생기면 한두 권씩 샀던 것 같다. 그렇게 모은 책 목록이다.

  • 리액트를 다루는 기술(김민준)
  • 자바의 정석(남궁성)
  • CODE(찰스 펫졸드)
  • TCP/IP 쉽게 더 쉽게(리브로웍스)
  • 그림으로 배우는 HTTP&Network(우에노 센)
  • 객체지향 사고 프로세스(맷 와이스펠드)
  • 스프링부트 퀵스타트(채규태)
  • 인사이드 자바스크립트(송형주, 고현준)
  • 자바로 배우는 핵심 자료구조와 알고리즘(앨런B. 다우니)
  • 코드로 배우는 스프링 웹 프로젝트(구멍가게 코딩단)
  • 코딩 인터뷰 완전분석Cracking the coding interview 6/E(게일 라크만 맥도웰)
  • 스프링을 입문을 위한 자바 객체지향의 원리와 이해(김종민)
  • Real MariaDB(이성욱)
  • 스프링부트와 AWS로 혼자 구현하는 웹 서비스(이동욱)
  • 자바 ORM 표준 JPA 프로그래밍(김영한)
  • 모던 자바 인 액션(라울-게이브리얼 우르마, 마리오 푸스코, 앨런 마이크로프트)
  • 스프링 인 액션(크레이그 월즈)
  • 객체지향의 사실과 오해(조영호)

 CODE는 반 정도만 읽고 덮었는데 앞부분이 인상적이었다. 원하는 고양이를 선택하는 논리 게이트를 구현하는 부분에서 입이 떡 벌어졌다. 구현의 난이도를 떠나서 이 사람이 이걸 정말로 애정하고 있다는 느낌을 받았다.

 TCP/IP 쉽게 더 쉽게와 그림으로 보는 HTTP&NETWORK 네트워크라는 큰 구조를 조금이나마 이해하는 계기가 되었다. 각각의 계층이 있고 그 계층을 통과해서 클라이언트/서버에 전달하고 전달 받는다는 것. 주고 받는 것은 결국 HTTP Request 혹은 HTTP Response라는 것. 쉽게 설명된 책들이었지만 그럼에도 불구하고 이해하기 어려운 부분이 많았다. 개발자가 되려면 반드시 짚고 넘어가야 할 부분이라고 생각해서 반복해서 볼 생각이다.

 모던 자바 인 액션은 인터넷에 공개된 샘플PDF가 있어서 핸드폰에 넣어서 좀 읽다가 재밌어서 샀다. 아직 초반부이긴 하지만 이것도 다른 것과 병행해서 꾸준히 읽을 생각이다. 프로젝트를 진행하면서 람다나 스트림을 잘 사용하면 코드의 양을 훨씬 줄이고 깔끔하게 짤 수 있다는 걸 알았는데, 꼼꼼이 읽어서 적용해보고 싶다.

 위 목록에는 없지만 토비의 스프링3을 빌려 읽었다. 다 읽진 못하고 3장까지만 읽었는데 너무 좋았다. 3장까지는 스프링에 대한 설명은 거의 나오지 않았고 초난감 DAO클래스를 점진적으로 리팩토링하는 방법으로 설명하는 부분이 매력있었다. 그냥 스프링은 이런 겁니다, 하고 이론을 던지는 게 아니고 초난감 DAO라는 누구나 이해할 수 있는 쉬운 클래스를 만들어서 개선하는 방식으로 스프링을 설명한다는 점. 바이블이라고 칭송 받는 것과 오래 전 버전이라는 것에 대한 편견이 있었는데 3장까지 읽으면서 싹 사라졌다. 반드시 읽어야 할 필독서로 지정해두고 싶다.

올해의 책

 올해 읽은 책 중에 가장 좋았던 것은 객체지향의 사실과 오해다. 나중에 객체지향을 오해하게 될 때쯤 읽겠다고 농담하곤 했는데 객체지향사고프로세스가 별로 재미 없어서 샀다. 설명을 잘하는 사람은 적절한 대상을 골라 비유할 줄 안다. 이 책이 딱 그렇다. 이상한 나라의 앨리스에서 객체지향을 읽는다는 것은 이 책이 객체지향 덕후가 썼다는 반증인 듯하다. 무언가에 흠뻑 빠져있는 사람은 그것을 통해 세상을 바라보게 된다. 그런 사람들이 쓴 글은 편파적이어서 불편하거나 매우 흥미롭거나 둘 중 하난데, 이 책은 후자다. 객체 지향이라고 하면 지루하고 딱딱할 것만 같은데 그런 고정관념을 말끔히 지워주는 책이다. 누구나 읽을 수 있을 만큼 쉬우면서도 피상적으로만 이해하던 개념을 구체화할 수 있다는 게 이 책의 가장 큰 장점 같다. 그냥 계속 감탄만 하면서 읽은 것 같다. 이렇게 쓰고 싶다.

난 아직 개발자도 아니고 대단한 성취를 하지도 않았다. 남들의 후기만큼 구체적이지 못한 것 같지만 나도 한 번 따라해보고 싶은 문화 중 하나가 회고였다. 고리타분하고 귀찮아보이는데도 불구하고 해보고 싶었던 이유는 웬만하면 사람들이 귀찮아서 잘 하지 않기 때문이다. 하지 않는 이유가 단순히 귀찮아서라면 한 번쯤은 그걸 이기고 해보고 싶었다. 1월부터는 포트폴리오를 정리하고 이력서를 쓰고 면접을 준비해 볼 생각이다. 상반기 전에는 취업하고 싶다. 일 년 정도를 풀타임으로 공부를 하다 보니 나름 자신감도 붙고 욕심도 생기기 시작했다. 개발자가 되겠다는 목표를 가지고 시작한 것은 아니었다. 재미있었고, 운이 좋으면 될 수도 있겠다는 모호한 생각이었지만 시간이 지나면서 개발자가 될 수 있을 것 같다는 쪽으로 생각이 굳어졌다. 무슨 배짱인지는 모르겠지만 그렇다. 내년 오늘은 개발자로서의 첫 회고를 쓸 수 있었으면 좋겠다.

 

GITHUB LINK

'메모' 카테고리의 다른 글

예외처리에 대한 잡설  (0) 2022.05.05
2021.close()  (0) 2022.01.01
일기  (0) 2020.08.31