Article Weekly, Issue 29
|Period
2024-07-14
~ 2024-07-20
Modern Good Practices for Python Development
- Python 개발 시 고려해야 할 중요한 사항들 정리
- 버전부터 각종 도구를 제안
How To Know When It’s Time To Go
- 2021년에 63.5세로 약 40년간의 프로그래머 생활을 마치고 은퇴한 프로그래머의 경험을 정리
- 필자
- 능력이 떨어져서가 아니라 1년간 고민 끝에 더 이상 하고 싶지 않다는 것을 깨달음
- 모든 사람은 언젠가는 평생 해왔던 일을 더 이상 할 수 없게 되는 시점에 도달함
- 은퇴뿐만 아니라 그 이전에도 언제든 일어날 수 있음
- 선택한 기술이 사라져서 쓸모없게 되거나, 단순히 코딩에 지치거나, 직업으로서의 코딩에 싫증이 나는 경우가 흔함
- 사람들은 다양한 이유로 일을 그만 둠
- 오래 코드를 작성하며 경력을 유지하기 어려움
- 자신에게 솔직해져야 함
- 프로그래밍을 그만두는 것 외에도 직장을 옮기는 것도 고려해 봐야 함
- 경력과 능력은 상관없음
- 모든 사람은 언젠가 직업, 고용주, 업계, 심지어 전체 경력이 끝나는 시점에 도달함
A Bunch of Programming Advice I’d Give To Myself 15 Years Ago
- 15년 전의 나에게 해주고 싶은 프로그래밍 조언
- 계속 발에 총을 쏘고 있다면, 총을 고쳐라
- 팀에서 시스템에 대해 자주 실수하는 부분이 있으면, 시스템을 개선하여 실수를 줄이는 것이 중요
- 품질과 속도 사이의 균형 맞춰라
- 구현 속도와 정확성에 대한 자신감 사이에는 항상 트레이드오프가 존재함
- 현재 상황에서 버그를 출시하는 것이 얼마나 괜찮은지 자문해 보아야 함
- 이에 대한 답변이 작업 방식에 영향을 미치지 않는다면, 지나치게 경직된 것임
- 톱을 갈고 있는 시간은 거의 항상 가치가 있다
- 도구를 잘 다루는 것이 중요함
- 코드를 빠르게 작성하고, 주요 단축키를 알고, 운영체제와 셸에 능숙해야 함
- 새로운 엔지니어에게서 보이는 가장 큰 그린 플래그 중 하나는 도구 선택과 능숙한 사용에 대한 관심
- 어려움을 쉽게 설명할 수 없다면, 그것은 아마도 우발적 복잡성일 것이고, 이 문제는 해결할 가치가 있다
- 버그를 한 층 더 깊이 해결하려고 노력하기
- 버그를 표면적으로 해결하는 대신, 근본적인 원인을 찾아 해결하는 것이 중요함
- 버그 조사를 위해 히스토리를 파고드는 것의 가치를 과소평가하지 말 것
- 버그의 히스토리를 파악하기 위해 git을 많이 보지 않았는데, 하지만 어떤 버그의 경우에는 이것이 매우 중요함
- 문제가 적합한 경우
git bisect
를 시도해 볼 것- 잘못된 것으로 아는 커밋 하나와 좋은 것으로 아는 커밋 하나가 있는 경우
- 나쁜 코드는 피드백을 주지만, 완벽한 코드는 그렇지 않음. 나쁜 코드를 작성하는 쪽으로 오류를 범할 것
- 디버깅을 쉽게 만들기
- 디버깅을 쉽게 하기 위한 노력을 하지 않으면, 소프트웨어가 점점 더 복잡해짐에 따라 각 이슈를 디버깅하는 데 엄청난 시간을 소비하게 될 것
- 디버깅 시간 중 설정, 재현, 사후 정리에 소요되는 시간을 추적하는 데 주의를 기울일 것
- 팀에서 일할 때는 항상 질문하기
- 배포 주기가 매우 중요함. 빠르고 자주 배포할 수 있는 방법을 신중히 고민해야 함
Story Points are Pointless, Measure Queues
- 스토리 포인트는 완전히 신뢰할 수 없고 혼란을 야기하며, 끊임없이 관련자들에게 그 의미를 상기시켜야 함
- 낮은 포인트 값은 더 정확하지만 높은 포인트 값은 높은 변동성을 가정하며 범위를 나타내며, 정확하게 합산이 불가능함
- 스토리 포인트는 시간을 나타내지 않지만, 속도 메트릭과 결합될 때 사실상 시간을 의미하게 되어, 처음부터 숫자와 범위를 더하는 행위를 방해함
- 소프트웨어 추정은 어렵고, 프로세스의 아웃풋은 인풋에 비해 일반적으로 유익하지 않음
- 팀이 함께 작업을 분석하여 작은 태스크 단위로 나누고 불확실성을 제거하는 것에서 시작
- 태스크 목록은 대기열(Queue)이 되며, 총 태스크 수는 작업량(Job Size)을 나타냄
- Story Point 대신 평균 Task 완료율(Average Task Rate)을 사용하여 추정
- 평균 작업 속도를 기반으로 작업을 추적하고, 작업 완료율을 계산함