Adventures in Coding

Agility and Improvement

agile productivity career development

Agile methodologies are really easy to let become strict process instead of dynamic workflow


Agile (Capital A) is something that many/most software development teams are adopting, whether that is pure Agile, Safe, Scrum, Kanban, or some other thing that I don't know. The majority of the issues that I hear about surrounding Agile are having to do with forgetting the manifesto OR forgetting to be agile (lowercase a). So let's take a look at what can be done about these.

Agile Manifesto:

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions 
	over processes and tools

Working software 
	over comprehensive documentation

Customer collaboration 
	over contract negotiation

Responding to change 
	over following a plan

That is, while there is value in the items on the right, we value the items on the left more

Processes and tools are largely the way that management ensures that a team is on track. I regularly hear complaints about stories not being updated in the agile management software, or processes not being followed. I find that this largely means that we aren't interacting effectively. While individual empowerment is largely a pillar of agile, being a part of a team where you aren't the only one interacting with or planning the activies for a given product/application means that you must communicate effectively. In order to reduce your focus on processes and tools you have to get to a point where your team communicates well without the rigidness of those things.

Comprehensive documentation would be really nice in an ideal world. I personally work with fifteen applications which have been managed by a team that has completely turned over at least twice. There have been large blindspots in regard to the applciations' functionalities which is an ongoing process of remedying. But, even for the things that we have sufficient documentation there is an issue of being able to find it. Further as the team has turned over through the last decade, the code styles are a world away from consistent. The betterment of the team and the code has not come through writing large documents that explain everything, but instead through taking the time to gather and share knowledge as necessary. It has been my experience that if your organizational skills are lacking then the documentation will likely not be a fix for it. Making sure that we have testing suites that find issues and profiling systems to evaluate issues with runtime have been paramount in our moving forward.

Contract negotiations can be really helpful but will ultimately have details that are left out. This comes down to one of the fundamental issues with waterfall as a whole. You would take the contract that was poured over for weeks, and then you would take it with a bit of interpretation and make what you believed to be desired. Customer collaboration allows for us to ask the questions as we have them and not make assumptions that go unchecked until final delivery. Customer collaboration also means that iterative deliveries can be checked agaisnt assumptions that customers may have had without ever having specified them. You still wind up with an effective contract, but by letting that negotiation be ongoing collaboration rather than a pre-development meetings that produce a clean cut document you minimize the amount of work done on something that is not wanted.

Following a plan goes hand in hand with contract negotiation. Responding to change means that you are allowing for feedback that prevents excessive time waste in direction corrections.

Lowercase a agile

Going back to the bit about processes and tools, I believe that the problem comes down largely to things that are mostly minor details. Do you estimate story points by days of work or complexity of work? Do you assign multiple people to the same story or make a copy of the story for each person involved? You can go either way with these and several other decisions and have them be helpful to your team, but ultimately you should remember that if any part of the process or the tool are getting in the way of doing actual work then you need to evaluate how to remedy that.

My team lost its scrum master recently after his having been with the team for more than a year. Initially we believed that it would be disasterous as we have had difficulties with several parts of our process in the past (merging of two whole scrum teams, changing managers a couple of times, completely differing approaches to standup) and he was a large part of helping us to reign in those issues. But it's a really crazy thing. When we learned that we would not be getting a replacement of our scrum master we were forced to divy out his work. This brought about executions of different steps with different understandings and personal tendencies. And in this change we have become stronger. The people that were interested in the different processes were able to consider how they could better their part of the process instead of one person trying to figure out all of the things.

Our manager takes over a certain number of administration activities like scheduling meetings, setting iteneraries for them, and helping with outside dependencies. She does these things with the knowledge and weight of being a manager which seems to get us farther. Our daily standups are run by one of our newest members which led to his being engaged during the discussion of things he wasn't involved in and he became more knowledgable. One of our lead developers took over for backlog grooming and sprint planning and we suddenly have fixed our issues with defining done. I've picked up retrospectives and without thought I began by asking each person for their input on 'done well', 'need to improve', and 'action items' and we are getting more feedback from more people than ever before. We collectively took on our Program Increment planning activities which occur for every five sprints, and when we showed up without the pre-planning things done we were actually able to plan more effectively because everyone was more aware of our objectives and epics/features in addition to our business team having better understanding of why we are doing what we are and being able to communicate back to their people about the benefits that these things will bring to the company and our clients. We actually got to the point where we are regularly performing these rituals regularly in addition to some other sync activities and the meetings are more focused in their attendance so that we aren't wasting the time of people who have no input to offer for administrative discussions.

Aside from just the changes that came with the loss of our scrum master, we figured out that the way we had been tracking support issues and Keep The Lights On (KTLO) activites was not providing adequate visibility, bandwidth, and pushback. We have since stopped tracking support activities as stories and instead opened a request queue for such things. We have reduced our velocity to better accommodate those activities, and we have separated out our bandwidth by onsite development, offshore development, and testing in order that we may better distribute/track our work in accordance with the people that will actually be performing it.

I don't offer the things that my team has done to give our example as perfection (far from it), but as growth. We have tramendously changed the way that we carry out agile practices and are becoming stronger for it. I, being transferred to the team more recently than most, have been finding several issues with our process and questioning everyone as to why we do things the way that we do. In the process I am able to learn the good and bad reasons that we operate as we do, and I've been able to offer thoughts as to how we might better our processes. Just opening this discussion (because I'm quite open with my thoughts) has led to further discussion of streamlining our activities. There were initially a handful of meetings where we devolved into verbal sparring matches and the majority of people were quite upset. After we got everything off of our collective chest then we were able to begin seeing things from the other perspectives, function as a more cohesive team, and find value in our tramendous diversity of skills and experience.


Related topics: agile productivity career development

← Home