At Sharp Auction Engine we’ve come a long way in our journey to build a powerful, smart solution with which to conduct online auctions. While we’re proud of what we’ve managed to accomplish in the last few years with such a small team, we also know that there’s always room to improve. As such, we’re always trying to prioritize our efforts and stay focused on the next step.
We wanted to take a moment to give an inside look at how we accomplish some of our tasks here at the office. The process isn’t always glamorous. In fact, the reality of life at a software company (especially small ones like ours) is that it can be a bit of a “sausage-making” scenario, where the end result is great but the process itself isn’t always pretty to follow. It’s a bit hectic, solutions can be unorthodox from time to time, and it can get a little messy, but at the end of the day we always manage to produce something we’re proud to show off.
A recent developers meeting encapsulates the overall feeling pretty well. A “developers meeting,” in this context, refers to the type of actual, in-person gathering that is becoming increasingly rare in a software-development world that tends to heavily favor virtual, fragmented discussions. While a great deal of our developers’ discussions do take place in a virtual space throughout the week, we find it helpful to periodically orient ourselves by meeting up and collectively discussing the tasks laid out before us.
We don’t do these every day (once a week if we can help it), but just the occasional group discussion provides an opportunity to center ourselves and refocus on what’s really important at the moment. As a developer, it’s sometimes easy to get lost down your own private rabbit hole, and these meetings are the perfect way to get back on track. They also provide a new perspective on problems. If you’re used to reviewing a particular issue online, viewing a string of comments in a repository, discussing it out loud makes your brain consider it in new ways, and might deliver that coveted “Eureka” moment.
So we set up a projector and connect it to someone’s laptop, then turn off the lights and have all the developers pull up their chairs and gather round. They collectively pore over and discuss the contents of their various online repositories, where suggestions, bug reports, and ideas for upgrades minor and major are stored. Things are prioritized and assigned to different milestones. Things getting backed up in software development is an inevitability, especially for a small team like ours with such big ambitions. At any given moment we might have dozens, if not hundreds, of tasks on our “to-do” list. If you don’t crack down on it, things can get out of hand.
The key to tackling this daunting list is to prioritize. We have to pick and choose what to take on and when. Maybe one-eighth of all the things that could be looked into at any given moment will be, so it’s important to carefully select which things those will be. What has the biggest time constraint on it? Are there any things on the list that can be fixed quickly? Topics in the repositories can get highly specialized; we go around the room, and whoever has the best knowledge on a given subject will weigh in.
Eventually, we’ve whittled down our current list of concerns substantially. While much remains to be done, our immediate direction is more or less clear, and that is about as much as you can ever hope for in the hectic world of software development. Sometimes it’s tough, but we know that for any kind of meaningful payoff, a lot of work has to get done. We’re ok with that.