Stupid Baboons, Stubborn Elephants: A Product Engineer’s Guide to Working with Platform Engineers

No newfangled live action for me, thank you very much

Product vs Platform vs Fullstack

My definition of “platform engineer” is an engineer whose role is to provide a framework for other developers to use , usually internally, whereas a “product engineer” is an engineer whose role is to develop user facing features.

Can we please stop forcing user story titles for everything?
  • Product engineering work may be split between backend and frontend engineers.
  • Fullstack engineers develop internal tools like insights, analytics, and quality control.
  • And finally, even though they’re frontend engineers I don’t think you can seriously suggest that the React core team is doing product work.

Perspective

Product engineers are focused on user facing features and customer needs, viewing platform code as a set of tools and services which should allow product features to be written quickly and efficiently.

This is a joke. Please don’t take it to heart.

Speed vs. Quality

If you’re an engineer of any type in 2019, you’re probably working with agile. If you’re doing it “by the book”, you should be working in short sprints. If your task doesn’t fit in the sprint — you break it down into smaller pieces to make sure it gets done within that sprint.

Trade-offs as far as the eye can see

Undead Code (AKA Legacy/Deprecated)

A side effect of platform projects taking so long is having to deal with legacy code. When a product feature dies, most of its code can be safely deleted. No one does this because it slips between the cracks or because they’re too scared (for some understandable reasons), but in general — most code related to a dead feature is just sitting somewhere being dead, not bothering anyone who needs to write new features.

Actual World War Z gifs were just too awful

Distance

If you work in a tiny startup where everyone sits in the same room and there is no real separation between engineering functions — you can skip to the next section. However, if you’re working in a more mature company there are usually different teams and even entire engineering orgs for product vs platform work. This causes a mental/emotional distance, as well as physical distance between the various functions.

Prime example of a bad attitude

Why can’t we all just get along?

So far we’ve seen 4 major friction areas:

  1. Perspective: Product and platform engineers have different ideas on what’s important, causing them to view effort in certain areas as a nuisance or as the highest priority, depending on their point of view. They also have different perspectives on the system as a whole — cross team concerns, APIs etc. which cause friction and complications in unexpected places.
  2. Speed vs. quality: Product engineers are working on shorter timelines and with constantly changing requirements. Putting an emphasis on speed and less on long term engineering makes them appear not to care about code quality.
  3. Zombie code: Product engineers sometimes need to modify legacy platform code, waking undead code from its resting place and making trouble and extra work for platform engineers.
  4. Distance: “Us vs. them” attitudes and lack of a solid working relationship makes it harder to see past the “stupid baboons” and “stubborn elephants” labels and respect each other.

So, what can we do to work together better?

Communicate! Sorry for the cliché but really, that’s pretty much the only solution.

  • If you don’t work in the same site and don’t have the budget for travel for every little feature (which makes sense, after all), pick up the video conference app of your choice and talk to each other anyway.
  • Slack is also not bad for building relationships, as it feels more personal and casual then emails.
  • Use lots of emoji. I have no data to back this up but I’m sure it helps.
  • Stay away from JIRA or other task management systems. Those are important for keeping track of project status, but terrible for building trust and communicating. Update JIRA after you’ve communicated directly and verified you’re all on the same page.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Rina Artstain

Rina Artstain

371 Followers

Tech Lead @ Google • Ex-Dropbox • I create software by applying careful study, thoughtful listening and open conversation