sosa0sa.com

Everything will be Okay in the end. If it not okay, it is not the end.

“대한민국 개발자 희망보고서”

Without comments

  • XP
  • Agile
  • Peopleware
  • Joel on software
  • The art of project management
  • Professional 소프트웨어 개발
  • 우리가 미처 알지 못한 소프트웨어 공학의 사실과 오해
  • Refactoring
  • Test Driven Development

이 다양한 책들의 내용을 한 권으로 묶은 느낌을 준다. 다소 산만하다는 느낌을 주지만 위의 책들을 번역한 책보다는 훨씬 쉽게 읽힌다. 위 책들이 대부분 번역이 잘 되었지만 그래도 원서를 번역했다는 느낌을 버릴 수 없는데 처음부터 우리말로 쓴 책이라 그런지 하루만에 읽었다.

대부분 위에서 본 책들에 있는 내용들이라 쉽게 읽힌 듯하다. 나름 요즘 한창 고민하고 있는 “Produtivity”, “Team”, “Software quality”, “Better testing(automation)”등에 대한 내용이 많이 담겨 있다.

요즘 회사에서도 나름대로 Software quality에 대해 고민을 하고 process를 정립하는 작업이 진행중이다. 하지만 아래 글에 있는 것 중 여전히 “인간”에 대한 투자는 부족한 듯 해서 아쉽다. 이 책을 부장님께 선물해 볼까?

팀 플레이 프로그래밍 활동을 위한 10가지 제안 첫째, 품질을 중시하라. 아직 완전하지 않은 제품을 일정을 이유로 ‘그 정도면 됐어’라고 판단하는 것은 팀 플레이에 사형선고를 내리는 것과 다름없다. 개발자의 자존심은 여지없이 무너지게 된다. 품질은 팀 전체의 책임이라는 의식을 심어주어야 한다. 사소한 결함이라도 용납하지 않은 분위기를 만들어야 한다. 둘째, 의사소통을 활성화하라. 어떤 프로젝트 팀은 분위기가 숙연하리만큼 조용했다. 팀원들은 묵묵히 자기 일만 수행할 뿐 서로 말을 건네는 모습을 보기 어려웠다. 회의를 할 때도 말을 시키기 전에는 절대 말을 하지 않았다. 이런 팀은 겉으로 보기에는 잘 움직이는 것처럼 보이지만 각자 알아서 진행하기 때문에 공통된 합의사항이 없다. 문서와 표준은 다르게 작성되고 이슈사항은 해결되지 못하고 잠복하게 된다. 정기적으로 짧은 미팅(예를 들면 stand up 미팅)을 통해 신뢰를 형성하고 이슈사항을 논의하기 위한 회의는 철저히 준비해서 진행해야 한다. 셋째, 동료검토 활동을 자주 수행하라. 동료검토는 분위기를 잘 형성하면 효과가 크다. 산출물과 코드에 대한 정기적인 검토 활동을 통해 팀 차원에서 결함을 예방하고 발견하는 활동을 강화해야 한다. 넷째, 짝 프로그래밍을 적절히 활용하라. 새로운 개발자가 프로젝트 팀에 합류하였거나 신기술을 적용하는 경우에 짝 프로그래밍을 적극적으로 활용하라. 좋은 코드가 생성되어 효과 만점일 뿐만 아니라 팀원간의 상호신뢰를 높이는 계기가 된다. “짝 프로그래밍은 매운 고추를 먹는 것과 같다. 처음에 먹으려 할 때는 매운 것에 익숙하지 않아서 잘 먹으려 하지 않지만 한 번 맛을 들이기 시작하면 그 매웃 맛을 더 좋아하게 된다.”는 어느 개발자의소감을 새겨 듣자. 다섯째, 코드를 공동 소유하고 관리하라. 팀의 모든 개발자가 소스코드에 대한 공동책임을 져서 언제 어디서나 코드를 수정해서 더 좋게 만들 수 있게 하라. 가급적 CVS, sourcesafe등 소스관리 툴을 사용하여 관리하라. 여섯째, 주석처리를 반드시 하라. 주석처리는 상대방을 배려하는 활동이다. 주석처리는 개발자의 기본 예의이며 인수인계와 유지보수를 위해 친절하게 가이드해야 한다. 일곱째, 자동화하라. 팀 차원에서 자동화할 수 있는 일은 찾아서 자동화하라. 테스트, 산출물 작성, 빌드등을 자동화할 수 있는 도구를 도입하고 프로그램을 작성하라. 여덟째, 팀을 지속시켜라. 성공적인 팀은 계속 함게 하도록 하라. 일반적으로 대규모 조직에서는 사람을 마음대로 넣다 뺏다 할 수 있는 단위로 보는 경항이 있다. 프로젝트가 끝나면 팀원들은 리프레쉬도 없이 전부 ‘자원 저장소’로 돌아간다. 소위 말하는 ‘인력 풀’이다. 이 접근 방식은 단기적으로는 효율성을 올릴 지 몰라도 조직 전체의 효율성은 저하시킨다. 소프트웨어의 가치는 지식이나 기술 이외에 좋은 사람들과 함께 성취하는 것을 통해서도 만들어진다. 아홉째, 개인들에게 엘리트 의식을 심어주어라. 팀은 개인으로 구성된다. 팀원들이 편하게 일하게 하기 위해서는 독자적인 의식이 필요하고 그래야 팀이 결속된다. 팀원들의 개성의 발휘와 자부심은 팀 프로그래밍을 위한 필수 요소이다. 열째, 이벤트를 실시하고 충분한 휴식을 제공하라. 영화보기, 회식, MT 등을 통해 팀원들간의 신뢰를 증진시켜라. 비공식적인 의사소통이 잘 되어야 업무 진행이 원활하다. 팀원들의 초과근무에도 관심을 기울여 인간적인 삶이 침해당하지 않도록 적절한 휴식을 보장해야 한다.

Written by cychong

May 29th, 2007 at 10:14 pm

Posted in Life, productivity

Leave a Reply