12 Hard Truths About Coding I Learned the Hard Way After 10+ Years
I got fired from my first job, took down a database server with a badly written query, and was...
첫 직장에서 해고당하고, 잘못 작성한 쿼리로 데이터베이스 서버를 날려먹고, FAANG 면접에서 탈락했다. 지난 10년 동안 겪은 일들이다.
그 과정에서 코딩에 대해 이것저것 배웠다.
1. 예상 일정은 그냥 추측일 뿐이다 #
문제는 내 추측이 다른 사람들의 추측과 안 맞을 때 생긴다.
2. 실제로 다 만드는 것보다 진행 상황을 보여주는 게 낫다 #
4일이면 끝낼 수 있을 것 같다고? 그렇지 않다. 진행 상황을 보여주려면 작업을 더 잘게 쪼개는 게 훨씬 낫다.
3. 아무도 읽지 않을 긴 문서보다 개념 증명(PoC, Proof of Concept)이 낫다 #
마지막으로 문서를 2~3페이지 이상 읽은 게 언제였나?
아이디어나 프로토타입을 보여주고 싶다면 날것의 Pull Request 하나가 훨씬 빠르다. "문서보다 동작하는 코드."
4. 코딩이 끝났다고 일이 끝난 게 아니다 #
코딩 다음에는 배포, 테스트, 사용자 적응, 고객 지원, 사후 관리가 줄줄이 이어진다.
5. 시니어가 될수록 코딩보다 회의가 많아진다 #
코딩이 좋아서 소프트웨어 엔지니어링을 택했다면, 그 기대는 접어두자.
시간을 잡아먹는 회의들:
- 1:1 미팅
- 데일리 미팅
- 회고
- 스프린트 플래닝
- 얼라인먼트 미팅
- 브레인스토밍 세션
- 포커 추정 세션
- 1년 전에 내가 짰지만 이제는 기억도 안 나는 코드를 건드려야 하는 다른 팀 동료와의 짧은 미팅
등등…
운이 좋은 날이면 방해 없이 1~2시간 코딩할 수 있다.
Photo by Brett Jordan on Pexels
6. 레거시 앱을 다루다 보면 테스트를 사랑하게 된다 #
단위 테스트, 통합 테스트, E2E, TDD, BDD 등 무엇이든 좋다.
코드를 배포하기 전에 무언가가 망가졌는지 알려주는 수단이 있다면 그걸로 충분하다.
7. 아무도 요청하지 않은 대규모 리팩토링을 시작하지 마라 #
이것을 대규모 무요청 리팩토링(Massive Unrequested Refactorings)이라고 부른다.
현재 작업의 일환으로 리팩토링을 하거나(기존 예상 일정을 지키면서), 스프린트 플래닝에 공식적으로 포함시키거나 둘 중 하나다. 그 사이 어딘가는 없다.
8. 도구나 기술에 대한 무의미한 논쟁에 시간을 낭비하지 마라 #
"Entity Framework가 최고야." "아니, 너무 느려." "아니, 저장 프로시저가 최고지."
도구는 그냥 도구일 뿐이다. 그게 바로 우리 개발자들이 고집스럽고 불만이 많다는 평판을 얻는 이유다.
9. 코드 스타일과 모범 사례는 항상 자동화하라 #
사람에게 기계가 할 일을 시키지 마라. 코드 스타일은 기계가 하기에 딱 맞는 종류의 작업이다.
10. 프로젝트는 커뮤니케이션 문제로 실패한다 #
결혼에 대해서도 똑같은 말을 들어봤을 것이다.
이전 직장에서 3~6개월짜리 프로젝트들을 맡았다. 가장 최신의 화려한 도구와 프레임워크를 사용했다. 하지만 일부 프로젝트는 결국 탈선했다.
유일한 변수는 커뮤니케이션 패턴이었다: 기대치, 프로젝트 목표와 범위, 실행 계획, 기술적 문제를 제때 전달하지 못하는 것.
11. 모든 기술 문제는 커뮤니케이션 문제다 #
10번의 결론이다.
이전 직장에서 ASP.NET Core가 처음이었을 때, 코드를 테스트하려다 설정 파일의 연결 문자열을 변경하다가 다른 환경의 데이터베이스를 삭제해버렸다. 실수였다!
잘못된 환경에서 잘못된 설정 파일을 사용한 것이다. 물어보지도 않았고, 아무도 알려주지 않았으며, 코드에 제한이나 안전장치도 없었다.
커뮤니케이션 문제였다.
12. 오늘 가진 문제를 해결하라 #
섣부른 최적화든 그냥 게으름이든, 아직 갖고 있지도 않은 문제를 미리 해결하고 최적화하려 하지 마라. 혹시나 싶어 작성하는 코드(just-in-case code)는 피하라.
이 글은 위 출처의 내용을 바탕으로 작성된 초안입니다. 원문의 의견과 정보를 그대로 전달하며, 별도의 견해를 포함하지 않습니다.

