Advertisement
Search  
Always will be ready notify the world about expectations as easy as possible: job change page
Oct 21, 2023

Mushroom Management

Source:
Views:
659

Also known as Pseudo-Analysis and Blind Development, Mushroom Management is often described by this phrase: "Keep your developers in the dark and feed them fertilizer."

An experienced system architect recently stated, "Never let software developers talk to end users." Furthermore, without end-user participation, "The risk is that you end up building the wrong system."

Developer

AntiPattern Problem

In some architecture and management circles, there is an explicit policy to isolate system developers from the system's end users. Requirements are passed second-hand through intermediaries, including architects, managers, or requirements analysts. Mushroom Management assumes that requirements are well understood by both end users and the software project at project inception. It is assumed that requirements are stable.

There are several mistaken assumptions in Mushroom Management:

  • In reality, requirements change frequently and drive about 30 percent of development cost. In a Mushroom Management project, these changes are not discovered until system delivery. User acceptance is always a significant risk, which becomes critical in Mushroom Management.
  • The implications of requirements documents are rarely understood by end users, who can more easily visualize the meaning of requirements when they experience a prototype user interface. The prototype enables end users to articulate their real needs in contrast to the prototype's characteristics.
  • When developers don't understand the overall requirements of a product, they rarely understand the required component interaction and necessary interfaces. Because of this, poor design decisions are made and often result in stovepipe components with weak interfaces that do not fulfill the functional requirements.

Mushroom Management affects developers by creating an environment of uncertainty. Often, the documented requirements are not sufficiently detailed, and there is no effective way to obtain clarification.

In order to do their job, developers must make assumptions, which may lead to pseudo-analysis, that is, object-oriented analysis that takes place without end-user participation. Some Mushroom Management projects eliminate analysis altogether and proceed directly from high-level requirements to design and coding.

Refactored Solution

Risk-driven development is a spiral development process based upon prototyping and user feedback. Risk-driven development is a specialization of iterative-incremental development process (see the Analysis Paralysis AntiPattern). In this case, every increment is an external iteration.

In other words, every project increment includes extensions to user-interface functionality. The increment includes a user-interface experiment, including hands-on experience. The experiment assesses the acceptability and usability of each extension, and the results of the experiment influence the direction of the project through the selection of the next iteration.

Because the project frequently assesses user acceptance, and uses this input to influence the software, the risk of user rejection is minimized.

Risk-driven development is most applicable to applications, which are user-interface-intensive and require relatively simple infrastructure support. Personal computer applications that depend upon local files for storage infrastructure are strong candidates for risk-driven development.

Variations

Including a domain expert on the development team is a very effective way to have domain input on project decisions. Whenever there is a domain-specific question, team members have expertise on-hand. An important risk in this approach, however, is that the domain expert represents only one opinion from the domain community.

Similar
Apr 11, 2023
The main thing that you should know about Software Architecture reads as follows, “Graphical interface and data should be separated”. The worst thing you could do to your program is writing your code inside Form1.cs, HomeController.cs, MainWindow.cs etc. Do not...
Oct 21, 2023
AntiPattern ProblemSoftware that fails straightforward behavioral tests may be an example of an Input Kludge, which occurs when ad hoc algorithms are employed for handling program input.For example, if the program accepts free text input from the user, an ad...
Oct 26, 2023
Author: Genny Allcroft
Key strategic and tactical considerations to take when building a new product with the domain-driven design concepts in mindI have just finished reading Learning Domain-Driven Design by Vlad Khononov. It’s quite a short book (c. 300 pages) aiming to teach...
Mar 15
Author: Jonathan Boccara
Understanding is key to building quality software. Here are 3 levels of understanding we should go through before we start coding.Since the beginning of the year, I’ve had the position of a team lead/manager/dev lead, call this what you want,...
Send message
Email
Your name
*Message


© 1999–2024 WebDynamics
1980–... Sergey Drozdov
Area of interests: .NET Framework | .NET Core | C# | ASP.NET | Windows Forms | WPF | HTML5 | CSS3 | jQuery | AJAX | Angular | React | MS SQL Server | Transact-SQL | ADO.NET | Entity Framework | IIS | OOP | OOA | OOD | WCF | WPF | MSMQ | MVC | MVP | MVVM | Design Patterns | Enterprise Architecture | Scrum | Kanban