훌륭한 프로그래머 되는 법
날짜: 2019.12.11 ~ 2019.12.12
Part4. 일 끝내기
목차
더 열심히보다는 더 현명하게
- 문제를 해결할 때 하나의 방법에 몰입하는 것은 위험하다. 목표를 달성하기에 더 쉽고 직접적인 방법이 많다. 시간낭비 하지 마라
-
생산적인 프로그래머 되기 위해서는, 더 열심히 하기보다 더 현명하게 일하는 방법을 터득해야 한다. 다음은 그 방법이다
- 이미 라이브러리가 있거나 어딘가의 코드를 재활용 할 수 있다면 적극적으로 이용하라. 또 다시 작업하는 것은 시간낭비일 뿐이다
- 다른사람이 거들어줄 수 있거나 훨씬 잘할 수 있다면 그에게 부탁하는 것이 좋다
- 해야만 하는것만 하라. 프로토타이핑때 테스트 코드를 작성하거나 필요없는 코드에 리팩토링 하는 것은 시간낭비다
- 여러 설계 방안 가운데 어떤것을 선택해야 할지 모르겠을때는 최선책을 고르기 위해 시간낭비 하지 마라. 일정 시간 타이머를 맞추고 해당 시간에 한가지 방법만을 고려해 보라.
- 작업 목록의 우선순위를 정하고 가장 중요한 일부터 진행하라
- 정말 필요한 일을 하라. 목표가 자동차를 만드는 것이라면 소나타면 충분하다. 롤스로이드를 만들려 노력하지 마라
- 작업은 한번에 하나씩만 수행하라
- 코드는 작고 간결하게 유지하라. 그래야 유지보수하기 편하다
- 문제를 미루고 쌓아두지 마라. 문제가 작을때 해결해야 편하다. 일이 눈덩이만큼 쌓일 경우에 이거는 처리하기 곤란해질떄가 있다
- 자동화하라. 자동화는 시간을 상당부분 절약해준다
- 의사소통 하라. 적절한 질문을 하는 방법을 배우는 것이 좋다
- 지쳐 나가떨어지지 마라. 번아웃 이후에는 다시 돌아오기 힘들다
- 강력한 도구를 찾아라. 업무 흐름에 가속성을 더해줄 것이다.
끝나야 끝나는 것
- 일이 끝났다는 것을 알기 위해서는 완료 상태란 어떤 것인지, 그리고 완료 상태에 얼마나 가까운지를 현실적으로 파악하는 것이다. 완료 상태를 모르면 필요 이상의 일을 진행하거나, 이를 완결 짓지 못하고 나중에 다시 일을 해야 하는 경우가 생길 것이다. 완료 상태가 무엇인지 아는것이 무엇보다 중요하다
-
STEP.1 분해하기
- 완료 상태를 정의하기 위한 첫 번째 단계는 작업 내용을 정확히 파악하는 것이다. 크고 복잡한 업무를 맡았다면 일을 시작하기 전에 더 작고 이해할 만한 부분으로 일을 나눈다. 이는 더 정확하게 진행 상황을 판단할 수 있다
- 분해 작업이 어렵다 하더라도 이를 미루면 안된다. 초기에 분해 작업을 수행하지 않으면 막바지에 이른 상황에서 집중하지 못한 상태로 수행하게 될 것이다
-
STEP.2 완료 정의하기
- 완료 상태를 정의해야 한다. 즉 성공 상태가, 완결된 소프트웨어가 어떤 모습인지를 알아야 한다. 그래야 작업을 더 많이 하거나 덜하는 경우를 없앨 수 있다
- 무엇인 성공인지 파악하기 전까지는 코딩 작업을 시작해서는 안된다. 모르겠다면 완료 상태가 무엇인지 정의하는 것이 첫번쨰 업무이다
- 코딩 작성이 완료 되었다면 작동함을 증명하기 위해서 테스트 코드를 꼭 작성하라. 이는 일이 정상적으로 끝났음을 증명하는 것이다
-
STEP.3 그냥 실행하라
- 완료 지점까지만 작업하라. 필요한 것보다 많은 일을 하지 말라
- 코드가 충분하다면 그만 멈추라. 코드가 완벽하지 않아도 된다. 코드가 잘못된 방향으로 되었더라면 결국에는 리팩토링을 요구할 것이다. 미리 하는 것은 노력 낭비 일수 있다
교훈 얻기
- 개발자는 혼자가 아니다. 주변의 동료 및 개발자를 충분히 이용 하자
- 자신을 감시하라. 자신의 코딩이 잘못되는 것을 항상 살펴보고 조심해야 한다. 이를 위해 동료를 이용해야 한다. 자신이 누군가에게 의무감을 갖도록 하라
- 산을 올라가기 전 우선 한 발짝 물러서서 경로를 계획해야 한다. 마찬가지로 작업을 진행하기 전에 경로를 계획해야 한다. 문제에 접근해본 첫 번째 길이 가장 최선의 방법일 경우는 드믈다. 적어도 한가지 이상의 접근법을 고려해 본 뒤 일에 착수하라