최근에 개발자 문화에 대해서 이야기를 했어야 하는데… 잘못 알고 엄한 소리만 하다가 끝난 적이 있습니다. 그래서 이 글은 그 발표에 대한 반성을 하고자 합니다.
그런데, 개발자 문화라는 건 뭘까요? (우걱우걱 먹는건가요?) 그래서 먼저 당연히 구글신을 통해서 몇가지 검색을 해봤습니다.
- 좋은 개발 문화는 회사가 만드는가?(https://brunch.co.kr/@genie7pe/11)
- 개발자들이 쉼쉴 수 있는 문화(http://www.zdnet.co.kr/column/column_view.asp?artice_id=20141020083810)
- 개발회사의 문화란 어떻게 만들어지는걸까?(https://curiouspaul.wordpress.com/2012/04/27/%EA%B0%9C%EB%B0%9C-%ED%9A%8C%EC%82%AC%EC%9D%98-%EB%AC%B8%ED%99%94%EB%9E%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%A7%80%EB%8A%94-%EA%B1%B8%EA%B9%8C/)
- 개발 문화? 개발자 문화?(http://smilejp.tistory.com/79)
위의 링크들은 제가 구글에서 “개발자 문화”라는 키워드로 나온 검색결과 첫페이지에서 긁어온 것입니다. 읽어보면, 개발자 문화라는 건, 일종의 개발 프로세스하고도 다아있습니다.
그런데, 개발자 문화라는 건 진짜로 개발프로세스만 말하는 것일까요? 물론, 아니라는 건 아닙니다. 우리가 일반적으로 듣고 싶어하는 것도, git/github 을 이용한다든지, 코드를 짜고 코드리뷰를 하고, 자동화된 테스트와 쉬운 deploy 입니다.
어떻게 보면, 우리가 말하는 개발자 문화는 조엘스포스키의 12단계와도 닫아있습니다.
The Joel Test
- Source Control(소스 컨트롤)을 사용하십니까?
- 한번에 빌드를 만들어낼 수 있습니까?
- daily build(일별 빌드)를 만드십니까?
- 버그 데이타베이스를 가지고 있습니까?
- 새로운 코드를 작성하기 전에 버그들을 잡습니까?
- up-to-date(최신) 스케줄을 가지고 있습니까?
- spec(설계서)를 가지고 있습니까?
- 프로그래머들이 조용한 작업환경을 가지고 있습니까?
- 돈이 허락하는 한도내의 최고의 툴들을 사용하고 있습니까?
- 테스터들을 고용하고 있습니까?
- 신입사원들은 면접때 코드를 직접 짜는 실기시험을 봅니까?
- hallway usability testing(무작위 사용성 테스팅)을 하십니까?
사실 위의 단계에서 몇가지를 더 추가할 수 있습니다. 개인적으로는
- 자동화된 테스트를 보유하고 있습니까?
- 버그가 안날 수는 없지만, 버그가 났던 것은 자동화된 테스트로 커버가 되어야 합니다.
- 코드 리뷰를 하고 있습니까?
- 사실 코드리뷰는 저희도 잘 안하고 있긴한데, 코드리뷰를 전문적으로 하는 것은 상당한 도움이 됩니다.
- 코드가 커밋되면 자동으로 빌드와 테스트가 실행됩니까?
- 배포/롤백이 쉽습니까?
- 배포/롤백이 쉬워야 하루에 몇번씩 또는 몇십번 씩 배포가 가능합니다.
- 장애를 낸 것에 대해서 비판하지 않고, 장애를 빨리 고칠려고 노력합니까?
- 서비스의 히스토리등이 잘 정리되어 있습니까?
사실 저도 개발자 문화라고 말할 정도로 뭔가 잘 알지를 못하기 때문에… 이런 것들 정도가 생각이 납니다. 최근에 저희 팀의 동료가 올린 멋진 슬라이드가 있습니다.
사실 가장 중요한 것은 git/github을 쓰거나 git flow/gitlab flow 이런 브랜치 방법론이라든지, 뭔가 좋은 툴을 사용하는게 아니라고 생각합니다. 위의 코드 리뷰 처럼, 뭔가를 시도하고 실패하면, 거기서 다시 발전한 부분을 찾는 것, 그리고 서로의 잘못을 찾는 것이 아니라, 장점을 찾고, 존중, 신뢰하며 발전할 부분을 찾는것 그것이어야 말로 가장 중요한 개발자 문화이지 않을까 싶습니다.
이미 모든게 잘 갖춰져 있는 것도 재미있지만, 즐겁게 실패하면서 함께 더 좋은 문화를 만들어갈려고 노력하는 것도 참 재미있는 일이 아닐까 싶습니다.