jasoncwarner / ama

Ask Jason Anything
80 stars 2 forks source link

What is the best way to organize an engineering team? #25

Open namank5x opened 4 years ago

namank5x commented 4 years ago

Is there a need to re invent the wheel by trying things that are (potentially already figured out)? what are your thoughts on this?

Are there any best practices? Starting points? Does every company have to figure it out for themselves?

jasoncwarner commented 4 years ago

There is no "one way" on this topic. It's all contextual: how big the company, mission, team size, skill, dynamic, how the product team is run etc etc etc.

It's a very complex topic.

This is why I argue that the VP Engineering or the CTO is at least the second most important executive in the company, if not the first.

But, here's some super quick thoughts and I can go into it in much more depth later.

Big caveat here: Org design and operations is literally art. And I content that very very very few people in our industry do it well. And I think in some cases it doesn't matter. Money solves this problem by overstaffing. Most organizations that get to a sufficient size just don't think about this because they overhire and assume inefficiency in the team and org. Take a look at nearly all late stage Unicorn startups and allll big companies.

I think that most companies end up with some sort of the following in time.

Top: Feature team/product team layer - teams building features or products. Mostly "full stack" assuming platform and infra are sufficiently shimmed.

Middle: Platform layer - higher order primitives most app teams might need (auth, billing, data analytics etc), entire DX for app team (think internal PaaS)

Bottom: Infra layer - hardware, base systems, base primitives (DBs, datacenter, disk, networking etc) that are needed to expose out to platform

That said, you almost never start out this way. A company should start with outsourcing all the infra and platform layer to Heroku or another PaaS and various startups and be done with it. I very much believe that most companies should stay monolith on GitHub and Heroku for a long long time.

I can go into more detail if wanted. It's a very nuanced and rather complex topic that could easily include things like communication and planning too.