<div>Technical Coach인 Kent Beck이 쓴 프로그래밍의 대가들이 업무를 할 때 어떤 패턴으로 <span style="font-size:9pt;line-height:1.5;">일을 하는지에 대해 쓴 글입니다.</span></div> <div><span style="font-size:9pt;line-height:1.5;">레딧으로 보게되어서 발번역이지만 도움이 될까 공유합니다. 아직 프로그래밍 걸음마도 떼지 못한 제가 보기에는 조금 나중에 읽어야 할 글이지만요.</span></div> <div>번역이 부족하니 반드시 본문을 참조하시기 바랍니다! (번역 보충해주시면 감사하겠습니다.)</div> <div><br></div> <div>======================================================================</div> 프로그래밍의 대가들을 봐온 수년간, 나는 그들의 작업 흐름에서 어떤 공통된 패턴들을 봐왔다. <div>솜씨가 있는 일반 프로그래머들을 코칭해온 수년간 나는 그러한 패턴들이 없는 것을 봐왔다. </div> <div>나는 그 패턴을 도입하는 것이 무슨 차이를 만드는지 알 수 있었다. <div><br></div> <div> 효과적인 프로그래머가 지구에서 그들의 소중한 시간에서 최상의 것을 얻어내는 방법이 여기 있다.</div> <div><br></div> <div> 여기있는 주제는 당신의 사고를 확장시킬 것이다. </div> <div>일반 프로그래머는 한 번에 좀 더 많은 문제를 해결함으로써 좀 더 큰 문제를 해결하는 방법을 알고있다. </div> <div>프로그래머의 대가는 한 번에 더 적은 문제를 해결함으로써 일반 프로그래머가 해결하는 문제보다 더 큰 문제를 해결하는 방법을 알고 있다. </div> <div>세분화가 현명한 방법이다. <span style="line-height:1.5;">분할된 솔루션들을 통합시키는 것은 문제들을 함께 해결하기 보다 더 작은 문제가 되도록 하기 때문이다.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">*시간</span></div> <div><span style="font-size:12px;line-height:1.5;">- 얇게썰기.</span></div> <div><span style="font-size:12px;line-height:1.5;"> 큰 프로젝트를 맡아라, </span></div> <div><span style="font-size:12px;line-height:1.5;">그 프로젝트를 얇은 조각들로 썰어라, </span></div> <div><span style="font-size:12px;line-height:1.5;">그리고 그 조각들을 너의 상황에 맞게 재배열하라. </span></div> <div><span style="font-size:12px;line-height:1.5;">나는 항상 프로젝트들을 더 잘게 세분화할 수 있었다. </span></div> <div><span style="font-size:12px;line-height:1.5;">그리고 나는 다른 곳에서도 필요한 조각들의 새로운 치환법을 항상 발견할 수 있었다. (다른 곳에도 통하는 조각들)</span></div> <div><br></div> <div><span style="font-size:12px;line-height:1.5;">- 한 번에 한 가지 것만.</span></div> <div><span style="font-size:12px;line-height:1.5;"> 우리는 너무 효율성에 집중해서 오버헤드를 줄이려는 시도로 피드백 하는 주기를 줄이게 된다. </span></div> <div><span style="font-size:12px;line-height:1.5;">이것은 예상비용이 우리가 피하려는 오버헤드 주기보다 더 크게 되어 디버깅하기 어려운 상황을 만든다.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">- 쉬운 변화들(?). (change가 정확히 뭘 뜻하는지 모르겠네요..)</span></div> <div><span style="font-size:12px;line-height:1.5;"> 어려운 변화에 직면했을 때, 처음에 그것을 쉽게 만들어라 (경고, 이것은 어려울지도 모릅니다.), </span></div> <div><span style="font-size:12px;line-height:1.5;">그리고 나서 쉬운 변화를 만들어라. (예를들어 잘게썰기, 한 번에 한가지 것, 집중, 고립). 잘게써는 것의 예시(?).</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">- 집중</span></div> <div><span style="font-size:12px;line-height:1.5;"> 만약 당신이 몇가지 요소들을 변화시키려 한다면, 그 변화가 오직 한 가지 요소에만 발생하도록 처음에 코드를 재배열해라.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">- 고립</span></div> <div><span style="font-size:12px;line-height:1.5;"> 만약 당신이 오직 한 요소의 한 부분만을 바꾸려 한다면, 전체 하위 요소가 변화하도록 그 부분을만을 추출해라.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">- 기준 측정</span></div> <div><span style="font-size:12px;line-height:1.5;"> 그 프로젝트의 현재 상태를 측정함으로써 프로젝트를 시작하라. </span></div> <div><span style="font-size:12px;line-height:1.5;">이것은 여러 것들을 수정하는 것을 시작하는 우리의 공학도의 본능과 반대되지만, </span></div> <div><span style="font-size:12px;line-height:1.5;">당신이 기준치를 측정했을 때, 당신은 실제로 여러 것들을 수정하고 있다는 것을 알게 될 것이다.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">*학습</span></div> <div><span style="font-size:12px;line-height:1.5;">- Call your shot(너가 짠 것을 회상해라?)</span></div> <div><span style="font-size:12px;line-height:1.5;"> 당신이 코드를 만지기전에 무엇이 일어날지 정확하게 예측해라.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">- 구체적인 가설.</span></div> <div><span style="font-size:12px;line-height:1.5;"> 프로그램이 잘못 행동하고 있을 때, 수정하기 전에 너가 생각한 것이 틀린 것이라고 정확하게 말해라. </span></div> <div><span style="font-size:12px;line-height:1.5;">만약 두가지 이상의 가설을 가지고 있다면 차이가 날 수 있는 진단 방법을 찾아라.</span></div> <div><span style="font-size:12px;line-height:1.5;"><br></span></div> <div><span style="font-size:12px;line-height:1.5;">- 관계없는 세부사항을 제거하라.</span></div> <div> 버그에 대해 보고할 때, 가장짧은 복제 단계를 찾아라. </div> <div>버그를 격리시키려할 때, 가장 짧은 테스트 케이스를 찾아라. </div> <div>새로운 API를 사용하려 할 때, 가장 기초 예시부터 시작하라. </div> <div>"모든 것이 중요할 수는 없다."라는 말은 잘못된 상황에서는 비싼 추측이다.</div> <div> -> 예시, 모바일에 있는 버그를 보아라, 그것을 curl로 복제하라.</div> <div><br></div> <div>- 다양한 scales (scale의 의미를 잘 모르겠네요)</div> <div> 자유롭게 scales 사이를 움직여라. </div> <div>아마도 이것은 테스트 문제가 아니라 디자인 문제이다. </div> <div>아마도 그것은 기술 문제가 아니라 사람 문제이다.<span style="font-size:9pt;line-height:1.5;">(가짜같지만, 이것은 항상 사실이다.)</span></div> <div><br></div> <div><br></div> <div>*Transcend Logic(초월논리?)</div> <div>- Symmetry(대칭)</div> <div>거의 같은 것들은 똑같은 부분과 명확하게 다른 부분으로 나뉘어질 수 있다.</div> <div><br></div> <div>- Aesthetics(미학)</div> <div> 아름다움은 등산하기에 아주 좋은 경사이다. 그것은 또한 무시하기에는 자유롭게 하는 경사이다. </div> <div> (예시. 여러가지 기능들을 한 개의 거대한 집합으로 구성하는 것)</div> <div><br></div> <div>- Rhythm(리듬)</div> <div> 올바른 순간이 올 때까지 기다리는 것은 에너지를 보존하고 어지러운 것을 피하는 것이다. 움직일 시간일 때 집중력있게 움직여라.</div> <div><br></div> <div>- Tradeoffs(교환)</div> <div> 모든 결정들은 교환에 지배를 받는다. 오늘 어떤 답을 골라야 할 지 아는 것 보다는(또는 어제 당신이 골랐던 답) </div> <div>그 결정이 의존하는 것을 아는 것이 더 중요하다. </div> <div><br></div> <div><br></div> <div>*위험</div> <div>- Fun list</div> <div> 관계없는 아이디어가 떠올랐을 때, 그것들을 기록하고 빠르게 업무로 돌아가라. </div> <div><span style="font-size:9pt;line-height:1.5;">너가 쉬어야 하는 지점에 왔을 때, 이 목록들을 다시 훑어보라.</span></div> <div><br></div> <div>- Feed Ideas(아이디어에게 밥주기)</div> <div> 아이디어들은 겁먹은 작은 새들과 같다. </div> <div>너가 그 작은 새들을 겁주어 쫓아버리려 한다면, 그들은 당신 주위로 오지 않을 것이다. </div> <div>너가 아이디어가 있을 때, 그것에게 조금씩 먹이를 주어라. </div> <div>가능한한 빠르게 그것이 틀렸다는 것을 입증해라, but from data not from a lack of self-esteem.<span style="font-size:9pt;line-height:1.5;">(자존심 부족이 아닌 자료로 틀린 것을 알아내어라?)</span></div> <div><br></div> <div>-80/15/5</div> <div> 당신의 시간의 80%를 저위험/합리적인 보수의 일에 써라. </div> <div>당신의 시간의 15%는 관련된 고위험/높은 보수의 일에 써라. </div> <div>당신의 시간의 5%는 보수와 상관없이 당신을 재미있게 하는 것에 써라. </div> <div>다음 사람에게 너가 하는 80% 일을 하는 법을 가르쳐라. </div> <div>누군가가 너의 일을 이어받을 준비가 되었을 즈음에, </div> <div>당신의 15% 실험중의 하나 (또는 덜 빈번하게 한것들, 당신의 5% 실험중의 하나들)가 성과가 있을 것이고 당신의 새로운 80%가 될 것이다. 반복해라.</div> <div><br></div> <div><br></div> <div>*결론</div> <div> 이 글은 시간을 관리하고 학습을 늘림으로써 위험을 제거하는 것부터 </div> <div>너의 모든 머리를 쓰고 아이디어를 빠르게 분류함으로써 세심하게 위험을 무릅쓰는 것까지에 관해서 쓰였다.</div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.