2022 회고
2022 회고
2022년에 내가 한 개발, 취업 준비 및 관련 공부에 대해 회고해 보려 한다.
웹 개발 기초 지식
2022년을 시작하며 취업 준비를 위해 뭘 공부해야 하나 굉장히 고민을 많이 했다. 이 때 노마드코더라는 채널에서 일단 직접 뭔가를 만들어보며 공부하라는 추천을 받고, 해당 사이트에서 클론 코딩을 해 보기로 했다.
웹 개발 관련해서 대학교때 수업을 듣긴 했지만, 오래 되어 기억이 나지 않았다. HTML, CSS, 자바스크립트 등 웹 개발의 기초 지식을 복습하고 클론 코딩을 해 봤다. (1, 2)
확실히 직접 보이는 결과물들을 만드니 흥미가 생기고, 제대로 된 웹 페이지를 만들어 보고 싶다는 생각이 들어서 React를 배우기로 했다.
React와 Next.js
React 관련 강의를 열심히 듣고, 여러 실습을 직접 해 봤다.(3, 4, 5, 6) 근데 공부를 하다보니 React는 프론트엔드만 구현하는 라이브러리일 뿐, 결국 DB를 활용하는 등의 복잡한 로직을 다루려면 별도의 백엔드 서버를 만들어야 한다는 것을 알게 됐다.
Python과 Django를 사용해 백엔드를 만들어 볼까도 고민해 봤다. 그러나 React로 익숙해진 만큼 이와 관련된 Next.js라는 풀스택 프레임워크를 클론 코딩을 통해 공부했다. (7)
이 지식을 바탕으로 프로젝트를 만들어 보고 싶었으나, 혼자서 프론트와 백 모두 개발하기에는 힘들 것 같다는 생각이 들었다.따라서 팀 프로젝트를 하면 좋겠다는 생각을 했다.
스터디 시작
3월 즈음에 같이 취업 준비를 하고 있는 @Chosamee
, @1eegon
과 함께 스터디를 진행했다. 웹, 네트워크, 프로젝트, git, DB, OS 등 여러 CS 주제를 매 주 발표하는 방식으로 스터디를 진행했다.
또 스터디에서 Next.js를 같이 공부해 reservation-site라는 프로젝트를 진행했다. (8) REST API 및 서버에 대한 이해, DB 설계, OAuth 등등 여러 지식을 많이 배웠다. 또한 버그가 생겼을 때 회의를 통해 문제를 해결하고, 서로 소통하는 경험도 많이 했다.
그러나 프로젝트를 돌아 보면 시행 착오도 많이 겪었고, 아쉬운 점도 많다. Prisma, PlanetSclae, Vercel같은 외부 서비스에 너무 의존한 것 같다. AWS EC2 및 nginx등을 활용해 직접 배포해 보고, 데이터베이스도 AWS RDS에 직접 연결하는 방법들을 사용했으면 더 좋았을 것 같다.
별도의 데드라인을 설정하지 않고 진행한 점 때문에 프로젝트가 늘어지기도 했다. 게다가 팀원들간에 지식 차가 있다 보니, 역할 분배를 두루뭉술하게 하면서 서로 맡은 분야가 애매해진 부분도 있다. 이런 점들 때문에 결과물 퀄리티가 많이 아쉬운 것 같다.
개인 플젝
팀 프로젝트와는 별개로 개인 프로젝트 역시 꾸준히 진행했다. 다만 이 개인 프로젝트들도 명확한 목표 및 데드라인이 존재하지 않았고, 결국 흐지부지된 것 같다. 내년에는 이 프로젝트들을 수정하거나 재구성해보려 한다.
- 온라인 게임 메이플스토리에서 유니온 캐릭터들의 장비 관리를 편하게 관리하기 위해 Next.js로 개발하던 웹 페이지
- 사용자에게 과한 정보를 입력하게 하는 등 프로젝트의 설계 자체가 잘못되었기 때문에 개발을 중단했다
- 메이플스토리에서 제공하는 유니온 관련 API가 없으면 추후 개발은 힘들 것 같다
- 최근 메이플스토리에서 API를 공개했지만, 2022-12-31 기준으로 내가 원하는 방향의 데이터를 제공받기는 힘들어 보인다
- 과거 python으로 개발했던 오목 프로그램인 renju-player를 react를 활용해 웹 버전으로 확장했다
- 백엔드 서버를 붙여 컴퓨터 대련 기능 및 대국 저장 기능을 만들고 싶었으나 오목의 복잡한 규칙 때문에 중단한 상태이다
- 기존 코드를 수정해서 오목 대신 비교적 간단한 리버시를 이용해 추가 개발을 해 보려 한다
- 파일 두 개를 비교하는 간단한 프로젝트로, HTML, CSS, JS만으로 만으로 개발했다
- 실제로 사용해 보니 폴더 단위 비교하기, 여러 파일들을 한 번에 비교하기 등 추가해야 할 기능이 많다
- 사용자에게 더 편리한 형태로 제공하고 싶기 때문에, 기술 스택을 바꿔서 확장하는 것을 고려 중이다
Velog와 TIL
매일 매일 공부한걸 저장하기 위해 벨로그를 시작했었다. 그런데 벨로그에서는 하나의 주제로 완벽한 포스트를 쓰려는 압박에 시달리다보니 매일 포스트를 작성하는 것이 흐지부지되고, 결국 손을 놓게 되었다.
이렇게 흐지부지된 것이 너무 싫어서, 아무리 간단한 내용이라도 하루 한 개의 내용을 담은 포스트를 올리는 식으로 변경하기로 했다. 그리고 작성하는 것도 벨로그가 아닌 깃허브에 커밋 형식으로 작성하는 게 더 좋을 것 같아서, 현재 레포지토리인 TIL을 만들고 매일매일 하나씩 올리고 있다.
README 부분을 고치고, 포스트를 작성하면 매일매일 자동으로 푸시해주는 것이 앞으로의 숙제다.
네이버 준비
스터디에서 한 팀 프로젝트가 끝날때 쯤 네이버 채용 공고가 올라왔고, 이를 위해 본격적인 취업 준비를 시작했다. CS지식, 코테 등을 열심히 준비했다. 코테는 백준과 프로그래머스 등을 활용하고, CS는 잘 정리된 블로그들을 많이 찾아봤던 것 같다.
운이 좋게도 1차 면접까지는 갔는데, 너무 자만에 빠져있었던 것 같다. CS 기초 지식, 웹 개발에 대한 이해, 프로젝트 디테일 등이 너무 부족했고, 아쉬운 결과를 맞이했다.
네이버 웹툰, 라인, 카카오 준비
네이버 탈락 이후 CS 및 코테도 다시 공부하고, 스터디도 진행하면서 진행한 팀 프로젝트에 대한 유지 보수도 진행하던 중 다른 공고들을 봤다.
네이버 웹툰은 코테가 없는 대신 서류 전형을 높은 수준으로 요구했다. 나름대로 열심히 작성한다고 노력했지만, 서류만으로 붙기에는 프로젝트를 진행한 경험 혹은 어려운 문제를 푼 경험이 많이 부족했던 것 같다.
라인 및 카카오는 코테를 봤다. 둘 다 비율로 따지면 6~70% 정도의 문제를 풀었던 것 같다. 난이도 낮은 문제들에서 시간을 많이 잡아 먹힌게 좀 아쉬웠다. 코딩 테스트의 커트라인은 넘겼지만 지원한 분야에 대한 지식, 경험, 프로젝트 이력 등이 부족했던 것 같아 결국 좋은 결과를 내지는 못했다.
넥토리얼 준비 (넥슨 인턴)
올해의 가장 마지막이자, 가장 갈망했던 지원이었다. 넥토리얼이라는 넥슨 인턴 공고가 올라왔고, 개중에는 내가 하는 게임의 DBA도 있었다. DBA를 처음부터 생각하고 있지는 않았는데, 해당 공고를 보고 갑자기 DBA에 대한 흥미가 갑자기 생겨 자소서를 작성하고 정말 열심히 준비했다.
개인 프로젝트였던 maple-tools도 우선 마무리하고 포트폴리오에 올리고, DB 관련한 공부도 준비했다. 서류는 어찌저찌 붙었지만 너무 급하게 준비했던 것 같다. DB 관련 지식도, 실제 프로젝트 및 DB를 다룬 경험도, 더욱이 MSSQL에 대한 지식도 전무했다. 면접에서 심각하게 아쉬웠고, 결과를 마주하고는 마음이 많이 꺾였다.
팀 프로젝트 중단
넥토리얼을 떨어진 후에 심적으로도 많이 힘들었고, 방향성에 대해서도 많은 고민이 생겼다.
여러 채용 절차들이 끝난 뒤, 스터디에서는 다음 팀 프로젝트를 고민하고 있었다. 그러나 팀원들 모두 각자 사정이 있기도 하고 주제가 정말 잡히지 않아 팀 프로젝트 진행은 중단하고 각자 공부를 더 하며 목표에 대해 고민을 해 보기로 했다.
AWS, Spring
넥토리얼을 떨어진 후, 실제 DB나 백엔드를 다룬 경험이 부족하다는 느낌을 받았다. AWS를 직접 다뤄서 서버를 관리하거나 배포를 해 보고 싶어졌다. 11월부터는 AWS 프리 티어 계정을 생성해서 이것저것 경험해 봤다. 이러다보니 진짜 웹 서버를 AWS를 통해 배포해보고 싶다는 생각이 들었다.
스프링 부트와 AWS로 혼자 구현하는 웹 서비스
라는 책을 구매했고 이걸 이용해 spring을 공부했고, 클론 코딩한 코드를 AWS를 이용해 서버 배포를 해 봤다. (9)
또한 이 과정에서 Github Action을 통해 코드를 푸시하면 자동으로 배포되도록 CI/CD도 경험해 봤다.
총평 및 신년 계획
2022년 한 해 동안을 평가해보자면 너무 중구난방으로 이것저것 해서 아쉬운 것 같다. 뭘 하고 싶은지 고민은 많이 했는데, 아직도 결론을 못 내린 것 같다.
또 개발을 하면서 흐지부지 끝난 것들이 많은 점도, 공부를 하면서 최선을 다하지는 못 한 점도 반성한다. 따라서 새해에는 다음과 같은 점들을 이루고자 한다.
- 흐지부지된 개인 프로젝트를 확장하거나 다른 방향으로 만들어서 완성하기
- 정확히 뭘 하고 싶은 지 답을 찾고 목표를 설정하기
- 목표를 향해 최선을 다 하기
- TIL 자동화