Small Batches, Big Impact

This guest post was written by Q’s Engineering intern Larissa Chen.

Going into my engineering internship at Q, I figured I’d be lucky if I was able to deploy one line of code to production. When I arrived, I had a stereotypical internship in mind. I thought my work, probably too small to even notice, would face several rounds of revisions and critique before being lumped into a sky-high pile of commits with a release date months away.

I thought the process would be tedious because I knew the stakes would be high. Any misplaced punctuation or misspelled variable could take the site down, and nobody wants to gamble on the intern. Nervous, I had my fingers crossed that twelve weeks would be just enough time to get through the pipeline at least once without lighting the house on fire.

I couldn’t have been more wrong. Over the course of my internship, I deployed 127 changes to production in total — an average of two changes a day. (Even my mom was impressed!) The secret behind this metric was to work in small batches.

Q has adopted a straightforward yet powerful mentality: break up large features into the smallest releasable batches.

This was not intuitive to me at first, because in college, we submit our projects in their final state, rather than in drafts. But I quickly realized the obvious end-to-end benefits of working in small batches.

  • Establish rhythm. The cadence of development at Q is fast and small batches enables a system of continuous deployment. Features can be delivered in a matter of hours rather than weeks. In addition, the motivation and rhythm of individual developers are maximized. An extra ten minutes is all it takes to push a quick change to production.
  • Collect immediate user feedback. Continuously releasing features to customers allows us to spend less time guessing what users want and more time adding value. By releasing in small batches, instead of one big batch at the end of the project, we learn if we’re building in the wrong direction before it’s too late. In a more traditional development environment, intern projects can take a ridiculously long time and, late in the process, may be discovered to deliver no real value to the user and are tossed.
  • Lower risk. By definition, small batches mean low risk. The changes are relatively small, so the fear of breaking something huge is reduced. And in the event that something does break, it’s easier to spot the root cause of the error in tens or hundreds of lines of code, rather than thousands.
  • Encourage collaboration. Ownership of projects is divided when work is divided, so communication is imperative. Each person owns a small portion of a bigger project and must reach out to other team members to coordinate. Personally, this was the biggest perk for me as an intern. The collaborative approach to work at Q enabled me to integrate into the team quickly. I was able to earn the trust of the team and work on more challenging and complex problems as my internship progressed. Fortunately, thanks to how the team is structured, the hours of isolation as a lonely intern I had originally pictured just wasn’t possible.

Adapting to the high-paced rhythm made my first week at Q a challenge. Like any intern, I was nervous, always playing catch-up, and scared to ask questions at first. When I merged a change on the very first day, it was the first time I had ever merged into a git repo. I was actually scared of taking down the entire app. But over time working in small batches made me more confident and gave me agency over my own releases.

My small commits, one stacked upon the other, became a core feature of the current product. In only ten weeks, I helped create a suite of cancellation and rescheduling features that Q’s customers use daily. Because we worked in small batches, I also had time to analyze how they fared in the wild, collect feedback, and improve on them.

It may be widely accepted that “bigger is better.” But in terms of batch sizes, prioritizing small batches increases productivity, engagement with users, and most importantly for me, impact.