1. Introduction

요즘의 소프트웨어 개발은 별로 이상적이지 않다. 개발은 늦어지고, 그나마 고객에게 전달이 됐다 하더라도, 고객이 원한게 아니고, 고객은 화를 내고. 이런 상황이 반복된다. 심지어는 고객은 소프트웨어 개발을 잘 모르기 때문에, 개발자들이 지금 무엇을 하고 있는 것인지, 어떻게 이루어지는지, 왜 하는건지 모른다.

고객이 원하는건, 자기 필요를 충족시켜주는 소프트웨어인데, 이놈의 개발자들은 계속 무슨 문서 무슨 문서만 들이민다. 그것도 자기가 알아들을 수 있는 문서도 아니고. 이런 문서가 확정이 돼야 개발을 진행할 수 있다고 하는데, 이 문서를 이해하기도 어려운데, 그냥 끄덕끄덕, '맞는 것 같네요' 한다. 왜냐면 진짜 맞는 것 같거든. 왜? 잘 모르니까, 그런 형태로 기술된 문서 속에서 어떻게 잘못된 것이 무엇인지 찾아낼 수 있지? 당신은 보험 약관 문서에서 당신이 원하지 않는 조항을 찾아낼 수 있는가? 내가 이해할 수 있는 형태로 줘도 찾아낼 수 있을까 말까인데 말이야.

결국 고객은 자신의 문제를 다 충족시켜주지 못하는 소프트웨어를 받아들게 되고, 뭐라고 따지면, 당신이 이미 승인한거라고 문서를 들이민다.

왜 이런 지경이 됐을까? 여러 이유가 있을테지만, 여기서 말하고자 하는 것은, 소프트웨어 전문가들이, 뭔가 미리 정의된 프로세스를 따라가면서 개발을 진행해야 한다고 믿기 때문이다. 하지만 소프트웨어 개발의 가장 중요한 목표는 소프트웨어를 개발하는 것이다. 문서를 만드는게 아니라 말이다.

반면에, 소프트웨어를 만드는 것은 쉬운 일이 아니다. 고려해야 할 부분도 많고. 그런데 정작 자기가 원하는 소프트웨어를 만들기 위해서 많은 것들을 알려주고, 선택하고, 결정해야 할 당사자 중 하나인 고객은, 소프트웨어가 어떻게 만들어지는지 모른다. 개발의 복잡한 과정에는 별로 참여하고 싶지 않아하고, 알아서 해달라고 하고 빨리 업무에 복귀하고 싶어한다.

current practice is to deliver what we want to deliver, not to deliver what customers are asking of us. - p. 5


CategoryBook

AgileModeling (last edited 2020-10-02 11:52:40 by 정수)