Recently, the Songkick development team wrote down some of the principles we follow when building software. We originally did this for the latest Silicon Milkroundabout job fair. I thought I’d share them with you, to give you a flavor of what it’s like to work here.
Ship early, ship often
Our development process is optimized for speed of building, releasing and iterating. Five minutes is way too long to wait for a build, so we work hard to make it as fast as possible. Shipping fast means we deliver more great features to our users. We practice continuous integration and continuous deployment. We have high test coverage and we run tests automatically. If the build is green, ship it to production; if it’s red, fix it now.
Architecture is fundamental
Simple, versatile software abstractions are the key to building maintainable software. Our service oriented architecture is easy to extend, and is scalable and elegant. Each service has a clearly defined role and a simple, stable API. New clients are quickly assembled from these services. Client teams focus on creating awesome products for their users: our iPhone app looks different from our Spotify client, which looks different from our website, but they are all built on the same services. Each team can operate like they are their own startup.
Automate away the trivial
We have 10 engineers supporting more than six million users. To manage this, we automate away the operational burden. Services restart automatically in production. Our machines are managed by Puppet, our deployments by Jenkins and Capistrano. Our production monitoring tells us if something goes wrong, so we can fix it fast. Automation and good tools make our lives easier.
Bad code kills startups
It’s too easy to be lazy: don’t reuse that existing method, roll yet another version; don’t refactor, you can do that another day; don’t remove old code, it’s not like it gets in the way. Over months and years, these small indiscretions add up and can strangle a startup like bindweed. We don’t let this happen, we hold ourselves to a higher standard and actively tend our codebase.
Explore, listen, learn
Every engineer spends time learning. Recently a group of us did the Stanford Machine Learning course together. Everyone gets a budget and work time to attend conferences, to speak or listen. Getting better at what you do is a key part of your job. We hold regular dojos and tech talks to share and explore new technologies and ideas, and regular retrospectives to make sure we always do better next time.
We value a broad range of skills and a broad range of perspectives. Our engineers come from across the globe and have many different technical interests. Some of us dig machine learning, others are into client side coding, we have testing gurus and security experts, some are architecture geeks. We share a common passion for building the best live music service in the world. We respect our differences and believe that makes us better.
Always be playing
What fun would it be if we knew all the answers? We’re always looking for new ideas and new approaches. So we hold regular innovation days where everyone in the company can try out any idea. It might be a new product, a novel automation tool, a better user interface, a different way of building software. These are not just idle experiments: we use many of them in our day to day lives or launch them to our users.
Hire the best
Songkick is an outstanding place to work because we have an outstanding team. We’ve hired the best and the brightest from around the world: the UK, France, Germany, New Zealand, America, Brazil, South Africa, Portugal; from universities such as Imperial, Cambridge, Durham, and Stanford; and from companies including Apple, Google, Yahoo!, The Guardian and the BBC. The things we look for in great engineers are skills, passion and a desire to be part of a great team.