1000 reasons not to

Holy crap we did it. 9 months after we started, we finally released a major update for one of our plugins this week. On one hand, I am very excited (and proud) about the work we did. But the first thought that comes to mind is, “what took so long?” I know the answer. I know all the things that have come up along the way. And still I ask…

I'm not actually here to rant, though. This was an incredible learning experience for me. I was at my desk Friday thinking a lot about the process and where things ran off the rails. Most importantly, I was trying to figure out what we, more specially, what I could have done differently that would have had us releasing the plugin months ago. No surprise, I found a lot.

Pre-planning

There are many aspects to planning. It isn't just about the code that needs writing or the mock ups and user flow diagrams. It is also about the resources. I mean people. I mean hours.

Before we started coding, I had made several mock ups, diagrams and flows. I feel I did a pretty decent job of this. Although we did end up ditching several of them after we got started, they still served as a starting point. But what I didn't do well was calculate the amount of time the coding was going to take.

For future phases I am thinking of taking a more agile development approach and writing out user stories and estimating the time it will take. While estimates are always optimistic, at least it will be a general idea of what's ahead, rather than just the great unknown.

Don't assume. Ask.

We had planned to get together and do a 3 day code session. Which we did. I had expected to be at least 50% done by the end of the weekend. That was simply not the case. My fatal flaw was assuming that we would all be so excited about the progress we made and that a destination would be in sight so we would spend nights and weekends cranking out the rest of the code over the next couple weeks. Again, simply not the case. We did institute a Monday Night Hack Session. We would all be online each Monday evening to work on the project. So there was some regular progress being made, but since the sessions were a week apart, sometimes it would take half the session just to figure out where we left off the week before.

Next time, no assumptions. Instead we will have a conversation before starting where we talk about what is expected from each of us. Also, I will push for at least two nights a week to hack. It will help us all keep the project fresh in our mind and will result in less spin-up time each session.

Release sooner

This one is hard because of the project. We had an existing product that we were rewriting, so the assumption is that all previously existing functionality needed to remain. In the end we made the decision to release the plugin as a totally separate plugin. This saved us time in several ways. Writing a conversion script was taking significant time, and testing conversions was no small task. Where I failed here was by not thinking of this alternate path sooner. Had we not spent time on the conversion script, we would have been able to wrap up other parts sooner and release sooner.

Next round, I will be more open to switching paths in order to get new features and fixes out the door. This will obviously be easier moving forward since the big piece is already written. But still, I need to remain alert and see when a specific item is taking longer than it should.

The end is just the beginning

During the final 4 hack nights leading up to the launch, we would close 3 tickets, I would do another round of QA and open 3 more tickets. They were starting to be nitpicky tickets. So finally we had to just tag and release the code. We know we will be getting requests for a couple tweaks here and there. But there is no better QA team than a group of actual users. So I expect some support requests. Hell, I welcome them. I am flat out asking for them!

If we had tried, we could have come up with a thousand reasons not to release the plugin… But we shipped it anyway. And as some very wise friends say, “Scotch is for shippers.” To which I say, “Hey, Bartender!”