(번역) SW 컨설턴트가 경험한 세가지

구글링을 하다가 읽은 미국의 소프트웨어 컨설턴트의 경험이다. 내용이 괜찮은 것 같다.

고객 입장에서 컨설턴트는 기술적으로 전문가

소프트웨어 특성 상, 고객이 속한 인더스트리는 굉장히 넓고, 컨설턴트가 잘 알지 못하는 기술과 프로젝트가 널려있다. 가장 큰 문제는 그럼에도 불구하고 고객은 컨설턴트에 대한 기술적인 기대치가 굉장히 높다는 것이다. 어찌어찌해서 일은 마무리 짓지만, 컨설턴트가 검토해야 하는 범위가 디자인에서 부터 배치까지 개발에 관련된 대부분이라고 보면 된다. 결국, 컨설턴트는 개발 사이클의 각 단계에서 필요한 대부분의 기술과 함께 사용되는 도구등 까지 광범위한 지식을 갖추고 있는 것이 중요하다. 박학다식은 컨설팅 업무에서는 어쩌면 첫번째로 필요한 덕목일지도 모른다. 왜냐하면, 고객은 큰 그림을 그리는데 있어서 기술 지식의 방대함이 큰 도움이 된다고 믿기 때문이다.

대부분의 컨설턴트는 개발자에서 시작하는데, 깊이 없이 넓은 지식을 쌓는 것이 가능한지, 그리고 그것이 옳은 것인지에 대한 논쟁은 있다. 확실한 것은 이러한 트랙을 밟은 사람은 한 분야의 전문 지식이 부족하다는 것이다. 하지만, 한 분야의 정통한 컨설턴트의 경우 대게는 모르는 분야를 만나게 되면 뒤로 빠지던가 팀에서 관련 경험이 있는 사람에게 업무를 넘긴다는 것이다.

결과적으로, 컨설팅 업무는 자신의 기술적 백그라운드는 중요하지 않다. 어떤 경우에도 고객은 컨설턴트라면 필요로 하는 모든 기술을 알고 있다고 믿고 있기 때문이다.

정확한 예측이 성공의 열쇠

시간이든 비용이든 정확한 예측이 제일 중요하다. 기한을 못 맞추거나 비용을 초과 한다면, 최악의 경우 컨설턴트가 책임을 져야 하는 경우도 발생한다.

컨설팅 업무를 처음 했을 때는 자신감이 넘쳤다. 많은 개발 사례와 프로젝트 매니지먼트 경력으로 예측이 정확할 것이라고 믿었다. 하지만, 고객에 따라 천차만별인 개발 환경에서는 이런 경험이 오히려 문제가 된 것이다. 예를 들면, 코드 리뷰를 중요시 하는 클라이언트 경우 시간이 예상 외로 많이 소모되는데 이에 대한 고찰이 없이 예측을 하였을 경우는 큰 낭패를 보게 되는 것이다. 그리고 기업 마다 외부에서는 보이지 않는 문제가 있어서 이런 것들을 미리 파악해야 좀더 정확한 일정 및 비용 산출 가능하다. 여전히 노력하는 부분이지만, 중요하게 생각하는 것은 다음과 같다.

  1. 큰 업무는 가능한 작게 쪼개어서 검토
  2. 실패나 문제는 항상 복기하여 다음 프로젝트에서 방지
  3. 업무 관련자들과 함께 결정

“Break things and move fast”이 필요하다.

실용적인 컨설팅이 필요

경험이 많을수록 사람들은 자시만의 Framework나 가이드라인이 있기 마련이다. 이런 것들이 대부분 옳은 방향으로 프로젝트를 인도 할 것이다. 하지만, 모두 다 그런 것은 아니다. 예로 “Hello World”프로그램을 개발하는데, 디자인 패턴을 이용하거나 OOP개념을 사용해서 작성하는 것은 어쩌면 시간 낭비이자 노력 낭비일 것이다. 고객에게는 어쩌면 그 무엇보다도 빠르고 정확한 납기일 준수가 제일 중요할 수 있다. “You don’t need a Ferrari when all you need is a bike.”

마무리

많은 내용을 각색 했다. 손이 많이 가는 작업이라 동일하게 하는 것은 무리~ 한줄로 영어로 표현하면 다음과 같다.

“Be versatile, get better at estimation and solve problems pragamatically”

원문이 궁금하면 문의 주세요~ 인맥 쌓고 싶어요~ ㅎㅎ :)



Written on May 27, 2015