2023 신년계획

양진영·2023년 1월 9일
1

재미없는 제목으로 시작했지만, 재미있는 서론으로 시작해보려 한다. 누구나 그러하듯 매년 초에는 그럴사한 계획을 갖게된다. 다이어트를 하고 책을 읽고 운동을 하고 여러가지 계획을 세우고 의지를 불태운다. 하지만 마이크 타이슨 형님이 말씀하셨듯, "누구나 그럴사한 계획을 세운다, 처 맞기 전까지는..."이라고 실제로 계획을 실천에 옮기는 과정에서 대부분은 포기를 한다. 그렇다면 무엇이 우리를 포기하게 만드는 것일까? 많은 이유중 하나는 과한 목표설정이 있을것이고 체계적이지 않은 계획 또한 한 몫을 했으리라 생각한다. 그래서 그 두가지에 착안하여 나는 올해 신년계획을 수립해 보았다. 나 또한 개발 외적인 부분에서 세운 계획도 있으나 여기서는 신입 개발자로서 2023년도 어떻게 하면 더 성장할수 있을까에 집중하여 써보도록 하겠다.

신입 개발자로서의 성장

성장이면 성장이지 왜 자꾸 신입을 앞에다 붙이냐? 라고 날카롭게 지적할수도 있지만 그건 이유가 있다. 첫째는 나 스스로 부족함을 깨닫고 화려한 트렌드를 쫒기보다, 기본으로 돌아와 내가 개발하는 언어의 동작원리, 기본적인 성능체크 등 신입 개발자로서 주제를 알고 기본기를 쌓아 나가겠다는 나만의 주제파악에 의미도 있다. 두번째는 내가 미생이라는 드라마를 좋아해서 일수도 있다. 미생의 주인공은 신입(인턴)으로 업무 스킬적인 부분은 부족할수 있으나 그만큼 틀에 박히지 않는 창의력, 발상으로 판을 흔들기 때문이다. 정리하자면 나 또한 업무 스킬적인 기본을 익히며 어떤 업무를 할때 정도를 걷는게 아닌 창의적인 발상과 효율성으로 접근 하고 싶기 때문이다. 아 오해는 하지 마시길, 틀에 박히지 않는 유연함을 갖고 싶다는 얘기지 내 맘대로 고집부리겠다는 말은 아니니... 이제부터는 2023년 내가 배우고 익히면 좋을것들을 하나씩 기록하며 왜 배워야 한다고 생각하게 되었는지 까지 함께 써보도록 하겠다.

Javascript

사실 내 글을 읽고 있다면 이부분에서 잉?? 하거나 음... 실망인데? 라고 느꼈을 사람들도 분명 있을것이다. 이해한다. 갑자기 javascript라니... 그런데 여러분은 여러분이 다루는 언어를 어디까지 이해하고 있는지 생각해본적 있나? 나 또한 생각해본적 없었다. 어쩌면 그냥 구현만 잘되면 그만이야~ 라는 마인드 였을지도 모른다. 확실하진 않지만 어쨋든 반성해보았다. 그런데 사실 개발을 하며 에러에 부딪히는건 당연한 일이다. 개발자란 그러한 문제들을 해결해 나가는 사람이니... 하지만 문제는 내가 다루는 언어의 동작원리를 모르고 문제를 해결하려 했다가는 어디서 문제가 일어났는지 파악조차 힘들수도 있고 더 나아가 문제를 악화시킬수도 있다는것을 현재 진행하는 프로젝트에서 느꼈다. 그래서 깨달았다, 나는 node.js로 서버를 개발하기 앞서 javascript에 대해서 얼마나 알고있을까? 글을 쓰고 있자니 뭔가 연애에 관해 쓰는거 같기도 하지만 사실 진짜 연애와 크게 다를게 없다. 상대방에 대해 얼마나 잘알고 있느냐에 따라 그 관계에 깊이가 정해지는 법이니까... 나 또한 JS를 깊게 알고 싶다. 더 좋은 개발자가 되기 위해 기본적으로 내가 사용하는 언어에 대해서 좀더 깊게 알아가는 시간을 갖고자 한다. 그래서 javascript는 올 1월동안 꾸준히 공부해 보려고 한다. 그냥 이론적으로만 알고 있는 싱글쓰레드 동작이라고 하지만 그 밑에서도 일어나고 있는 일들, 비동기(async/awawit, promise), js 내장 메소드들의 내부 동작원리, class , object등 한달이라는 시간이 부족할수도 있지만 대략적인 기간을 정해두지 않으면 또 루즈 해지기 때문에 조금 타이트 하더라도 1월 한달안에 많은 공부를 하려한다. 또 공부를 하며 알게된 사실을 나누고 싶기도 하다.

Express(ORM)

위에 잠깐 언급했지만 나는 node.js를 이용하여 서버를 개발한다. 좀더 자세히 말하자면 node.js위에서 동작하는 express라는 프레임워크로 개발한다. 하지만 정말 부끄럽게도 나는 express에 대해서 빠삭하게 잘 알지 못한다. 나는 부트캠프 출신으로 express에 대해서 자세히 배우기도 전에 Nest로 개발을 시작했다. 그렇기에 express를 사용하여 개발한지는 정말 얼마 안된다. 이렇게 말하는 사람도 있을것이다, "아니 nest가 express기반으로 돌아가는 건데 무슨 말을 하는거냐??" 근데 내가 말하는 express란 정말 처음부터 빌드해 나가는 express이다. nest는 생각보다 굉장히 친절하게 많은 부분 다 스스로 내장하여 제공해준다. 처음부터 만들 필요가 없었다. 모듈화로 되어 그냥 필요한건 꺼내써야 했지만, 지금은 다르다. nodejs에서 동작하는 express는 상당히 자유도가 높지만 그만큼 자기가 설정해주고 이해하지 않으면 다루기 힘든 부분도 많다. 그런 부분에 있어서 express를 배워야 겠다 라고 느낀것이다. middleware라는 개념은 알지만 실제 좋은 사용 예제는 어떻게 되고 어떤 상황에서 어떻게 쓰면 좋을지 그런것도 이번기회에 잘알아두면 좋을것같다. 이건 사실 그렇게 길게 잡진않는다. 2월 중순까지 조금 하면 왠만한건 많이 익힐수 있으리라 생각한다.

Typescript

개발좀 친다고 생각하는 사람들은 사실 이미 예상했을것이다. js를 했으니 ts를 해야지 라고. 맞다, 맞는 말이다. 나 또한 당연히 ts를 배워야 겠다고 생각했다. 근데 요즘 나는 당연하다 라는 말에 조금 위화감이 들기 시작했다. 왜 당연해? 그냥 js로만 개발하면 안돼는거야? 왜 꼭 ts가 필요한거야? 라고 스스로 문답을 해보았다. 결론은 솔직히 말하면 잘모르겠다. ts로 개발했을때 자꾸 어디서 무슨 에러들만 발생하고 개발에 방해만 된다고 느껴졌다. 한마디로 성가셨다. 하지만 그건 내가 너무 js에 익숙해져있어서 그런걸수도 있다. 애초에 다이나믹 프로그래밍인 만큼 타입에 구애받지 않고 개발하여 ts가 불편하게 느껴지는것 같다. 내가 ts를 몰라서 그런걸수도 있고... 그래서 ts만큼은 솔직하게 말하면 내가 필요한게 느껴서 배우기 보다는 배우면서 필요성을 느끼려고 한다... 이건 2월 중순부터 4월 초까지 생각하고 있다.

git/github(sourceTree)

내 아픈 손가락중 하나이다. 깃과 깃헙을 모르는 개발자가 있다고...? 있다. 그게 바로 나다... 사실 깃과 깃헙을 아예 모르는건 아니다. 하지만 잘 다루질 못한다. 충돌났을때 어떻게 해야하는지, 충돌 외 다른 오류가 났을때 어떻게 접근해야하며 브랜치 관리와 gitflow는 어떻게 잡고가는지 그런것들에 대한 완벽한 이해가 부족하다. 깃과 깃헙을 몰라서 그런지 개발을 열심히 하고 머지를 할때마다 너무 두렵다. 깃/깃헙 공포증인거 같다. 난 이런거 싫다한다. 그래서 부끄럽지만 꼭 배워야 겠다고 생각하며 올해는 깃/깃헙 마스터가 되어야 겠다고 생각했다. 깃/깃헙은 1월부터 바로 공부 시작하려 한다. 그리고 2주면 충분히 익힐수있을거 같아, 오랜기간 잡지 않을 것이다.

SQL

Orm을 공부하면 되는거 아니야? 라고 물어본다면 당신도 나처럼 공부의 필요성을 느껴야 한다. 기능개발하며 느꼇던 부분중 하나는 SQL을 알아야 한다는 필요성 이었다. 왠만한건 orm으로 다 처리할수있어! 라고 한다면 맞다. 그렇게 할수있다. 하지만 기능이 좀더 복잡/세분화 된다면 orm만으로는 한계가 느껴지는 순간이 올것이다. 내가 그러했다, orm 메소드 만으로는 더 이상 세분화하여 db를 다룰수없겠다 라고 느껴져 sql을 배워 로우 쿼리를 날려야 겠다고 느꼇다. 오해하지 않기를 바라는 마음에서 쓰는 거지만 sql을 안쓰는것과 못쓰는것은 천지차이 이다. 내가 못써서 sql로 작성하지 않고 orm메소드로만 개발하는것과 sql을 쓸수있지만 유지보수를 위해 orm으로 개발하는건 내가 개발할수있는 개발의 폭/너비가 날라진다 생각한다. 또한 내가 쓸때 말고도 가끔은 코드를 이해하기 위해서도 sql을 알아야되긴 한다. 이건 3월부터 4월 한달간 공부하려 한다.

test code(jest/cypress)

test code를 작성해야 하나 말아야 하나... 더 나아가 개발을 TDD로 해야하나 말아야 하나에 대한 고민은 정말 정말 많이 했었다. 무조건 빨리빨리가 맞다면 test code없이 그냥 기능만 개발하는게 맞을것이다. 하지만 무조건 빠르기만한건 좋은건 아닐것이다. 물론 완전 고수여서 "난 테스트 코드 없이도 안정성 높은 개발 할수 있는데?" 라고 하는 사람도 있을 테지만 난 그렇게 생각 하지않는다. 특히 팀단위 개발을 해야하는 개발자라면 test code로 안정성을 높히는게 좋을것이다. 사실 난 test code를 짤 줄 모른다. 그렇기 때문에 항상 불안하다. 내 코드가 안정적인가? 디버깅은 빨리 할수있는가? 난 항상 이런 질문을 내 코드에 하게된다. 나는 내가 만든 기능이 안정적이었으면 좋겠다고 항상 생각해왔기에 올해는 꼭 test code작성법을 배우고 더 나아가 TDD방식으로 개발해보고 싶다는 마음이 있다. 그래서 TDD는 5월부터 6월간 배우고 혼자 사이드 프로젝트에 적용하여 개발하고자 해본다.

CI/CD include docker

현재 나는 소규모 스타트업에 종사하고 있다. 그렇다 보니 따로 devOps팀이 있는것이 아니라 내가 서비스의 CI/CD를 맡아서 해야한다(적어도 나는 그런 책임감은 있다). 그래서 우리 파이프라인을 짜는것 부터 시작하여 안정적인 배포 그리고 배포 최적화를 통한 요금줄이기 또한 가능하게 만들고싶다. 사실 CI/CD는 나에게 있어서는 미지의 영역이다. 그래서 필요성은 느끼지만 공부를 해봐야 좀더 어떻게 사용할수있는지 보일것같다... 그리고 배포하여 운영하는 과정에서 필수로 익혀야 하는 docker까지 배워야한다. CI/CD는 조금 길게 잡고 보려고 한다. 6월 부터 8월까지로 생각하며 그안에는 docker, nginx, shell-script 등 여러가지를 포함한 기간이다.

정리
1-2월 -> javascript, git/github
2-3월 -> express, typescript
3-4월 -> typescript, sql
4-5월 -> test code
5-7월 -> CI/CD(docker, nginx, shell-script, ci tool, cd tool)

쓰고보니 좀 빡세게 쓴거 같기도해서 할수있을까? 라고 생각은 조금 들지만 그래도 신입인 만큼 자기 스스로 자신을 푸시하지 않으면 안된다고 생각한다. 공부를 하는 과정에서 얻은것들은 모두와 함께 나누고싶어 꾸준히 포스팅하며 함께 공부하고자 한다.

profile
왜? 라는 질문을 중요시하는 서버 개발자입니다

0개의 댓글