생각 정리

2022년 회고

KAispread 2023. 1. 23. 16:57
728x90
반응형

길었던 2022년이 끝나고 어느덧 2023년의 1월도 저물어가고 있다. 돌이켜보면 2022년은 내가 가장 많이 성장할 수 있었던 한 해였던 것 같다. 4학년이 되고 졸업을 앞두게 되면서 더 이상 학생이라는 울타리 안에 숨어있을 수 없다는 생각이 들었고 무엇보다 나 스스로에게 당당해지기 위해서 열심히 달려왔다.
2022년은 나에게 많은 고민을 안겨주었고 성장을 위해 열심히 노력했던 한 해였기 때문에 그동안의 노력들을 기록하고 더 나아가고자 하는 새로운 목표를 세우려고 한다.


 

책 / 강의

 

HTML, CSS, JS

Do it! HTML5+CSS3 웹 표준의 정석


2022년에 가장 처음 공부했던 것은 HTML, CSS, JavaScript 였다.
그동안 웹 분야를 제대로 공부한적이 없어서 해당 분야에 대한 기본적인 지식부터 배워야겠다고 생각했다. 당시 HTML에 대한 기본 지식조차 없었기 때문에 가장 먼저 배워야 할 기술이라고 생각했고 그렇게 찾아본 책이 바로 'Do it! HTML5+CSS3 웹 표준의 정석'이다. 책에 대한 후기를 찾아보니 비전공자를 비롯한 초보자가 쉽게 배우기 좋다는 의견이 많았고 후기대로 웹에 대한 지식이 전혀 없던 나에게 매우 적절한 책이었다.
목차는 HTML → CSS → JavaScript 순으로 구성되어 있으며 코딩을 전혀 해본 적 없는 사람도 따라 할 수 있을 만큼 친절하고 쉽게 설명해주고 있다. 그렇기 때문에 책을 따라가는데 크게 어려웠던 부분은 없었고 웹에 대한 기초적인 개념에 대해 빠르게 배울 수 있어서 좋았다. 그리고 게시판 형태의 샘플 웹 페이지를 클론 코딩할 수 있도록 부록 pdf 파일로 제공하고 있기 때문에 학습했던 내용들을 직접 실습해 볼 수 있다.
이 책을 다 떼고 난 뒤, 조금 더 구체적인 진로에 대해 고민하기 시작했다. 프론트냐 백엔드냐에 대한 갈림길에서 여러 사람들의 조언을 듣고 결국엔 Spring 기반의 백엔드 개발자로 진로를 결정하게 되었다.

 

JAVA

자바의 신 VOL 1, 2


Node.js나 Django 와 같은 다른 프레임워크를 제치고 굳이 Spring을 선택한 이유는 인터넷상에 많은 국내 자료들과 커뮤니티가 있고, 추상화가 매우 잘되어있다고 생각했기 때문이다. 또한, 국내 서적들도 거의 Spring에 관련된 것들이 많았기 때문에 처음 서버개발을 배우는 사람으로서 공부하기 더욱 수월하겠다는 생각이 들었다.
Spring 은 Java 언어를 기반으로 하기 때문에 먼저 자바를 공부해야겠다고 생각했다. 그렇게 지인에게 추천받은 책이 자바의 신 1, 2 이다.
먼저 자바의 신 1편에서는 자바에 대한 기초적인 문법들에 대해 다룬다. 자료형의 종류부터 객체에 대한 이해, 캡슐화, 상속, 다형성 등 자바를 사용한다면 꼭 알아야 할 핵심적인 내용들에 대해 배울 수 있다. 각 챕터가 끝나고 나서 학습했던 내용을 점검할 수 있는 퀴즈나 실습들이 있어서 책의 내용을 흡수하는 데에 많은 도움이 되었다.
자바의 신 2편에서는 주요 API들에 대해서 다룬다. 여기서 I/O, Collection, Thread, Socket 등을 배울 수 있고 확실히 VOL 1에서 배웠던 기초적인 내용들보다는 깊이가 있다. 사실, 이 부분에 대해서 완벽하게 이해한 것은 아니라 아쉬움이 있다. 때문에 추후에 스터디를 통해 자바를 한 번 더 공부해 볼 예정이다. 책은 이펙티브 자바나 모던 자바 인 액션을 생각 중이다.

 

객체 지향

스프링 입문을 위한 자바 객체 지향의 원리와 이해


다음으로는 일명 '개구리 책'이라고 불리는 '스프링 입문을 위한 자바 객체 지향의 원리와 이해' 책을 학습했다. 자바를 학습하긴 했지만 '객체 지향'이라는 패러다임에 대해 알고 있는 거라곤 '객체 지향의 4대 특성' 밖에 없었다. 그리고 Spring 이 객체 지향을 가장 잘 활용한 프레임워크라고 들었기 때문에 객체 지향에 대해 깊이 배워야겠다는 생각으로 위 책을 구매했다. 근데 사실 지인의 추천이 가장 컸다.
이 책은 객체 지향에 대해 설명하는 책이기도 하지만 Spring 입문자들을 위한 책이기도 하다. 객체 지향에서 중요한 SOLID나 4대 특성과 같은 부분들을 포함하여 디자인 패턴, 의존성 주입 등에 대해서도 함께 다룬다. 부록에는 스프링 MVC를 이용하여 게시판을 개발해 볼 수 있도록 예제 코드를 제공한다. 하지만, 코드가 현 버전과 상이한 부분도 많고 무엇보다 Spring Boot를 사용하는 것이 아니기 때문에 설정 부분에서 많은 애를 먹었었다.
거의 모든 부분에서 책과 다르게 설정해야 되는 부분이 생겼는데, 애플리케이션을 실행시킬 때마다 콘솔에 찍히는 몇십 줄의 예외 스택 트레이스를 보며 멘탈이 많이 흔들리기도 했다. 하지만 어떻게든 해결해 보겠다는 의지로 폭풍 삽질을 통해 결국 게시판을 완성하고 이 책을 마무리했다.
이 책에 있는 예제를 실습해 보면서 예외에 대한 생각이 많이 바뀌게 된 것 같다. 기존엔 예외가 발생했을 때 근본적인 원인을 찾는 것이 아니라 예외에 대한 인터넷 자료에 많이 의지했었는데, 지금은 예외 발생 원인에 대해 차분히 생각해 보고 조치를 취하게 되었다. 개발을 하다 보면 수많은 예외들을 만나는데 이 또한 많이 경험하고 주도적으로 해결해 보는 노력들이 더 나은 개발자로 성장할 수 있겠다는 생각 또한 가지게 되었다.

 

Spring Boot

스프링 부트와 AWS로 혼자 구현하는 웹 서비스


우선 나는 '개발바닥'이라는 채널을 굉장히 좋아한다. 특히 향로님은 'EO' 채널에서 촬영한 영상을 보고 처음 알게 되었는데, 자신의 목표를 향해 나아가고자 하는 의지와 노력들이 굉장히 인상 깊었고 그분의 일상을 통해 공부에 대한 자극도 많이 받았다. 평소 멋있다고 생각했던 개발자의 책이 있다는 소식을 듣고 망설임 없이 구매하게 되었다. 심지어 내가 목표로 하는 Spring Boot 기반의 웹 서비스 구현이라니.. 구매하지 않을 이유가 없었다.
이 책을 학습하기 전까지 Spring을 접해본 거라고는 Spring legacy, MyBatis, JSP 등의 프레임워크를 통해 간단한 게시판 구축 밖에 없었다. Spring을 제대로 학습해 본 적이 없기 때문에 당연히 JPA나 Controller 동작 방식, 컴포넌트 스캔과 같은 기본적인 기능들에 대한 이해가 부족한 상태였다. 그래도 책을 따라서 개발부터 시도해 보면 나중에 개념을 배울 때도 더 잘 이해되지 않을까? 라는 생각으로 시작했다. 이 책 또한 초보자가 따라 할 수 있을 만큼 친절하게 설명되어 있다. 하지만 내가 개념적인 부분이 많이 부족했기 때문에 어노테이션 하나하나마다 기능들에 대해 검색해 보고 나름대로 정리한 내용들을 필기하며 책 내용을 따라가게 되었다.
결론적으로는 이 책을 통해 JUnit, JPA, AWS 등을 직접 사용해 보면서 개발의 즐거움을 느낄 수 있었다. 테스트코드가 전부 초록불이 뜰 때의 쾌감도 느껴보고 AWS에 직접 애플리케이션을 올려도 보고, CI/CD도 간단하게나마 적용해 보면서 백엔드 기술에 대한 시야가 한층 더 넓어진 듯한 느낌을 받았다. 무엇보다 내용이 정말 알차서 남는게 정말 많았던 책 중 하나이다.
이 책을 학습하면서 내가 기본적인 개념이 많이 부실하다는 생각이 많이 들었다. 더불어 어떤 원리로 Web이 동작하는지에 대한 궁금증이 생겨나기 시작했고 특히 Servlet에 대한 개념을 확실하게 이해해야겠다는 생각을 가지게 되었다.

 

Web

자바 웹을 다루는 기술


일단 이 책은 두께가 레전드다. 1200여 페이지의 분량을 자랑하는 이 책은 웹 애플리케이션을 이해하는 것부터 시작하여 서블릿에 대한 설명, 쿠키&세션, JSP, Spring 등 웹 개발에 필요한 핵심 기술들에 대해 다룬다. 책의 분량만큼이나 설명도 친절하게 잘 되어 있고 직접 실습해 볼 수 있는 부분들도 많기 때문에 웹을 공부하는 사람들이 한 번쯤은 봐도 괜찮을 책이라고 생각한다.
나는 내가 관심이 있었던 서블릿, 쿠키, Spring에 대한 내용들만 학습하고 이외에 JSP나 MyBatis 같은 부분들은 건너뛰었다. JSP는 더 이상 잘 사용하지 않는 기술이라고 들었고 MyBatis는 SQL Mapper 이기 때문에 더욱 추상화된 JPA에 더욱 관심이 있었기 때문이다.

 

Spring Boot & JPA (INFLEARN)

'자바 웹을 다루는 기술' 책 이후로는 거의 김영한 님의 JPA 로드맵 & Spring 로드맵 INFLEARN 강의를 보며 Spring과 JPA에 대해 학습했다. 약 20만에 육박하는 수강생이 왜 김영한 님의 강의를 수강했는지 단번에 알 수 있을 정도로 핵심적인 내용들에 대해 쉽게 쉽게 잘 설명해 주신다. 강의 자료 또한 파트별로 나누어져 있기 때문에 단계별로 학습하기에 편하다.
Spring - Load Map
우선 Spring 강의는 HTTP 웹 기본지식을 시작으로 스프링 핵심 원리 기본 -> MVC 1, 2 -> 고급까지 수강했다. 강의의 진행 방식은 보통 어떤 기능에 대해 예전에 사용하던 방식을 소개하며 해당 방식의 문제점을 설명해 주시고 이후, 점점 코드가 개선되는 과정을 보여주신다. 마지막엔 "이건 그냥 이렇게 쓰시면 된다~"라고 설명해 주시는데 이러한 설명 방식이 너무 좋다고 생각한다. 보통 많이 사용하는 코드 위주로만 따라치다보면 이건 왜 이렇게 사용하는 것인지 이해가 안 될 때가 많은데, 코드의 발전사를 이해하면 해당 기능의 동작 방식의 이해를 넘어 예외를 처리하거나 기능을 커스텀하는 방법에 대해서도 알 수 있기 때문이다.
JPA - Load Map
JPA는 JPA 기초 강의 -> JPA 기본서 (김영한 저) -> Spring Data JPA -> QueryDSL 순으로 학습 중이다. JPA를 사용해 보니 MyBatis를 사용했을 때보다 개발 생산성이 많이 올라간다는 느낌을 받았다. 특히 Spring Data JPA는 기본적인 CRUD 마저 제공하기 때문에 개발자가 반복적인 코드를 작성해야 하는 번거로움이 많이 줄여주고 쿼리를 자동으로 생성하는 기능이 너무 매력적이라고 생각한다. QueryDSL은 아직 제대로 학습하기 전이라 잘 모르지만 복잡한 동적 쿼리를 쉽게 해결 할 수 있다고 알고 있기 때문에 기대중이다.
아직은 JPA에서 헷갈리는 내용들이 많아서 계속 책을 봐야하지만, 학습했던 내용들에 대해 정리하고 프로젝트에 적용시켜 보면서 내제화 시키려고 노력 중이다. 특히 웹 애플리케이션에서 성능에 가장 큰 영향을 미치는 것이 쿼리이기 때문에 대표적인 N+1 문제를 비롯한 여러 성능 이슈들을 어떻게 하면 개선할 수 있을지 고민하고 있다.
아무리 열심히 공부했더라도 기억 하지 못 하는 부분이 생기기 마련이다. 따라서 강의를 통해 학습한 내용들은 개인 Notion에 정리하여 멀리 이동할 때나 내용이 잘 기억나지 않을 때 수시로 보는 편이다.

 


 

스터디


스터디에 참여하는 것은 아주 좋은 학습 방법이라고 생각한다. 스터디를 통해 개발자 인맥을 넓힐 수도 있고 서로의 지식을 공유하면서 내가 알지 못하던 부분들까지 알 수 있기 때문이다. 나는 2022년에 총 3개의 스터디에 참여했다.

코딩 스터디 (온라인)

이 스터디는 백엔드 2명, 프런트 2명으로 구성되어 있으며 2022년 5월부터 지금까지도 계속 진행되고 있는 온라인 스터디이다. 처음에는 단순히 같이 열심히 공부하자는 목적으로 학과 동기들과 함께 스터디를 시작하게 되었다. 스터디를 통해 각자 새로운 기술들에 대해 접하게 되면서 이전에 몰랐던 부분들에 대해 배울 수 있었고 특히, 발표를 많이 진행해 보면서 내가 아는 지식들을 다른 사람에게 이해시키는 능력도 키울 수 있었다.

자바 코딩 인터뷰 완벽 가이드 (오프라인)

'자바 코딩 인터뷰 완벽 가이드'라는 책은 기술 면접과 코딩테스트에 대비할 수 있는 외국에서 쓰인 책이다. 일주일간의 진도를 정하고 학습했던 내용을 매주 2명씩 발표하면서 진행하는 방식이었다. 이 스터디는 홀라(Hola)라는 사이트에서 구하게 되었고 총 9명의 사람들과 매주 일요일 1시, 강남역 스터디 카페에 모여 약 1~2달 동안 스터디를 진행했었다.
오프라인 스터디는 처음이라 걱정을 많이 했었는데 성장하고자 하는 의지로 뭉친 다양한 개발자들을 보며 오히려 좋은 자극을 받을 수 있었다. 같이 공부하는 것에 대한 매력을 많이 느낄 수 있었다. 또한 나는 면접 스터디가 대부분 취준생일 줄 알았는데 절반이 넘는 인원이 다른 회사로 이직을 준비하고 계시는 개발자여서 놀랐던 기억이 있다. 시간이 많은 지금 시기에 더욱 열심히 공부해야겠다는 생각도 들었다.

자바 알고리즘 스터디 (온라인)

4학년 2학기가 끝나고부터 지금까지는 거의 알고리즘을 공부했다. 기업에 입사하기 위해선 코딩테스트를 봐야 하는 경우가 많은데 나는 아무런 준비를 하고 있지 않았기 때문이다. 그렇게 시작한 스터디가 이 알고리즘 스터디이다. '캠퍼스픽'이라는 플랫폼에서 스터디를 구했으며, 과제로는 10~30개의 프로그래머스 문제를 풀고 일주일에 한 번 온라인 모의 코딩테스트 -> 코드 리뷰 형식으로 이루어졌다.
스터디를 통해 문제를 많이 풀어보게 되면서 문제 풀이 능력이 많이 향상되었다. 그리고 문제 풀이와 병행하여 코딩테스트에서 사용되는 핵심 알고리즘에 대해서도 함께 공부하게 되었다. 자바 알고리즘 책으로는 <Do it! 알고리즘 코딩 테스트 자바 편>을 추천한다.


 

프로젝트

ModuForm (웹 애플리케이션)

 

애플리케이션 로그인 화면

ModuForm은 설문조사 웹 애플리케이션이다. 이 애플리케이션을 개발할 때가 한창 인프런 강의를 열심히 듣고 있을 때였는데, 단순히 개념 학습만 하다 보니 머릿속에 잘 들어오지 않는다는 느낌이 들었다. 따라서, 강의에서 학습한 내용들을 직접 적용해 보기 위한 프로젝트로 ModuForm이라는 프로젝트를 시작했다.
초기에 애를 먹었던 부분은 데이터베이스 테이블 설계, API이다. 분명 강의를 들었을 때는 그렇게 어려워 보이지 않았는데 막상 주도적으로 애플리케이션을 설계하려고 하니 막막한 것이 한두 가지가 아니었다. 그래서 최대한 내가 이전에 봤던 템플릿, 책, 강의를 참고하여 차근차근 기능을 만들게 되었다.
프로젝트를 어느 정도 마무리하면서 들었던 생각은 단순히 이해만 하는 것과 실제로 적용해 보는 것은 엄청난 차이가 있다는 것이었다. 어떠한 개념이나 기능에 대해 이해하는 것은 어렵지 않지만 실제 프로젝트에 적용시키는 것은 더 높은 이해를 필요로 한다. 또한, 강의에서는 접하지 못했던 예외를 마주할 수도 있고 예상대로 기능이 동작하지 않을 수도 있다. 이런 부분들을 해결하는 것이 개발자로서의 성장이라는 생각이 들었고 학습 방법에도 변화를 주는 계기가 되었다.

Instagram Image Downloader (스크래핑)

 

앞선 웹 애플리케이션은 사실 실용성이 있는 프로젝트는 아니었다. 설문 조사 애플리케이션은 상용화된 것이 많을뿐더러, 나조차도 사용을 안 하는, 단지 학습용 프로젝트에 지나지 않았기 때문이다.
그래서 실용적인 것을 프로그램을 만들어보려고 생각했던 것이 이 '인스타그램 이미지 다운로더'이다. 나는 크롤링이나 스크래핑에 관심이 많아서 언젠가 관련된 프로그램을 만들어봐야겠다는 생각을 가지고 있었다. 그러던 와중에 문득 내가 좋아하는 연예인의 인스타그램 사진을 다운로드하고 싶다는 생각이 들었고 크롤링을 통해 가능할 것 같다는 생각이 들었다. 그렇게 이 프로젝트를 시작했다.
크롤링을 처음 배우면서 실제 상용화된 웹 애플리케이션에서 클라이언트로 전달하는 여러 데이터들을 분석하고, 추출해 내는 과정이 너무 재미있었다. 또한, API 설계나 쿠키, 세션 처리 등에서도 많은 인사이트를 얻을 수 있었다. 과정이 쉽지만은 않았지만 결과적으로 내가 목표하는 기능을 완성했고 실제로 사용하게 되는, 실용성 있는 프로그램을 개발할 수 있었다.

 


 

교육 프로그램

우테코 지원

나는 사람의 환경을 굉장히 중요하게 생각한다. 물론 개인의 노력이 기반이 되어야겠지만 매일 놀기만 하는 친구들과 있으면 놀기만 하게 되고, 하루하루를 열심히 사는 사람들과 함께하면 나 또한 그렇게 된다고 생각한다.
그런 나에게 있어 우테코는 개발자로서 성장할 수 있는 최고의 환경을 마련할 수 있는 교육 프로그램이라고 생각했다. 우선 우테코 크루들의 테코톡을 통해 많은 도움을 받았었고 우테코에 합격하는 것이 엄청나게 어렵다는 것을 알기에 그만큼의 수준 높은 성장을 이뤄낼 수 있을 것이라 생각했기 때문이다.
그렇게 우테코에 지원하게 되었고 4주간의 프리코스 과정을 거쳐 매 과제마다 열심히 참여했지만 결과는 탈락이었다. 많이 아쉽기도 했지만 나도 내가 부족한 것을 알고 있었기 때문에 더 열심히 공부해야겠다는 생각이 들었다. 탈락의 좌절보다 오히려 얻은 것이 더 많다고 생각했다. 4주간의 프리코스 기간 동안 요구사항을 토대로 애플리케이션을 구현하면서 많은 피드백을 받았다.
우테코 멘토들의 공통 피드백을 통해 코드, 커밋 컨벤션 / 객체 지향 / 예외 처리 등등 그동안 깊게 생각해보지 못했던 부분들에 대해 생각해 볼 수 있는 시간을 가지게 되었고 무엇보다 테스트 코드의 힘을 많이 느낄 수 있었다. 내가 작성했던 코드에 대한 피드백을 가장 빠르게 받아 볼 수 있는 방법이 테스트 코드라는 말에 공감할 수 있게 되었고 리팩터링 할 때도 엄청난 도움이 되었다. 나는 'Spring 개발자'가 아니라 특정 기술에 구애받지 않는 그냥 '개발자'가 되고 싶기에 기본에 더욱 충실해야겠다는 생각이 들었다.

프로그래머스 커뮤러닝

코딩테스트는 좋은 회사에 개발자로 취업하기 위해서 반드시 준비해야 하는 부분 중 하나이다. 물론, 이전까지 개발을 많이 해보셨던 분들은 따로 코딩테스트 준비 없이 합격하는 경우가 있지만 대부분의 사람들은 따로 알고리즘을 공부해서 문제 푸는 연습을 해야 한다.
나는 이전에 알고리즘 스터디를 했었기도 했고 자바 알고리즘 책도 따로 공부한 상태였기 때문에 프로그래머스 레벨 2 정도는 어느 정도 풀 수 있는 수준이었다. 그렇게 하루에 2문제씩 풀던 중, 프로그래머스에서 진행하는 코딩테스트 교육이 있다는 소식을 듣고 내일 배움 카드를 발급받아, 지원하게 되었다.
교육은 전부 온라인으로 진행되며 기간은 4주 동안 진행된다. 1 ~ 3 주차에는 그리디, 그래프, 탐색, 정렬 등 핵심 알고리즘에 대한 문제를 풀고 해당 문제에 대한 강사의 풀이 동영상을 보며 학습한다. 2 ~ 4 주차에는 중간 - 기말고사 기간으로, 지난 주차에서 배웠던 핵심 알고리즘 문제가 출제되고 해당 문제들을 주어진 시간 안에 푸는 시스템이다. 수료 기준은 성적에 관계없이 학습 진행도가 80% 이상이면 수료가 가능하기 때문에 크게 부담 없이 문제를 풀 수 있다.
후기를 말해보자면 핵심 알고리즘에 대한 문제들을 풀 수도 있고 강의를 통해 문제 접근 방법도 배울 수 있어서 문제 풀이 역량을 키울 수 있다. 하지만, 1주 동안 주어지는 문제의 양이 적고 8문제 중에 4문 제 만 강의가 제공되어서 나머지 4문제에 대해선 정답 예시 코드를 보며 직접 디버깅하며 학습해야 한다는 점? 그리고 '커뮤러닝'이라는 타이틀과 다르게 코드리뷰가 그리 활발하지는 않아서 코드리뷰를 통해 큰 도움을 받을 수는 없다. 그래도 주어진 기간 동안 문제를 풀어야 하기 때문에 공부 의지가 없는 사람에게는 도움이 될 순 있겠다는 생각이 들었다.

 


 

목표

 

취업

올해 가장 이루고 싶은 목표는 취업이다. 올해엔 IT 취업시장이 좋지 않을 전망이라 걱정이 되지만 나 스스로가 당당해질 수 있을 만큼 열심히 노력한다면 나의 가치를 알아줄 기업은 2023년에도 충분히 있을 것이라 생각한다. 또한, 혼자 공부하는 것보다 실무에서 경험하면서 배우는 것이 훨씬 크다고 생각하기 때문에 취업을 위해 너무 오랜 기간 동안 공부하지는 않을 예정이다. 어느 곳을 가던 개발자로서 성장하는 부분에 있어서 자신의 의지가 가장 크다고 생각한다. 한 자리에 머물러있지 않고 더 나아가려 노력한다면 언젠가는 좋은 회사에 입사할 수 있을 것이라 믿고 있다.
개발자 취업 프로세스는 보통 서류 - 코딩테스트 - 기술 / 인성 면접으로 구성되어 있기 때문에 준비해야 할 부분이 많다. 현재는 코딩 테스트 준비 & JPA 공부를 병행하고 있고 최근엔 협업 경험도 중요하다고 생각해서 팀 프로젝트에 참여하게 되었다. 이번 프로젝트에서 내가 가진 지식과 기술들을 전부 활용하여 최대한 많은 기여를 하고, 많은 것들을 얻어갈 수 있었으면 좋겠다. 팀 프로젝트가 정리되고 나서는 회사에 적극적으로 지원해 볼 예정이다. 인프런에 멘토링이라는 서비스가 있는데 거기에서 현업 개발자에게 이력서를 피드백 받을수도 있다고 알고 있다. 그런 서비스들을 이용하는 것도 좋을 것 같다.
목표하는 회사는 시리즈 C ~ D 정도의 규모의 좋은 개발 문화를 가진 곳이다. 특히, 코드리뷰 문화가 활발한 곳으로 가고 싶다. 우테코 프리코스 중에 코드 리뷰를 처음으로 접해봤는데 내가 습관처럼 작성하던 코드가 효율적이지 못하다는 의견을 들었을 때 큰 충격을 받았다. 지금까지 내 멋대로 코드 짜고 혼자 잘한다고 착각했던 내 모습이 바보같이 느껴졌다. 내가 취업하는 회사는 이렇게 혼자 착각하는 것들을 깨줄 수 있는 코드 리뷰 문화가 꼭 있었으면 좋겠다.

DevOps & 데이터베이스 공부

개인 웹 프로젝트를 진행하면서 가장 크게 느꼈던 것은 자동화 프로세스가 개발 생산성에 엄청난 도움을 준다는 것이다. 자동화가 구축되지 않은 환경에서는 Git에서 코드를 받아, 직접 테스트를 돌리고 빌드하여 배포하는 과정을 전부 직접 해야한다. 하지만, Travis CI, Jenkins, Docker 같은 CI/CD 툴을 적극 활용하여 자동화 프로세스를 구축한다면, 코드를 Github에 push 하기만 해도 위 과정이 전부 자동으로 이루어진다. 나는 스프링 부트와 AWS로 혼자 구현하는 웹 서비스에서 이 과정들을 겪을 수 있었는데 자동화하는 과정들이 재미있었고 애플리케이션을 운용할 때 무조건 적용해야겠다는 생각이 들었다. 직접 테스트 - 빌드 - 배포 하는 것은 너무 귀찮다. 책에서는 Travis CI, S3, CodeDeploy를 활용했는데 나는 Jenkins, Docker 를 배우고 싶다. 아직 Spring, JPA도 부족하지만 올해 기회가 된다면 스터디를 통해서라도 꼭 배워보고 싶은 마음이다.
나는 지금 JPA를 공부하고 있지만 JPA 보다 더 중요한 것이 바로 데이터베이스에 대한 기본적인 이해, 지식이라고 생각한다. 기본이 없는 개발자는 결국 무너지기 마련이다. JPA를 공부하면서 느낀 것이, JPA는 단순히 데이터베이스를 더 잘 활용하기 위한 것이지 데이터베이스를 몰라도 사용할 수 있는 기술이 아니라고 느꼈다. 2학년 때 데이터베이스에 대해 공부하기는 했지만 아직 모르는 것도 많고 부족한 부분도 많다. 따라서 올해에는 MySQL을 위주로 공부하여 기본을 단단히 다질 생각이다.

시스템 지키기

김영한님의 인프런 강의를 들으면서 김영한 님께서 나온 강연이나 유튜브 영상 같은 것들을 많이 찾아보게 되었다. SI 회사부터 시작하여 우형의 최연소 기술 이사가 될 수 있었던 성장 과정과 마음 가짐이 궁금했기 때문이다. 개발 관련 강연이나 유튜브 영상 중에서 가장 수요가 높은 키워드 중 하나가 '성장'인데 그런 질문들에 대해 김영한 님이 항상 하시던 말씀이 있었다.
"목표 말고 시스템을 만들어라. 목표는 달성하면 성공, 달성하지 못하면 실패가 된다. 그리고 목표를 달성했다 하더라도 또 새로운 목표를 세우고 달성하면 성공, 달성 못하면 실패의 과정을 거쳐야 한다. 반면에 시스템은 성공이나 실패가 없다. 그냥 그 시간에 그 일을 하는 것이다. 예를 들어, 아침 10시부터 12시까지는 공부를 하는 나만의 시스템을 만드는 것이다. 그렇게 되면 하루에 2시간씩, 1년이면 700시간이 넘는 시간 동안 성장할 수 있게 되는 것이다. 그렇게 나의 시스템을 만들면 결국엔 성장할 수밖에 없는 사람이 될 수 있을 것이다." 라는 말씀을 하셨다.
이 말을 듣고 나도 나만의 시스템을 만들어야겠다고 생각했다. 영한님께서 말씀하시는 시스템이 꾸준함이 중요하다고 생각하는 나의 생각과 같은 방향성을 띈다고 생각했기 때문이다. 그래서 To Do List 어플을 활용하여 오늘 하루 해야하는 일을 정하고 시간을 분배하여 일을 수행하고자 하였다. 하지만, 돌이켜보면 내가 세웠던 시스템은 제대로 된 시스템이 아니었던 것 같다. 내 시스템은 곧 '하루의 목표'가 되어버렸기 때문이다. 하루에 해야하는 일을 수행하지 못했을 때 실패가 되었고, 그러한 실패들이 모여 점점 "오늘 하루쯤은 다 못해도 괜찮겠지"라는 생각을 만들게 되었다. 올해엔 나만의 시스템을 찾고, 지키는 것이 목표이다. 그 시스템을 통해 더욱 발전하는 2023년이 되었으면 한다.

728x90
반응형