When presented with a problem, people seem to default to non-agile approaches
This is something I’ve noticed a lot over the years.
Despite all of the talk about agile - the coaching, studies, and success stories - waterfall seems to be a gravitational force that pulls on people.
Logical Steps to Success
When presented with complex problems, we are taught to break them down into small logical steps. It’s then easier to talk about solutions to each of those steps in a silo without the conversation going off on a tangent. This idea is common to both agile and waterfall thinking approaches.
If you really think about it, the agile approach here is ridiculous. “I asked you to design a car and you want to build a skateboard?” From a planning perspective, the broken down waterfall steps are easier to discuss and share with others who won’t be confused by what you are building. They can see how what you build now will affect the future.
Agile requires the harder mental approach as you have to take the future idea of what you want, and throw it away to form a new idea that is not at all what you want, but that helps you get something much quicker that you can test with real users.
And after you succeed at building an MVP that users are able to give feedback on…you then seek buy-in from other stakeholders that now you want to go in a new direction, change things substantially, and require the redoing of some of your work. You are effectively asking permission from others (and management) to waste time and money.
Waste is such a dirty word. We HATE to waste time and money.
At every age and skill level we hate it.
Studies have shown that gaining value for doing something right is not nearly as powerful of a motivator as the fear of losing something. This is known as loss aversion.
We are perpetually afraid of “going backwards” and only want to make decisions that move us in a forward direction. It’s why the sunk cost fallasy works on us.
quickest shortest path between two points is a straight line.
Of course all of this assumes that we have perfect foresight and know exactly what we need to build to be successful.
For me, the agile mindset starts with accepting the fact that we will make bad decisions all of the time… and that is OK.
So knowing that what you are building today is guaranteed to be “wrong” (or at least have several minor flaws), the best thing you can do is to fail often and, more importantly, early and quickly. The sooner you find the mistakes in what you’ve done the sooner you can correct your course.
In many engineering fields, this results in trying to build some sort of MVP or prototype. But remember, I said you need to fail early and quickly. The longer it takes to build the prototype the more mistakes you will make and the more your architecture will depend on those mistakes being treated as features.
shortest quickest path between two points is to only travel a short distance.
Be as minimalist with your scope as you can possibly be so as to build the most bare bones and barely working version you can put in the hands of someone who you know will complain about it. Even when you think you’ve cut away all the excess, try to find another bell or whistle you THINK you need…and cut that too.
This is something I’ve learned time and again working on side projects. I’m always tempted to add more useful, interesting, or exciting features to the list of things I’m trying to do. But even the tiniest of features often results in a huge increase in the amount of effort. It’s a recipe for shelves of unfinished projects.
Don’t Repeat Yourself (DRY) considered harmful
Innovation is inherently an unstructured process. The more order and structure you try to bring to the process, the less flexible your solution will be in the future. Even if you succeed at building a pillar of the internet, eventually others will innovate past you and you will be forced start from scratch anyway.
It can be hard at times. I regularly catch myself falling into the trap of solving problems with a logical, straightforward, and linear line of thinking. Our own personal growth in life is not linear; it’s often messy and ugly with plenty of mistakes and steps taken backwards. So how can we not expect that same journey of development in the things we build?