Niclas Nilsson은 소프트웨어 개발에 대한 깊은 열정을 가진 소프트웨어 개발 코치, 컨설턴트, 교육자, 작가이며, 좋은 설계와 아키텍처를 사랑한다. 그는 factor10의 공통 설립자이며 InfoQ에서 아키텍처 커뮤니티의 리드 편집자이다.
- 블로그 : http://niclasnilsson.se/
- Niclas Nilsson
늦은 오후. 팀은 반복주기에 대한 새로운 기능의 마지막 부분들을 작업하고 있었고 여러분은 방에서 리듬을 거의 느낄 수 있었습니다. 하지만 존은 다소 급한 상태였습니다. 그는 데이트에 늦었지만, 자신의 코드를 마치고, 컴파일하고, 체크인해야지만, 갈 수 있었습니다. 몇 분 후에 빨간 불이 켜졌습니다. 빌드가 망가진 것입니다. 존은 자동화 테스트를 실행할 시간이 없어서 그냥 커밋해버렸고 나머지는 남겨진 사람들에게 던졌습니다. 상황은 이제 변화되었으며 리듬은 잃어버렸습니다. 모든 사람은 이제 버전 관리 시스템에 변경을 하면 자신의 PC에 깨어진 코드가 나타난다는 것을 알아차릴 뿐만 아니라, 팀은 다가온 데모에 대한 준비로 오늘 오후의 많은 시간을 통합에 썼기 때문에 이는 상당히 혼란스러울 것입니다. 이제 누군가가 존의 변경을 되돌리는 시간을 갖기 전에 어떠한 통합도 될 수 없기 때문에 팀의 흐름은 사실상 멈추었습니다.
이러한 시나리오는 너무나 흔합니다. 커밋하고 도망가는 것은 흐름을 끊어버리기 때문에 범죄입니다. 개발자가 자신이 사용하는 시간을 줄이려고 하는 것은 극히 자연스러운 것 중의 하나이며, 다른 사람들의 시간을 낭비하는 것은 결국 순전히 존경받지 못할 일입니다. 하지만, 여전히 어느 곳에서든지 이러한 일이 발생합니다. 왜 그럴까요? 보통 시스템을 올바로 구축하고 테스트를 수행하는 것이 너무 길기 때문입니다.
이러한 이유 때문에 여러분인 아키텍트가 제 역할을 수행하는 것입니다. 사람들이 수행할 수 있는 유연한 아키텍처를 만드는데 여러분이 많은 노력을 쏟고, 개발자들에게 테스트 지향 개발과 같은 애자일 기법을 가르치고, 지속 통합 서버를 설치했다면, 누군가 다른 사람의 시간을 낭비하고 날려버리는 것이 옳은 일이 아니라는 문화가 만들어지기를 역시 원합니다. 그러한 문화를 이루기 위해서 무엇보다도 시스템이 자동화된 테스팅을 위한 건전한 아키텍처를 가진다는 것을 보장할 필요가 있습니다. 이는 개발자의 행위를 바꿀 수 있기 때문입니다. 만일 테스트가 빨리 실행된다면, 개발자들은 더 자주 테스트를 실행할 것이며, 그 자체가 좋은 일이지만, 개발자들이 깨어진 코드로 인해 자신들의 동료들에게 피해보도록 하지 않는다는 것을 의미하기도 합니다. 만일 테스트가 외부 시스템에 의존하거나 데이터베이스를 접속할 필요가 있다면, 이러한 테스트를 재구조화시켜서 mock이나 stub을 사용해서 로컬에서 실행할 수 있게 하거나, 최소한 메모리 데이터베이스를 사용하고, 혹은 빌드 서버가 느리게 이 테스트들을 실행하도록 하십시오. 사람들은 컴퓨터를 기다릴 필요가 없습니다. 왜냐하면 사람이 해야 한다면 빠른 방법을 택할 것이며, 이는 종종 문제를 야기시킬 수 있기 때문입니다.
시스템이 빨리 작업하게끔 시간을 투여하십시오. 흐름을 강화시키고, 독립적으로 작업하는 문제를 해결하고, 더 빨리 개발할 수 있도록 만들게 하십시오. 기능을 대신하는 모조의 기능을 만들고, 시뮬레이터를 만들고, 의존관계를 느슨하게 하고, 시스템을 더 작은 모듈로 나누거나, 여러분이 해야 하는 것 무엇이든지 하게 하십시오. 커밋하고 도망가는 것에 대해서 생각할 이유조차 없게끔 만들게 하십시오.
원문 : 모든 아키텍트가 알아야 하는 97가지 사실 - Commit-and-run is a crime.
반응형
'Homo Architect > Things Every SW Architect Should Know' 카테고리의 다른 글
하드웨어 역시 이해해야 한다. (0) | 2009.08.19 |
---|---|
반복 작업과 싸워라 (0) | 2009.08.19 |
아키텍팅은 균형에 관한 것이다. (1) | 2009.04.07 |
성능은 조기에 고려해야 한다. (0) | 2009.04.03 |
한번에 딱 맞는 해결책은 없다. (0) | 2009.04.01 |