기술 공식 문서에는 없는 현업 개발자의 실질적 문제 해결의 글쓰기

상반기 동안 나의 개발 블로그에 담긴 이야기를 다시 살펴보려 한다. 올해 초 다시 글쓰기를 시작했던 그 때로부터, 새롭게 배운 기술과 만난 사람들, 그리고 그 경험들이 어떻게 나의 글쓰기를 영향을 끼쳤는지를 고찰해보고자 한다.

글을 쓸 때 가장 어려웠던 점은 ‘글감’을 찾는 것이었다. 억지로 새로운 글감을 만들어내기보다는 업무를 통해 획득한 경험과 지식을 베이스로한 글감을 찾아내어 갔다. 업무에서 겪은 트러블 슈팅, 기억에 남는 사건들, 개발자들이 공감할 수 있는 경험들을 바탕으로 글을 써 나갔다. 이전에는 책의 요약이나 강의 내용을 다룬 글들도 있었지만, 그보다는 공식 문서에는 없는, 실질적인 문제를 해결하는 과정에 초점을 맞추었다.

대부분의 토이 프로젝트에서는 ‘해피 케이스’ 위주로 다루곤 한다. 그것이 바로 토이 프로젝트를 ‘토이’라고 부르는 이유일수도 있겠단 생각이 든다. 물론 토이프로젝트가 호기심과 재미, 창의성에 중점인 다른점이 있다는 것은 공감한다. 하지만 현업에서는 다양한 제약 조건과 비즈니스 목표, 보안 문제, 고객의 규모 등 많은 변수들이 존재한다. 그런 다양한 한계를 극복해 나아가기 위해, 실제 업무 상황에서 겪는 다양한 문제들과 그 해결 과정을 담은 글을 쓰려고 노력하였다.

이런 경험을 공유하는 것은 다른 개발자들에게도 큰 도움이 될 것이다. 나도 다른 분들의 경험 공유글에서 많은 도움을 받았기 때문이다. 이런 공유의 과정 속에서, 나 자신도 많은 것을 배우고 있다는 사실을 깨달았다. 앞으로도 나는 이런 방향성을 계속 유지하며, 더 다양하고 깊이 있는 경험을 통해 내 블로그를 발전시켜 나갈 것이다. 이렇게 블로그 글쓰기를 통해 나 자신의 성장을 도모하고, 동시에 독자들에게도 훗날 도움이 되는 내용을 제공하려는 것이 나의 글쓰기 목표이다.

다음은 이번 2023 상반기에 작성한 글들을 간단히 요약해 보았다.




<git stat를 이용하여 코드 리뷰 요청 전 커밋 사이즈 관리하기 >
  • 커밋 크기가 크면 리뷰어에게 부담이 될 뿐만 아니라, 버그나 오류를 발견하기도 어렵다. 이런 문제를 해결하기 위해 커밋 크기를 미리 알 수 있도록 도와주는 도구가 필요하다는 생각이 들었다. 이에, Git의 로컬 변경 사항을 분석하는 쉘 스크립트를 만드는 내용을 소개한다.



<백엔드 개발자에게 원하는 걸 말했는데, 왜 대화가 안될까? >
  • 커뮤니케이션 어려움을 해결하기 위한 이 글이다. 대화의 중요성과 공감대 형성에 초점을 맞추어 작성했다. 특히 문제 해결을 위한 효과적인 의사소통과 공동 이해를 통해 프로젝트가 성공적으로 진행될 수 있고, 이것이 실제로 개발자의 필수 역량이라는 것을 강조한다. 더불어 해결하기 어려운 상황을 예시로 들며 어떻게 에스컬레이션 할 수 있는지까지 소개하는 글이다.



<설치된 라이브러리가 많은 프로젝트의 npm registry 변경하기 with package-lock.json 이해 >
  • N년 동안 성숙해온 프로젝트의 npm registry를 변경하는 경험을 공유한다. 간단한 작업으로 생각될 수 있지만, 의존성 변경으로 인한 코드 수정과 리그레션 테스트가 필요한 점 등 예상치 못한 어려움이 도사리고 있다. 라이브러리를 동일한 버전으로 유지하면서 설치하는 과정도 공수가 크기 때문에, 이에 대한 실질적인 해결책을 제시한다. 이 작업에 대한 경험과 트러블슈팅 과정을 통해 얻은 실질적인 지식을 공유하는 것이 이 글의 목표이다.



<Yarn PnP 사용시 IntelliJ에서 ESLint 적용하기 >
  • Yarn PnP를 사용하며 eslint를 적용하는 데 어려움을 겪는다면 이 글이 도움이 될 것이다. Yarn PnP의 패키지 및 종속성 관리 방식이 npm과 다르기 때문에, 이로 인해 일부 도구와 라이브러리, 특히 eslint는 추가적인 설정이 필요함을 포함하는 글이다.



<타입스크립트 예약어 중에 식별자(변수명, 함수명 등)로 사용할 수 있는 예약어가 있다? >
  • 타입스크립트에서 예약어의 의미와 예약어 처리 방식을 설명한다. 타입스크립트의 예약어는 일반적으로 Reserved words와 Contextual keywords로 분류되며, 각각 항상 예약어로 취급되거나 특정 문맥에서만 예약어로 취급되는 단어들이다. 그러나 식별자로서의 사용을 위해 예약어를 어떻게 대체하거나 조작해야 하는지에 대해서도 이야기한다.
<TypeScript의 강력함: Discriminated Union과 as const 활용하기 >
  • Discriminated Union을 통해 다양한 타입에 대한 처리를 효율적으로 할 수 있으며, ‘as const’를 통해 값의 변경을 방지하고 더 정확한 타입 추론이 가능함을 소개한다.



<Promise를 이용한 비동기 순차 처리와 병렬 처리 핸들하기 >
  • JavaScript에서 비동기 작업을 처리할 때 상황마다 다른 방식을 취해야 함을 소개하는 글이다. 더불어 멱등성의 개념과 이를 주의해야하는 상황을 통해, 각각의 프로미스가 성공하거나 실패한 경우 어떻게 대응해야 하는지 소개한다.




쿠팡 파트너스 활동을 통해 일정액의 커미션을 제공받을 수 있습니다.