Saturday, January 9, 2016

What’s the In-Depth Understanding about Simplicity Principle in Agile

"Simplicity--the art of maximizing the amount of work not done--is essential." - Agile Principle

"Simplicity--the art of maximizing the amount of work not done--is essential." is an Agile Principle written in Agile manifesto. When you are Agile you think on value for the customer, end user you name it, you eliminate waste, so you deliver that value quickly by avoiding extra code, extra work, features that nobody uses, etc. Many people want to adopt Agile because they think it will help them deliver software faster because of process improvement. But in reality, one of the reasons to see improved productivity is because of the simplicity principle. What’s further understanding about this Agile principle?

Maximize the amount of high-value work you do, also, maximize the amount of low-value work you don't do. Prioritize on what you need to be doing. Deliver the fundamental core need, and then assess if you need to go deeper, or move on to something else. Agile can handle the concept of opportunity and cost practically and gracefully, this principle highlights the importance of identifying the waste in the work -whether it is development or testing or any other activity in the project so that team is fully productive in achieving their commitment.You can implement features that no one uses, but when you take early feedback and focus on the customer being satisfied, you will know when to stop working on a feature and focus on other priorities that truly improve customers' satisfactions.  

Another concept in Agile is the idea of "just barely good enough.” Agile is based on an incremental development approach to start with something simple and basic, get it done as quickly as possible, and then add to it incrementally as necessary to meet the need. That is called the "Minimum Viable Product" or "Minimum Marketable Feature.”  It's also helpful to know that adding functionality that is not absolutely needed by the business now often adds costs that are "not linear," due to "Feature Interaction," this can multiply costs. It simply means that you should not over-engineer a system. Develop only the functionality that is needed, using high-quality approaches and code, but do not add bells and whistles that are not needed yet, keep it simple by delivering quickly what is being asked and let the users validate that. “There is nothing quite so useless, as doing with great efficiency, something that should not be done at all.” Peter Drucker

Agile requires a spirit of trust and partnership between the business users and the development team. Many people try to over-design or "gold-plate" something to make it as sophisticated as possible. Also, many users will ask for every possible requirement you can imagine - thinking that if they don't ask for everything, they may not get what they need and want. Teams need to simplify so that you can reduce waste. To do more with less is again to reduce waste. Teams need to find out the complexities within the system and break them down to simplify so that they can focus on things that are needed and eliminate those that are no more required to be done. Doing this successfully requires a spirit of trust and partnership between the business users and the development team. The users have to trust that they will ultimately get a solution that meets their needs if they work with the development team in this incremental approach.

In general, simplicity enforces agile values. It’s a call to scrutinize your working practices to ensure they are contributing towards agile values such as early and continuous delivery, responsiveness to change, a close and frequent collaboration between business people and developers, and even more.


Post a Comment