Monday, April 11, 2016

#agilefails: 10 Roads to Hell

#agilefails - Firefighting is never easy!

Dealing with tough situations in product delivery is always a challenge!

There are usually multiple ways of dousing flames and fixing situations. Unfortunately for us, when we are in the thick of things, we often get carried away and adopt the first solution that comes to mind. They say that the road to hell is paved with good intentions!

Over the last few years, I have come to believe that best solutions are ones that balance our short-term needs with our long-term view.

I present #agilefails. These are examples of partial fixes that do not address the root cause of our problems. [bctt tweet="While each #agilefail may help relieve an immediate pain, it is insufficient in the long run." username="sawhney_rahul"]

This list will likely grow and evolve as I continue to learn and discover.

A long-running project is getting delayed. We are struggling to deliver based on our estimates. #agilefail - Let's add new team members!

#2: A senior leader wants something new immediately. #agilefail - No conversation needed. Some of us must immediately start working on this new "opportunity".

#3: Team is getting too big to manage. #agilefail - Let us create multiple component teams (with multiple dependencies) to manage them better.

#4: Too many meetings are eating up our productive time. #agilefail - First get rid of the retrospectives, then grooming, and eventually reduce stand-ups to few days a week.

#5: Testers only want to test, developers only want to develop. #agilefail - That makes sense, it is their career path after all. It’s our duty to encourage that behavior.

#6: Rockstar team member hoards knowledge and we are afraid of losing him/her. #agilefail - Ensure that our rock-star is happy and promoted, so that person does not leave.

#7: Too many stakeholders want something delivered. #agilefail - Stop the conversation, do not commit anything as we are too busy. -OR- Commit to everything and still make everyone wait.

#8: Not everyone understands the value of collaboration. #agilefail - Make our most expensive tech people as Scrum Masters.

#9: There is a shortage of people with a particular skill-set in town. #agilefail - Training our teams will take too much time. Let us hire remote employees who will be experts. We will make them work like hell with multiple teams.

#10: We have a tough delivery date for a big new project. #agilefail - There is no time!! Get coding ASAP and work weekends if needed! We can understand customer needs as long as each team knows its own part. There is no time to spend on process either. Teams can do whatever they want.

My disclaimer: There is something to be said about what we can change and what we can't in our situation. We may find that a partial fix may be a step in the right direction and enable us to have a deeper conversation about fixing the root cause.

What do you think? Have you faced any of these situations? What did you do, and what did you learn? What other #agilefails have you come across?


Firefighters image courtesy:

14 Essential Software Engineering Concepts for Engineers and Managers

There are many terms and concepts that are important for an engineer to be familiar with, in order to effectively build software. This post ...