2017년 4월 10일 월요일

이우소프트에는 이것이 있다 vs. 없다


개발자 캐리어 보장이 있다.

  • 개발자가 원하면 영원히 개발자로서의 경력을 보장해준다.
  • 개발자에게 나이가 많다고 관리를 강요하거나 권유하지 않고 본인의 적성과 역량에 따라서 진로를 결정하면 된다.

남녀 차별이 없다.

  • 남여에 따른 역할,대우의 차이가 전혀 없다.
  • 100% 역량에 따른 차이 밖에 없다.
  • 결혼, 육아에 따른 차별이 없다.

아키텍트가 있다.

  • SW아키텍트가 있고 스펙, 설계와 기술적인 이슈 해결을 담당한다. 코딩도 한다.
  • 무조건 고참이라고 아키텍트가 되는 것은 아니다.
  • 아키텍트가 되기 위한 까다로운 자격을 충족해야 한다.
  • 아키텍트는 사원부터 수석 연구원까지 있다.
  • 여자 아키텍트도 있다.

개발팀장이 없다.

  • 개발팀장이 있기는 한데 휴가 결재가 하는 일의 대부분이다.
  • 개발팀장은 Technical leader로서 개발만 잘하면 된다.

전문가가 있다.

  • 자신의 일에 전문가가 되지 않으면 살아남을 수 없다.
  • 하지만 전문가라면 의견이 존중되는 수평적인 조직이다.
  • 비전문가가 감놔라 대추놔라 하지 못한다.

영어 이름이 있다.

  • 모든 직원이 서로 영어 이름을 부르고 한국 이름은 사용이 금지되어 있다.
  • 수평적인 생각을 정착하기 위해서 영어 이름을 사용하며 모두 동일한 존칭을 사용한다.

직급에 따른 서열이 없다.

  • 개발자들은 직급이 아무것도 말해주지 않는다.
  • 역량에 맞게 일을 분배하고 개발을 할 뿐이다.
  • 아키텍트가 따로 있고 PM이 일을 분배할 뿐이다.

잔디밭이 있다.

  • 8층 사무실 문을 열고 나가면 하늘 정원의 잔디밭이다.  
  • 잔디밭에 누워서 햇볕을 쐬면서 머리를 식히자.

운동 시설이 있다.

  • 체육관, GX, 웨이트 트레이닝, 골프 등의 시설이 직원들에게 제공된다.
  • 건강관리를 위해서 꾸준히 운동을 할 것을 권장하며 여러 종목의 코치를 채용하여 운동을 지도하고 있다. 물론, 자기 계발과 운동을 할 수 있는 시간을 보장한다.


파티션이 없다.

  • 파티션이 전혀 없이 책상들끼리 붙이 있다. 
  • 모든 직원이 한눈에 보인다.

어린이집이 있다.

  • 직원에게는 무료로 제공되는 어린이집이 있다.
  • 출생 6개월부터 초등학교 입학 전까지 보육을 할 수 있다.
  • 자녀와 같이 출퇴근을 할 수 있다.



회의록이 있다.

  • 모든 회의가 하나도 빠짐없이 기록이 된다.
  • 회의록은 거의 실시간으로 기록되고 모든 직원에게 공유된다.
  • 회의에 참석하지 않은 사람도 언제든지 모든 회의록을 볼 수 있다.
  • 그리고 결정된 사항은 모두 철저히 추적 관리가 된다.

코리안 타임이 없다.

  • 회의시간이 1초도 늦는 직원은 없다.
  • 1초라도 늦은 직원은 회의 참석자 전원에게 커피를 사야하고 2번째 늦을 때는 전직원에게 피자를 사야 한다.
  • 커피는 얻어 먹었지만 아직 피자는 못얻어 먹었다. 언제 피자를 먹을 수 있을지 기다리고 있다.

전문 PM이 있다.

  • 전문PM이 합리적으로 일정,리스크 등 프로젝트 관리를 한다.
  • 억지를 부리지 않는다.
  • 그렇게 해서 최단 시간에 프로젝트를 끝내고 있다.

일정 강요가 없다.

  • 경영진이 말도 안되는 일정을 억지로 밀어붙이지 않는다.
  • 1,2일 단위로 개발자가 산정하며 개발자가 예측한 일정을 다른 사람이 무시하지 않는다.
  • 그래도 일정이 부족하면 PM은 온갖 방법을 동원해서 일정 단축 전술을 구사하고 그래도 부족하면 일정을 연기한다.
  • 필요 시 일정은 구현 시작 전에 연기하므로 비즈니스 부서에서는 일정을 조율하는데 큰 문제가 없다.

몰입이 있다.

  • 하루 8시간 업무에 완전히 몰입해야 한다.

야근이 없다.

  • 강요된 야근이 없다.
  • 일정을 합리적으로 결정하고 몰입해서 일해야 하기 때문에 야근이 필요 없다.
  • 가끔 스스로 선택해서 야근을 하는 사람들이 있기는 하지만 강요는 없고 본인이 선택하는 것이다.
  • 강요된 야근은 장기적으로 SW의 품질을 떨어뜨리고 기업 문화를 퇴보 시킨다.
  • PM이 야근 카드를 꺼내는 경우는 정말 피치 못할 때이고 단기적으로 사용해야 한다.

스펙이 있다.

  • 소프트웨어를 개발할 때는 항상 스펙을 작성한다.
  • 큰 프로젝트는 SRS를 작성하고 작은 프로젝트나 프로토타입 개발 시에는 One-pager를 작성하다.
  • SRS가 완료되면 모든 Stakeholder의 대표들이 서명을 한다.
  • 프로젝트 계획은 스펙을 기초로 합리적으로 수립한다.
  • 스펙은 변경되면 문서를 업데이트해서 최신 버전을 유지한다.

일정이 지연되는 프로젝트가 없다.

  • 지연되는 프로젝트가 하나도 없다.
  • 합리적인 일정 수립과 철저한 프로젝트 관리를 통해서 일정은 무조건 지킨다.
  • 일정은 협력사와의 약속이므로 목숨처럼 지킨다.
  • 출시 일정은 SRS가 끝날 때 확정한다.

60세 개발자가 있다.

  • 나이는 개발자인지를 결정하는데 아무런 영향을 주지 않는다.

보고서가 없다.

  • 개발자에게 보고서 강요가 없다. 주간보고도 없다.
  • 개발자는 개발만 하면 된다.
  • 문서는 개발문서만 쓰면 된다.

재택근무가 있다.

  • 회사에서 자격을 부여한 개발자는 재택근무를 선택할 수 있다.
  • 가끔 회사에 나와서 회의를 하고 커뮤니케이션은 거의 이슈관리시스템을 이용한다.

서울에도 오피스가 있다.

  • 본사에 동탄에 있는만큼 서울 북부 거주자 등 지역적인 어려움이 있는 직원들은 서울 서초 오피스에서 일을 할 수 있다.


E-mail이 없다.

  • 모든 커뮤니케이션은 이슈관리시스템을 이용한다.
  • E-mail은 주로 외부인과만 주고 받는다.
  • 내부 모든 커뮤니케이션은 기록이 되고 공유가 되며 추적이 된다.

개발자에게는 가장 빠른 PC가 있다.

  • 회사가 감당할 수 있는 한도 내에서 개발자에게 가장 빠른 PC를 지급한다.
  • 빠른 CPU와 SSD를 장착하여 빌드 속도를 2배 빠르게 한다.
  • 그만큼 개발자는 일을 더 많이 해야 한다. 그리고 정시 퇴근해라.

피어 리뷰가 있다.

  • 개발자가 작성하는 코드 대부분을 리뷰한다. 리뷰를 통해서 버그를 찾고 공유, 학습을 한다.
  • 더 중요한 것은 스펙, 설계 리뷰다.
  • 개발자는 자신의 업무시간의 20%는 동료를 위한 리뷰에 사용해야 한다.
  • 시니어 개발자는 20% 이상을 리뷰에 할애한다.

마시고 죽자는 회식이 없다.

  • 원치 않는 음주 회식에 참여해서 끌려 다닐 필요가 없다.


즉석 라면이 있다.

  • 회사 식당에서 제공하는 아침 메뉴 중에는 즉석 라면이 있다.
  • 요리사가 별도로 맛을 낸 해장 라면을 즉석에서 끓여주고 충무김밥이 제공된다.

꼭 지켜야 하는 문화가 있다.

  • 공유, 협업, 커뮤니케이션이 꼭 지켜야 하는 문화다.
  • 공유와 협업을 철저히 하지 않으면 같이 일을 할 수 없다.




2017년 2월 11일 토요일

개발 프로세스가 개발 문화를 이기기 어려운 이유

우리나라의 많은 기업들은 SW 개발에 실패를 했다.
그뒤 선진 소프트웨어 개발 방법을 배우고자 노력을 많이 했고, 그 결과 개발 방법론, 프로세스를 도입하였다.

하지만 그 결과 SW개발은 더욱 비효율적으로 바뀌게 되었다. 그 이유는 무엇일까?

SW 개발에 있어서 정교한 프로세스를 정하면 프로세스에 매몰되고 프로세스가 점점 복잡해져 간다.
완벽한 프로세스는 없는 것이 당연하고 문제는 계속 생긴다. 이때마다 이를 해결하기 위한 프로세스를 계속 만들어가면 괴물 프로세스가 탄생하게 된다.

SW를 가장 효과적으로 개발하는 방법은 프로세스에 상관없이 가장 적절한 과정으로 개발하는 것이다. 그 적절한 과정은 성숙한 개발 문화 속에 있다.

하지만 많은 회사들은 애매하고 어려운 개발 문화보다는 명백하고 따라하기 쉬운 개발 프로세스에 집중해왔다. 그 결과 주먹구구식을 개발할 때보다 개발 효율성은 더 떨어졌다.

프로세스를 통해서 효율적인 개발 과정을 제대로 정의하기 어려운 이유는 아래 대화를 보자. 최고의 소프트웨어 실전 전문가에게 질문을 하면 아래와 같이 답을 할 것이다.
 
Q. 모든 소스코드는 코드리뷰를 다 해야 하나요?
A. 아니요, 그때 그때 달라요.

Q. 코드리뷰에 꼭 포함해야 하는 필수 리뷰어는 누구 인가요?
A. 그때 그때 달라요.

Q. 스펙은 꼭 작성해야 합니까?
A. 그때 그때 달라요.

Q. 스펙을 작성할 때 가장 중요한 부분은 어디 인가요?
A. 그때 그때 달라요.

Q. 설계서는 꼭 작성해야 하나요?
A. 그때 그때 달라요.

Q. 효율적으로 설계서를 작성하는 방법은 무엇인가요?
A. 그때 그때 달라요?

Q. 매번 경우마다 다른데 개발 프로세스는 어떻게 정하죠?
A. 그래서 프로세스를 너무 자세히 정하면 안됩니다. 최소한으로 정하고 개발자들의 판단력을 믿어야 합니다.

Q. 대기업은 그래서 프로세스 테일러링을 통해서 프로젝트마다 적절히 프로세스를 간소화해서 산출물도 줄이는 등 개발 프로세스를 효율적으로 적용하려고 노력하고 있습니다.
A. 이 또한 하다하다 안되니까 형식적으로 진행하는 겁니다. 심지어는 개발도 잘 모르는 사람들이 테일러링을 합니다.

Q. 알아서 하라고 하면 과거처럼 스펙도 없고, 공유도 안하고 주먹구구식으로 하지 않을까요?
A. 그렇기 때문에 역량과 문화가 중요합니다. 문화가 아무리 좋아도 역량이 안되면 공염불입니다.

프로세스는 복잡할수록 손해다. 문제만 없다면 프로세스가 없는 것이 제일 좋다. 문제가 있기 때문에 최소한의 제약을 가하는 것이다. 프로세스가 간단할수록 성숙도가 높다. 물론 주먹구구라서 프로세스가 없거나 간단한 회사는 예외다.

하라고 해서 억지로 하는 상황이라면 효과를 기대하기는 어렵다.

문화라고 하는 것은 "왜"가 아니고 "그냥 그렇게" 하는 거다.

그냥 스펙을 적절히 작성하는 것이고, 그냥 필요한 만큼 설계를 하며, 그냥 코드 리뷰를 한다.
모든 직원이 그냥 그렇게 할 수 있을 때 문화로 정착되었다고 할 수 있다.

그렇게 되면 과거로 돌아가자고 해도 모두 반대한다.

프로세스는 절대로 문화를 이기기 어렵다. 효율성이 몇배 차이가 난다. 10배 이상 차이가 날 때도 있다.

프로세스 보다는 SW 개발의 원리를 깨우쳐야 한다. 각 분야에 전문가들이 최소의 프로세스 하에서 최선의 판단을 해서 진행하면 된다.

잘 안된다고 프로세스를 점점 복잡하게 하고 너무 과하게 적용한다면 문제는 점점 커질 것이다.

개발 문화가 점점 성숙해 질수록 프로세스는 만들었다가 간소화 시켰다가 없앴다가를 반복하게 될 것이다. 그래도 신입직원을 위해서 읽을만한 프로세스 문서는 존재하게 된다. 하지만 기존 직원들은 숨쉬는 것처럼 익숙해지고 원리를 깨우쳤기 때문에 프로세스 문서를 계속 보거나 프로세스를 따라하기 위해서 억지로 행하지는 않게 된다.

이쯤되면 SW를 좀 개발할 수 있게 됐다고 자신 있게 말할 수 있다.