Agile Thoughts of the Day
Updated: Apr 17, 2021
This Dog understands Persistence
Agile belongs to developers. It's our methodology and tool for working with customers in a better way. The developer's view of Agile starts every day when the developer writes code to implement a story for a customer. Here are some principles to follow every day as a developer to be more Agile.
YAGNI - You Ain't Gonna Need It! Don't waste time on solving problems that don't or won't exist. Have the courage to state the real problem and don't get caught up in trying to solve a problem you don't yet understand, or writing documentation that no one will ever read.
DRY - Don't Report Yourself! Good LINT tools detect when you duplicate code. Don't cut and paste. Develop systems that have a single idea expressed only once every time. Utilize libraries. Show respect for other developers by using their libraries, or correcting them if they are wrong.
Once and only once - Another version of DRY, but better. If you need to define something twice, then refactor.
"Big Head" might have written that code you inherited
Developers understand that code that "works" can still be bad. Agilists and project managers often don't and will complain if you spend two sprints instead of one on a story because you are dealing with internal issues before completing the story. Taking agile back means taking the rights to refactor code that might work but has serious internal problems: It might take too long to compile, might need better unit testing, might be poorly written.
As the developer, you control when a story is done, don't cede that control to management. Even the most stringent customer commitments can be negotiated. Return to the agile principles and stick to your guns. If management fires you, you've saved yourself months or years of being abused. A story on a Scrum board is not a contract.
Customer collaboration over contract negotiation
Don't Produce an Artifact without Unit Tests. Extensive unit tests will give you the confidence to deliver and close out a story. A good build process will run all the unit tests before providing the artifact. That means if you are building a jar for deployment or a web deployment before it can be handed to QA or a testing site, all the tests should run. This practice keeps you honest. It means that every time you are using code, you know it has passed all the tests you've defined.
This is my personal blog message intended to push the idea that Agile is for developers, and we need to speak up to keep the focus on agility. The Agile Manifesto came out because developers were fed up, and frankly, customers were fed up as well. We do better by having a deeper understanding and applying that understanding to our work every day.