우리의 소프트웨어 알고리즘

긱 뉴스에서 읽은 글인데 특이한 개발방법론을 소개하고 있어 두번을 읽었다.

그의 방법

  • 하루를 시작할 때 기능 작업을 시작.
  • 하루가 끝날 때까지 완료하지 못하면 모두 삭제하고 다음 날 다시 시작.
  • 작성한 단위 테스트는 유지 가능.
  • 며칠 후에도 기능을 구현하지 못하면, 그 기능을 가능하게 할 기반, 인프라 또는 리팩토링을 생각하고 이를 구현한 후 기능으로 돌아옴. 이 방법은 90년대 후반과 00년대 초반의 익스트림 프로그래밍 운동과 유사함.

위 방법은 통할거 같은 생각이 들었다. 하지만 하루를 넘어가는 (8시간 이상) 작업은 티켓을 이미 작게 나눴기때문에 거의 발생하진 않음. 그래서 주니어에겐 특히 유용할거 같다는 생각이 많이들었음.

주니어 엔지니어에게 주는 조언: 문제를 해결하고 코드를 브랜치에 저장한 후 다시 작성.

  • 노트북이 고장난 후 이 방법을 우연히 발견. 재작성은 초기 구현의 25% 시간만 소요되었고 결과는 훨씬 나아짐.
  • 1.25배의 시간으로 2배 더 높은 품질의 코드를 얻을 수 있음. 장기 유지보수가 필요한 프로젝트에 유용.
  • "매일 다시 시작" 방법은 이보다 더 극단적. 재작성할 때마다 더 매끄러운 해결책을 찾게 됨.

"양이 질을 가진다"

  • 스탈린의 인용구가 소프트웨어 엔지니어에게 적용됨. 주니어 엔지니어에게는 첫 10만 줄의 코드가 필수적.
  • "매일 다시 시작" 방법은 10만 줄을 더 빨리 작성하게 도움.
  • 같은 문제를 반복해서 해결하는 것이 패턴을 기억하는 데 유익함.
  • 5천 줄의 완벽한 코드로 주요 패턴을 모두 볼 수 있음. 나머지 9만 5천 줄은 반복을 통해 뉴런을 재배치함.

위 두가지를 주니어에게 적용해볼 수 있을거 같음.