They say that two's company, three's a crowd. But as it turns out, two developers can’t build a product on their own (a project, maybe — but not a product). After Whale Seeker eagerly welcomed our third developer a few months back, a couple things became clear to me (as the second): the first change was that we could get so much more done — and not just because we had another pair of hands: the three of us could help each other get unstuck faster (“did you try…”). We’ve been taking full advantage of this dynamic by holding stand-ups — short(!) daily meetings each morning that get us all out of whatever ruts we might have dug ourselves into the previous afternoon, and on our way.
But another just as noticeable jump was in the difficulty of coordinating with each other. The technical team went from one channel of communication to three, and the mental effort of keeping on top of who was making what changes skyrocketed. A couple of tools have been useful in easing these growing pains, and have helped us take fuller advantage of what a larger team has to offer.
The first is task-tracking. As a relatively small startup, where each week’s work is often uncharted territory, we don’t feel it’s productive to impose overly stringent timelines for tasks — but it is tremendously useful to have a clear layout of who’s doing what at a given time, and how long things are taking. It makes me wish I’d had something like this in grad school. — if only to help answer the ever-present question, “so I solved that bug….now why was I doing that again?”. Task tracking is an excellent extension for feeble human memories, in the long-term as well as the short-term: at the beginning of each week, we review last week’s progress and allocate new tasks according to capacity. As an added bonus: when it comes time to fill out a grant application, or recall what the heck we’ve been up to for any reason: easy-peasy.
The second, slightly less easy-peasy, tool that’s helping us grow is continuous integration (CI). With more developers, the chances of my code messing with someone else’s are higher. From day one, our CTO Antoine Gagné has been committed to test-driven development, but making sure our tests are run and updated regularly is a hassle that only expands as the team and codebase do. CI is the practice of reducing the interval over which developers have their working copy of the code separated from the main branch (“merging” back in more often). To do this effectively, while keeping the main branch clean and functioning, we’re automating the process of testing incoming changes, so that they can’t be merged if they break anything else in the entire codebase. This has proven trickier than we’d initially thought, in part because of the unique challenges posed by integrating traditional software development methods with machine learning, where success is a moving target — but that’s another post unto itself! In any case, it’s clear that implementing CI is the only way forward as our team and codebase both continue to expand. If two’s company, and three’s a crowd, we can only imagine the cluster foxtrot that four will be! But we’ll be ready.
One final challenge in growing has been keeping everyone on the same page. What does our product look like in six months? A year? What do we prioritize and what do we put on the back-burner? These are questions that we all have something to say about. We make room for this kind of dialogue by complementing daily stand-ups with two weekly all-team meetings. For me, these meetings serve an additional purpose of reminding me how cool the work I’m doing is. In these meetings, the non-technical team learns about technical challenges and the technical team learns about business challenges and opportunities. It’s one thing to debug your code (slight endorphin kick, on to the next bug), but something else to step back and remember what it’s all for: helping an industry reduce its threat to some of the world’s most vulnerable wildlife. I often leave our Friday meetings so jazzed it’s almost hard to settle down for the weekend!