During my career, I’ve covered the full gamut of product and platform roles, from front-end features users interact with, to building business logic primitives other teams would interact with, to testing libraries, to wrangling with kubernetes down to (bad) attempts at debugging syscalls.

While my experience is not particularly unique, I did find myself wondering why some of the product teams I’ve interacted with don’t apply some basic patterns of platform management that would benefit them, and viceversa.

If I had to summarise my main point of frustration with some bad practices I’ve seen over the years, it would be something like this:

  • Platform teams don’t always treat other engineers as customers
  • Product teams don’t always care about internal reuse of what they work on

This can cause some company-wide bad practices that breed frustration and resentment, and make it harder to scale software and processes.

For simplicity’s sake, I’ll divide this into either product development and platform development, but these practices exist in a spectrum.

Note: I’ll be adding content over time.

Part 1: Advice for product teams: think of product is a system

Part 2: Advice for platform teams: partner with your users