Why agile isn't a good fit for me July 5, 2023
Agile is poop.
I've been doing software development for like 22 years now professionally. I am set in my ways. I tried to take on the Agile Software Development methodology, and it never really felt quite right. Until recently I had not tried to explain why not...
What is agile?
Agile software methodology is one where you break up a software project into sprints of like 2 weeks usually. It depends what type of project you're working on. You break down a project into pieces, and you give things points based on how difficult or time consuming they are going to be. There are also meetings every day to discuss the project for a few minutes.
Why does it not fit?
It took me a while to come up with a good analogy. I think the best one I've come up with is sculpture.
When you're doing a sculpture, you will start with a block of marble, say. And you want to turn it into an elephant. So you start removing large chunks of it to get a rough shape. Then you remove some more middle sized chunks. Then finally you're getting into the details.
To analogize that to software, agile is like you start with a block and you create a highly detailed elephant trunk, and the rest of the block of marble is still a block of marble. You've just gone head first into the detalis of one particular thing.
This is dumb. Often times there are large intermingling systems that need to be created before any of the detalis can take shape. If you are interfacing with multiple APIs, but only one is in the first sprint, you're going to create something that is specifically built for that API. But then you might find there is a lot of functionality that can be shared between them, and you have to backtrack.
I could come up with more examples. One part of agile is the concept of being blocked. Because some things are assigned out of order, or depend on something someone else is working on, or you've come to find technical (or communication) limitations.
There should be a point at the beginning of the project for building out a skeleton. Early "sprints" should be longer and deal in abstracts. Take more time to define how things will interact and connect. Determine things that can be shared across multiple things. Group those things together. Software has subsystems, almost always, if it has any kind of complexity. Identify them.
I don't know. Agile is not great though. At least not how it's being used most of the time.