While Agile development embraces flexibility, it does face some hurdles. Users may cling to the familiar, oversimplified software lacks user control, and remote meetings might hinder collaboration. User feedback may be vague, and new software lacks an initial user base. Solutions inculde user voting, prioritizing user needs, and leveraging feedback from related software.
Agile development thrives on change, but humans crave stability. This article explores the tensions between these forces, examining user resistance, oversimplification, and remote collaboration's impact on agile practices. We'll also delve into overcoming challenges like user feedback limitations and the "new software block."
The Appeal of Fixedness
Fixedness has some undeniable appeal that goes against the constant need for change required for agile development. Who Moved My Cheese?, a bestselling book in the category of workplace culture, explores how it could be difficult to overcome the inertia of a fixed routine, and how to deal with change in work.
Responding to change is of paramount importance for agile software development, but the reluctance to change is equally pulling. If adopters of new software don’t feel the need to make a changeover, the agile software development process is halted. Other than the dredge work involved in upgrading to newer software, exploring the new and giving up the familiar may not come easily.
Oversimplification
Simplicity is the hallmark of agile software development. However agile development does incur the risk of oversimplification. As an example, managed software manages everything for the software user, but does the end user always want to give up all control over the use of the software?
A managed software service such as Software as a Service (SaaS) does not allow an end-user access to the underlying host to be able to perform user-initiated tasks such as installing other custom software or applying custom patches. Users of cloud-based managed services often have to spin up a separate VM instance just to install the client software and connect to the managed service. Oversimplification in this instance has simplified the use of the software but at the same time taken away all possibility for an end user to set their preferences.
Lack of Agile Collaboration
Agile development depends on “daily Scrum” sessions held in person. Scrum, an agile team collaboration framework for software development, recommends stand-up meetings, defined by PMI (Project Management Institute) as "brief, daily collaboration meetings in which the team reviews progress..."
In a daily Scrum, a software development team reviews progress towards the sprint goal. But in recent years, such meetings have been replaced by online meetings. Collaboration platforms such as Google Meet, Zoom, and Slack have become commonplace. But do these online collaboration platforms provide the same level of rapport needed for a daily scrum?
Lack of Sufficient Feedback from Software Users
Agile development depends on feedback from software users, but users may not be able to provide sufficient feedback that could be translated into tangible software improvements. A software end user may just be able to provide a summary report of a technical issue or a brief description of a much-needed new feature. Actual implementation of new software development requires precise detail that can be converted to code.
If a software end user is not able to provide much detail at the outset, it is best to provide software users with a question template to submit as a test case. Some agile project management tools provide a template for feature requests.
Not Enough to Fix
To make additions or improvements to existing software, a development team needs enough new potential changes. While agile software development does recommend responding to changing user requirements, there has to be a substantial number of new improvements, and bug fixes, to justify changing the software.
As an example, a single JDK update could involve hundreds of bug fixes, as listed for the JDK 8 update 60 bug fixes. There is no fixed number of changes that could be used as a baseline to justify a new update or release, and most software products may not require 400+ changes or bug fixes as a JDK does, or at least JDK8u60 did.
New Software Block
Agile development depends on software user feedback, but in new software development there is no user base yet, and therefore no user feedback. How do we make new software development agile, a process that depends so much on end users?
One option is to take feedback from related software. As an example, if an application server is to be used along with an integrated development environment (IDE) use the feedback for the IDE to develop the application server. Another option is to rely on Beta and Alpha testers.
Lack of Know-How About Newer Technologies
As new paradigms of agile software development get adopted, software users have to be able to use the new agile technologies. Software users may need to be trained in these new software technologies such as cloud-managed software, containerization, and DevOps, to mention a few.
Software Users Should Have Voting Privileges
Agile software development depends on collaboration with end users, but the collaboration can’t be at a superficial level of merely getting some recommendations.
Software end users have to be able to vote in important votes that determine whether some software change is to be made.
Taking PHP development as an example, their voting system allows participation from two main groups. The first includes individuals who have actively contributed code to the PHP project itself. Secondly, representatives chosen by the broader PHP community get a say. Finally, both lead developers working on PHP-based projects and those who regularly participate in internal discussions are also eligible to vote.
Software Development Is Influenced by End Users—Not the Other Way Around
Collaboration with software users sets the basis for software development. Software developers may tend to influence the end users and initiate recommendations, but the foundation of agile software development is that recommendations mostly come from the end users, and not the other way around. The needs of the software users come before the next wonderful feature software developers can provide.
Run-of-the-Mill Software
Software development does tend to be inclined towards a one-size-fits-all approach, which is sometimes not compatible with the needs of individual end users. To overcome the possibility of run-of-the-mill software, agile software development should have provision for software branches or extensions to be developed concurrently as customized by different end users.
Several software vendors have started to offer custom software in addition to off-the-shelf software. Often fluent APIs (application programming interface) and DSLs (domain-specific language) can be used to develop extensions for existing software. As an example, the Spring framework provides the Java DSL for Spring integration.