One of the core tenets of the culture at Shift is personal responsibility, and that comes through in the way that we organize the Shift engineering team. We’re a small, growing team (21 engineers as of this writing) that have come from Google, Dropbox, Facebook, Twitter, and other great places to build the future of car ownership. We strive to leave code better than we found it, enjoy building tools to make the whole team more effective, and we emphasize both autonomy and accountability.
Our sprints last three weeks, but we don’t have project managers looking over our shoulders. Instead, each engineer is responsible for planning 10 days worth of work on their projects for each sprint. The extra five days are left for spillover, bug fixes, paying down technical debt, or whatever else each engineer deems most impactful. At the end of each week, we sit down in small groups to check in on progress and re-allocate effort based on how things are going. This helps everyone know what’s going on with the rest of the team, and to let others jump in and help out if someone gets behind schedule. After all the check-ins are done, the whole team sits down to lunch together to discuss pressing engineering topics or hear from guest speakers.
We ship code constantly and deploy many times a day. All code that goes into production is reviewed. We believe it is one of the best ways to reduce errors, maintain consistency, teach good engineering practices, and disseminate institutional knowledge. Research agrees. And we have the benefit of talented senior engineers who lend their expertise during code reviews so that our systems remain stable and well-architected, and our junior engineers can learn from their experience. We’ve even formalized some aspects of that into a Mentor Program: every new engineer is paired with a mentor to get them up to speed and familiarized with our systems as quickly as possible. This means that every piece of code has had at least two pairs of eyes on it, and that new engineers always have someone to turn to with questions.
Finally, we work in cross-functional teams, whether that’s supporting the Operations team in building new tools or the Growth team in optimizing our sales funnels. Engineers work with other parts of the organization as much as we work with other engineers, and the work we do is better for it.
We offer our engineers a lot of freedom to build what they think is needed, but that means that our engineers have to be talented not only at writing code, but also at managing their projects. Are you a self-starter with the drive to create great work across our organization? We’d love to hear from you.