About 8 months ago, I promised you that I’d follow up and let you know how our transition to Agile software development was going. This is that long overdue follow up and I’m sad to say that six weeks ago I submitted my resignation. Tomorrow I start with my new company.
I’m sitting in an airport right now reading Brad Warner’s “Hardcore Zen” for the dozenth time and I think I’m finally ready to talk about all this. I’ve been trying to figure out what to say for over a month. I know I need to write about this, but I’ve not had the words until now. It turns out, that it’s fairly simple.
I failed. I failed. I failed. I learned, my team learned, we found an incredible amount of success, then we failed. Then I failed in the worst possible way: I gave up.
18 months ago my team and I started upon our journey to find agility. We struggled, but inch by inch we made progress. Tests spread through the code base, we delivered more value more often, and our partners business side began to really trust IT for the first time in a very long time.
It was tough work clawing our way up that mud cliff. We’d make some progress, then the handhold would break loose and we’d slide back a bit. Two steps forward; one step back, but we were making progress.
Until the bottom fell out.
We’d been steadily growing the team, filling open seats until finally there was just one spot left to fill: Team Lead. Arguably, this position should have been filled first. By time we were interviewing people for the job, we already had a well functioning team that, to be honest, didn’t really have a need for a single neck to ring.
It’s a few days later now. I’m sitting in my new company’s Des Moines office looking out the window at a sculpture park wondering where I went wrong and what more I could have done to find middle ground with the Lead Developer that management brought in. I’m still struggling with this post. Deep down I know that the team and process we worked so hard to build will be hurt by my departure, but I also know that I was becoming toxic and had to go. The two of us were giving off terrible vibes that were disrupting the team. I’m hoping the act of writing this down helps me discover something I could have done differently. I’ve got a sinking feeling I’m going to need a solution to this problem in the future.
The two of us had fundamentally different approaches to software development. My team took a cue from the business around us, a manufacturing company, and took on a Lean mindset and vocabulary. We had a “just enough” process and “ruthlessly eliminate waste” mentality that served us very well. We had established ourselves as a Kanban team with a focus on flowing work through the system and into production in very small batches. As soon as an item was ready, we deployed it. If a request would take more than a few days to implement, we found ways to deliver valuable pieces of it independently. No reason to ever make the business arbitrarily wait for something that was otherwise done. The old team had also discovered that we got more accurate forecasts if we just counted stories instead of wasting time bickering over story points. We focused our priority meetings on priorities and planning meetings on how we were going to implement. Things weren’t perfect, but things really were going well. We had found a great stride and cadence.
Our new Lead came from a background that was apparently some version of Scrum that was not very far removed from Waterfall development. There was an insistence on breaking down and estimating the entire backlog, even though we were very unlikely to ever implement even half of them. (You may be asking yourself why those items were in the backlog at all if they were never going to be done, and the answer would be, “I was working on convincing our business partners that it’s okay to remove things from the backlog.”) This became the first in a long line of arguments between the two of us. The team, rightfully, felt that breaking down and sizing the entire backlog was a wasteful activity. Even if we did implement every item in the backlog, by time we got around to it, we would have to regather the requirements and reestimate every item in the backlog; essentially doing the work twice. We tried to explain this, but it fell on deaf ears. It was like talking to a brick wall. I lost my patience.
That was my first failure, losing my patience. A deep breath and a reminder to myself that not everyone has a Lean mindset would have gone a long way here. If I had managed to keep my cool longer in the beginning, I think our working relationship could have been much different. If I had had more empathy for the man who had the terribly hard job of leading an already cohesive team, who had no need for a single leader, perhaps things could have been different. The poor guy was in over his head with us. I still can’t imagine what it must have been like for him walking into our team. I should have had more empathy.
I felt like the team would lose our culture if we were forced to implement cargo cult scrum just because it’s what our new lead was familiar with. We worked extremely hard to get to where we were and I felt like that work would be all for not if he got his way. I got emotional about all of it. This was my second failure. I let my emotions control my actions. I had lost my zen. I was no longer recognizing my emotions, accepting them, and then placing them aside. During my interactions with him I was reacting with frustrations and anger instead of empathy and logic. I allowed things to reach a point where in every meeting, nearly every time we spoke, we would get in heated arguments over the process. I should have never allowed myself to fall into this trap. I should have reached deeper inside for a bit more patience.
However, my greatest failure was giving up. I got tired of the arguing. I got tired of trying to explain how and why the team came to the way of working that we did, but it felt like yelling at a brick wall. The constant confrontation was putting the team on edge. I was aggravated all the time. The situation was hurting my team, my family, myself, and the lead that I couldn’t find middle ground with. I had become toxic to everyone around me and I had to do something about it. So I gave up. I gave up on the team I worked so hard to build. I gave up on the process that we struggled to come to. I gave up on a company that I love. It hurts. It hurts badly, but leaving the team was the best thing I could have done for everyone. In some ways, what I perceive as a failure was actually a success. Instead of continuing down a destructive path, I chose to find another way… even though leaving my team sucks.
So guys, if you happen to be reading this, I’m sorry. I’ll miss you all very much. We were a great team and I’m extremely proud of what we accomplished together. I wish I had kept my calm. I wish I had been more patient. I wished I had been able to explain our process and philosophy better. I wish I had stuck in there longer, but I know that I was hurting us more than helping us and I know that you’ll all be fine without me.
As for me, I’m looking forward to the future at yet another wonderful company. I won’t forget the lessons I learned here.