Velog에 글을 작성하게 된 배경

여느때와 같이 구글에서 평소에 궁금하거나 처음보는 용어들을 검색하면서 다른 사람들의 글을 읽고 내심 '대단하다'라고 생각만했던 내가 이번 기회에 velog에 글을 정리 하기로 결정했다.
평소 백엔드 프로그래밍에 관심이 많았기에 여느 때와 같이 구글에서 생각나는 키워드로 검색을 하던 중, velog포스트 내에서 백엔드 관련글을 발견했는데 깊은 감명을 받았다. 글을 읽으면서 '정말 열심히 하는분이구나.. 배워야겠다'라고 생각하고 오늘 부터 바로 글을 작성해보고자 결정하게 되었다.

기억보다는 기록

어느정도 프로그래밍을 배우고나서 작은 프로젝트를 진행하면서 느끼게 된 일이지만 프로그래밍은 정말 무궁무진하고 계속해서 새로운 기술이 나오고있는 걸 보면서 대다하다고 느꼈다. 하지만 동시에 걱정도 앞서게 되었다. 프로젝트를 진행 하던 도중 문제가 발생하면 검색으로 발견하게 된 블로그글, 포스트, stackoverflow, 각종 documentation을 참고하여 프로젝트를 어느정도 실행 가능한 상태로 만드는 것이 가능했으나 근본적인 문제가 해결 되는 것은 아니었고 그 당시의 상황만 해결 하는 정도였다. 프로젝트를 진행하는 도중에 수 많은 버그와 문제에 봉착했지만 그 때마다 google 검색을 통해 문제를 해결 하는게 일상이었다. 매일 매일 프로그래밍 공부를 꾸준히 하면 좋았겠지만 어느 정도 시간이 지나자 처음에 있던 그 열정은 조금씩 식어갔고 새로운 기술을 한번 해보거나 알아보기 보다는 그저 눈으로 보면서 '아, 대충 이런거구나' 하며 시간을 보내자 어느새 평소에 몇 백번씩 썼던 키워드나 cli들이 생각이 나지 않아 위기감을 느꼈다. 가장 기본이 되는 환경설정이나 작업을 시작하기전에 정해야 할 것들도 주먹구구식으로진행 하다보니 같은 문제가 시간이 지나도 발생했다. 다행히 github에 있는 프로젝트의 코드들을 참고하면서 문제를 해결 하긴 했지만 역시 큰 문제라고 생각했다. 이후로나는 과거의 기억에 의존하기보다는 계획을 문서화하고 패턴을 정형화하여 이 같은 문제를 해결 해봐야 겠다고 생각했다.

우연히 발견하게 된 포스트

Velog내에서 포스트를 둘러 보던 중 백엔드프로그래머가 알아야 할 정보를 정리한 글을 보고 관심있게 보게 되었다. 글을 읽으면서 작성자에게 많은 것을 느꼈고 나에게 큰 동기 부여가 되었다. 이러한 분들이 많이 계신것이 고맙다. 작성자분은 생각보다 많이 젊은(?)나이에도 불구하고 나보다 프로그래밍에 대한 고찰, 접근, 마음가짐 등이 여느 시니어 못지 않게 느껴지는 것을 보고 적잖은 감화를 받았다. 이 글을 쓰게 된 것도 그분 덕(?)이라고 볼 수 있다. 이 글을 통해 감사인사를 전한다. (보시게 될진 모르겠지만 감사합니다. (__))

프로그래밍의 사전준비

프로그래밍을 하기전에 준비해야 할 것들은 무엇이 있을까?

나는 프로그래밍을 하면서 특별한 계획없이 작업을 진행해왔다. 특별히 내가 하는 일에 대해서 문서화를 해야 할 필요를 느끼지 못했고 물 흐르듯이 해야 할 일들을 진행했다. 간혹 누락되는 것이 있음을 발견할 때는 문제가 생길때나 과거에 했던 방법이 기억나지 않을때 였다.
필자의 경우 버전관리도구로는 Github, 언어로는 Python, Framework로는 Django, 서버어플리케이션 배포는 AWS, DB는 Postgresql, API는 DjangoRestFulAPI를 사용했다.
이러한 일련의 필요한 환경셋팅을 딱히 정하지 않고 마음가는대로 진행을 하다보니 가끔 누락하는 일도 있고 사용하는 것만 사용하게 되고 새로운 지식에 대한 기술부채가 쌓이기 쉬웠다. 전문용어나 프로그래밍에서 전반적으로 자주사용되는 약어들도 그때마다 찾아보는 방식에 문제를 느끼던 참이었다. 그런 도중에 잘 정리 된 글을 보고나서 내가 당연하게 생각하고 진행 해 왔던 일들을 가시화 해보니 훨씬 더 실수가 적어지고 어떻게 프로젝트를 진행하게 될 것인지 일목요연해졌다.
내가 봤던 내용은 다음과 같다.

참고로 했던 포스트는 여기이다.

[포스트 내용 일부분]
버전 관리 시스템으로 Git을 사용하기 시작했다.
Git 웹호스팅 서비스로 GitHub를 사용하기 시작했다.
GitHub Issues와 Projects로 이슈 트래킹을 시작했다.
개발 프로세스와 브랜칭 모델을 정립했다.
HTTP API 아키텍처 기반으로 API 스펙을 디자인하기로 했다.
JSON을 직렬화 포맷으로 결정했다.
Authorization 헤더로 인증 정보를 명시하기로 했다.
인증 스키마에 JWT 기반의 Bearer를 사용하기로 했다.
API 스펙을 정의했다.
GitBook으로 API를 문서화했다.
Python + Sanic 조합으로 WAS를 개발하기로 했다.

계획의 문서화

  • 어떤 버전관리 도구를 사용할 것인가?
  • 프로젝트를 진행 할 때 사용할 계획표는 어떤 툴을 사용할 것인가?
  • 어떤 방식으로 프로젝트를 계획을 짤 것인가?
  • API의 제공은 어떤 방식으로 진행 할 것인가?
  • 사용자 인증방식은 어떤 방식을 사용할 것인가?
    위와 같은 여러 방식을 문서화 해놓고 보는 것과 머리속으로 코딩을 진행하는 것에는 큰 차이가 있음을 느꼈다.

마치며...

  • 앞으로 얼마나 자주 글을 쓰게 될지는 모르겠지만 눈으로만 보고 끝나는 것이 아니라 항상 간단한 예제코드라도 직접 써보고 매일 기록하는 습관을 들이는 것이 중요하겠다고 느꼈다. 앞으로도 더 코딩공부에 정진하고 프로그래밍에 대한 열정도 새로 해야겠다.