Product Development Improvements

• Chris Liscio

At SuperMegaUltraGroovy, there is a lot on the go at any given time. Right now, we're actively juggling three software releases. Come to think of it, we're pretty much always juggling at least1 three software releases at any given time: one for each of Capo, Capo touch, and FuzzMeasure.

To make matters even more complicated, we have various "hobby projects" which we try and keep moving forward. Things such as our new support site and our quarterly newsletter are taking up pieces of our time and attention as well.

This is quite a lot to juggle as a small team, and as the sole FuzzMeasure developer, I can't handle managing all the people involved while also participating in the process.

How did I solve this?

I made a big change last November when I brought Shelley on board to "run the company" so I could return to doing what I do best. Shelley's appointment wasn't intended to merely take the administrative tasks off my plate—I hired her to be the project manager that kept us all moving forward.

Shelley's primary role is similar to that of a software project manager, though she's more of a "Jill of all trades" just as I've had to be for the past ten years. She'll run through testing for us, file bugs, capture screen videos for app previews, etc. Whatever it takes to keep things moving forward.

Since she has started, I think we have pretty good evidence that things have been working out for the better on the software side.

Increased Release Frequency

We shipped two rather large updates to Capo touch since November. These two iOS updates required quite a bit of design, coding, and a whole lot of management to come together.

On top of this, we even had to coordinate and build app preview videos! It was pretty nuts considering how few of us are working on the product.

Occasionally I'd have to hop off the FuzzMeasure work to hack on tricky bits of the code, and all along I was reviewing pull requests and producing builds. Somehow I still managed to get a reasonable demo version of FuzzMeasure 4 ready to show people at NAMM despite all that going on.

Still, I could never have imagined making solid progress on FuzzMeasure while also making myself available for the other two projects as needed. Having a project management buffer has been a great help over the past few months, and I think that the company will benefit from the new structure for years to come.

Improved Quality Standards

I feel quite a bit more confident about the quality of these past few iOS releases than usual. We've taken measures to ensure that pull requests are not just code reviewed, but also tested thoroughly before merging.

Just recently, I set up a nifty Jenkins plugin that builds the product when a pull request is created. That allows anyone on the team–not just the developers—to review a build containing the merged result of our work.

Once pull requests do get merged, another Jenkins job builds the result. Now we have a spot where anyone on the development team can find the latest headrev build to run tests with. Using this method, we have caught a good deal of issues before getting the results in the hands of our beta testers.

I feel like we've hit our stride with this workflow, and I'm really happy with the results so far.

What's up next?

We are on track for a Capo 3.2 update on the Mac soon, and the FuzzMeasure 4 launch is still looking pretty good. The latter project is an immense undertaking for me, and my self-imposed schedule has been painful to keep thus far.

Capo on the Mac has seen less updates the past few months because it has had quite a few less major issues and crashes compared to iOS. That said, the 3.2 update will contain some of the nifty new improvements that we added to Capo touch on iOS.

There is also a considerable amount of research that has been kicked off for future versions of Capo—my "20% project", if you will. I am hoping to get the results of my experiments soon so that we can start to firm up what can and cannot go into our next major releases on that side.

The road ahead

I have spent an awful lot of time thinking not just about how my code and products are designed, but also about how to optimize the way that my team works together on them. Shipping a product is a very difficult undertaking, but actively maintaining and evolving products is where the real challenges lie.

We are excited about the positive changes we have made over the past few months, and look forward to seeing how we can carry this momentum into the future.


  1. Sometimes we have more than one release moving on a given product at once. For instance, there was a quick side-step to develop and release FuzzMeasure 3.3 while FuzzMeasure 4 was (slowly) happening.