David Heinemeier Hansson is opening the conference, quite appropriately, and saying a lot of interesting things about the past and future of Rails. The conference is going to post video of the keynote in a day or so, and I recommend watching it. But what got me sitting up straight and listening more alertly was when he started talking about something else. Requirements.
David says that programmers treat requirements as commandments from on high. And that they shouldn’t do that. The stakeholders aren’t are committed to the requirements as programmers think. They know what they want, but they’d be just about as happy with a lot of other solutions, too. And those other solutions might be a whole lot less expensive to provide.
His example concerns chocolate. He’s got a sweet tooth. Ask him for requirements to satisfy that sweet tooth, and he’ll specify top quality Belgian chocolates. Meeting those requirements will take a lot of money and a lot of time. Maybe that’s necessary. But try offering a Twix bar right now for just a buck or so instead, and most of the time he’ll actually be happier with that.
The real key to programmer productivity is saying no to requirements as stated, and instead understanding what the stakeholders want to accomplish and opening negotiations with them on the best way to do that. Requirements are a starting point to that. They’re not handed down to us on stone tablets.
That means programmers have to be much more involved with stakeholders, and take more responsibility for the ultimate outcome of their efforts. But they’re going to create a lot more value if they do that.