How We Organize Ourselves

Team organization

Separation of Responsibility

What and Why?

More specifically: "What are we building and why?"

It is our product teams responsibility to understand the needs of our customers (both internally and externally) and to synthesize solutions to those needs based on customer feedback, research, and experience. Consequently, product is the sole entry point for changes to the product itself. While there are many reasons to modify our product and many stakeholders invested in it we believe that leaving the responsibility of those changes with product yields a product with a single vision.

As a company we meet weekly to learn about our opportunities and proposed solutions to them in a product led meeting, "Product Design Review". Everyone is encouraged to attend this meeting to better understand how they can contribute to building Shift.

When

While the prioritization of work sits with product, the schedule stewardship sits with project management. It is their responsibility to define and maintain project schedules. They are regularly focused the state of development and progress toward several product roadmaps. They are constantly accounting for our time budget and know in fine detail what we can afford to. While they don't set priorities, they do define plans based on them. Our project managers establish project plans in close collaboration with product, stakeholders, and engineering.

How

Executing on the product vision is the responsibility of engineering. It's up to engineering to find practical implementations to the solutions that product identifies. Engineering is a factory of features.

Front End Product Development Teams

The front end team is made up of several small teams that are focused on building and maintaining our various products. Many teams are focused largely on feature development and the maintenance of existing features. Others are focused on platform development and the foundational work needed to make feature development more effective.

A typical team is made of of an Engineering Lead and one to two Software Engineers. This is a matrix team and does not represent reporting structure. The team as a whole is managed by the Front End Team Manager and the VP of Engineering.

Back End Development Team

The backend is largely building federated systems that are shared across our products and features. They are building and maintaining our APIS and subsystems from which we build all of our products. For this reason, the backend team is not split into several teams. Instead, it is a single team that shares the responsibility of maintaining the foundation of our product. However, some members of the team specialize in certain areas of our topology.

The backend team is managed by the Director of Engineering.

Our Engineering Organizational Structure

├── CTO
│ ├── Information Security Engineer
│ ├── Site Reliability Engineering
│ │ ├── SRE (x3)
│ ├── VP Engineering
│ │ ├── Director, Backend Engineering
│ │ │ ├── Lead Software Engineer (x2)
│ │ │ ├── Software Engineer (x2)
│ │ ├── Manager, Front End Engineering
│ │ │ ├── Lead Software Engineer
│ │ │ ├── Senior Software Engineer (x3)
│ │ │ ├── Software Engineer
│ │ │ ├── Contractor Software Engineer

How We Organize Around Product

// Front End
├── Manager, Front End Engineering
│ ├── Senior Software Engineer
│ ├── Software Engineer, Contract
├── Senior Software Engineer
│ ├── Software Engineer, Contract
├── Software Engineer
│ ├── Software Engineer, Contract
// Back End
├── Director, Backend Engineering
│ ├── Lead Software Engineer (x2)
│ ├── Software Engineer (x2)
// Product
├── VP, Product
│ ├── Product Manager
// Project Management
├── Manager, Project Management
│ ├── Project Manager