Agile – Should programmers talk with customers / users according to MSF / agile methods

agiledevelopment-methodologiesextreme programmingscrum

I've just read two statements that seem to be very different:

Des Weiteren ist mangelnde Kommunikation zwischen Programmierern und Nutzern eine nicht zu vernachlässigende Quelle von unzureichenden Produkten.

Translated:

A lack of communication between programmers and users is a source of poor [software] products.

Source: de.wikipedia.org

I think I have read something similar in CHAOS report of Standish Group.

And

Insbesondere bei der Rolle Development ist Kontakt zum Kunden oder zu den Benutzern nach Meinung des MSF geradezu zu unterbinden.

Translated:

According to MSF, especially the role "Development" should not have contact to the customer or to the user.

Source: msdn.microsoft.com

This also makes sense, because as a programmer I want to have happy end users. So the user likes to have a new feature, I'll try to implement it. This could lead to feature creep.

If I understand it correctly, MSF (Microsoft Solution Framework) tries to avoid this problem by a role that has contact to the customer (this is the product manager, the user experience role and maybe the testing role, isn't it?) and only one role that has contact to the development role (the program manager).

Question 1: How do agile methods deal with the problem of feature creep? I read that the developers should have very strong contact with customers in agile methods and that one of the main problems in using scrum is to persuade the customer to get involved in the process.

Does in SCRUM only the Product Owner have contact with the user / customer? Isn't this a problem, as the programmer might see different problems than the Product Owner?

Question 2: Who does the requirements engineering in agile methods and MSF?

Question 3: Do you validate in MSF / agile methods if your product does what the customer wants and the user needs before shipping it? How do you do it?

Best Answer

  1. The customer is part of the team that produces the product, so they can indeed pile wish upon wish. But they are also part of the planning process for which story is included in which sprint, so they get immediate feedback on which wish will take how long to implement, and what other wish will be postponed because of it. This creates a natural counterweight. (Whereas in old-fashioned, strictly segregated requirements engineering and development, such feedback virtually never happens, and the customer has no idea which features would take how much time; sometimes the customer reps even actively lie about it.)
  2. Differs from method to method, but in general, the focus is on getting requirements from people closer to the actual users of the finished product, rather than from their managers, their procurement department, or even their sales reps.
  3. Pretty much part of the same arrangement as in (1): the customer should be present when the feature is planned, implemented, tried out and tested. If during all those steps, they don't notice that they don't actually want it, well... some people truly can't be pleased, and even agile methods are helpless against that.