I was recently speaking with a co-worker about
how some projects get into a Death March because the development team
never had the opportunity to speak with/see the end user. On another
project, I requested that I be able to sit with the end user for a full
business day. From that experience I was able to determine more about
the software needs of the user than my entire business staff combined.
We realized that we didn’t need certain sections of the application,
but needed to beef up the main portion (the part the user utilized 99%
of the time).
Agile development demands that the end user be present on-site (or
remotely accessible) during the entire project. After experiencing
this, I can’t imagine coding any other way. Yes, there is added
pressure and most of the time the user gets to actually experience the
development process. With pair programming and test driven development
it becomes quite easy.
Today I read a blog entry by Marc McNeil on the ThoughtWorks blogs about this very subject. His closing line summed it up nicely:
“Moral of the story: you are not the user. What you want, how
you do it and the way you (and also the person who is commisioning you
to write your code) do it is almost certainly not the way the end user
wants to do it. And unless you speak to them and watch them you will