Refactoring

Share this post
Monday 3-2-1 – product engineers, stacked diffs, hiring time 💡
refactoring.fm
💡 Monday 3-2-1

Monday 3-2-1 – product engineers, stacked diffs, hiring time 💡

Edition #28

Luca Rossi
Dec 12, 2022
9
Share this post
Monday 3-2-1 – product engineers, stacked diffs, hiring time 💡
refactoring.fm
Article voiceover
1×
0:00
-6:30
Audio playback is not supported on your browser. Please upgrade.

Hey, Luca here 👋 welcome to the Monday 3-2-1 ✨

Every Monday I will send you an email like this with 3 short ideas about engineering management, technical strategy, and good hiring.

You will also receive the regular long-form one on Thursday, like the last one:

  • My Desk Setup and Accessories 🪑

To receive all the full articles and support Refactoring, consider subscribing if you haven’t already!

Become a better tech leader today ✨

p.s. you can learn more about the benefits of the paid plan here.



🔨 Retool

I have been a big fan of Retool for years now, and I am happy to promote it in the newsletter today.

Retool helps developers build internal software faster. You can read and write back to any database or API, and quickly assemble apps with 100+ pre-built components.

Then, you can customize your apps using JavaScript as and when you need, and ship your app with access controls - all in 1/10th the time.

Learn more about Retool ✨

Back to this week’s ideas! 👇


1) ✨ Engineers vs Product Engineers

The push for the Product Engineer role fits a broader trend in making product / tech roles wider and giving people more ownership and autonomy.

To me, the Engineers vs Product Engineers feud resembles the one between Product Owners and Product Managers.

  • Product Owners have mostly tactical responsibilities. They groom the backlog, write user stories, prioritize what to do next, and attend all the Agile meetings. Their focus is short to mid-term.

  • Product Managers have more strategic responsibilities. There is overlap with Product Owners about how they both shape what to do next, but PMs are also responsible for the product vision and success. Their focus is mid to long-term.

A traditional Agile model

In PM-based teams, there is the opportunity for engineers to step in and take on some of the PO’s duties that the PM is not going to cover.

In high-performing teams, PMs provide direction and support but most often leave Engineers in charge of creating tickets and managing actual tasks. Requirements focus on outcomes, rather than how to explicitly build stuff, leaving engineers free to make decisions that matter.

The PM + PE model. As the PM scope “shifts to the left”, engineers fill in the gap.
The PM + PE model. As the PM scope “shifts to the left”, engineers fill in the gap.

This culture promotes more ownership and enables personal growth.

More on product engineers 👇

Refactoring
Product Engineers ✨
Read more
10 months ago · 15 likes · 2 comments · Luca Rossi

2) 🔨 Stacked diffs and trunk-based dev

Many big companies like Facebook and Google have a code review workflow that is not based on PRs, but rather on stacked diffs.

Twitter avatar for @dan_abramov
дэн @dan_abramov
I like GitHub announcing new features but really all we need is Stacked Diffs. Please?
8:49 PM ∙ Jun 23, 2021
872Likes54Retweets

Stacked diffs are a way to have your code reviewed without firing up a PR. You take a portion of your local changes and make it available for review. You can stack these changes into multiple requests for reviews, so you never get stuck waiting.

Twitter avatar for @alexandracoding
Alexandra @alexandracoding
The experience I probably miss most from writing code at FB is stacked diffs. It was SO easy to split diffs/PRs and have “1 idea” per change set. I has no clue this was not a widely available feature in industry.
4:25 PM ∙ Jun 30, 2020
36Likes3Retweets

This workflow, other than being faster, allows to (mostly) get rid of branches and work in trunk-based development mode instead. In turn, there is convincing evidence that teams who adopt trunk-based workflows achieve higher velocity and faster turnaround.

If this seems crazy to you, you may reflect on the fact that engineers working in some of the best companies in the world commit directly to master all the time (and often on a monorepo), unless they have a reason not to.

More ideas on code reviews 👇

Refactoring
Code Reviews 🔍
Read more
a year ago · 37 likes · 3 comments · Luca Rossi

3) 💼 Allocate engineering time for hiring

One of the most common mistakes I see in hiring processes is not explicitly allocating enough engineering time for it.

Engineers, in fact, need to be constantly involved:

  • ✍️ They design the interview process — create and update exercises, take-home tests, questions, and more.

  • 📞 They interview candidates — and manage the subsequent feedback process.

  • 📋 They contribute to writing the job post — by setting requirements and responsibilities.

  • 🧑‍🤝‍🧑 They bring in new candidates — via referrals.

Time spent on hiring should be taken into account in the general planning, because it is sizable.

Luca Marchi, Software Engineer at Picnic, reports on this:

All the senior engineers on the team have 2 hours per week allocated for the interviews.

In my experience, you may need even more time than that. Interviews require prep work, writing notes, decision meetings afterwards, and more. It is not uncommon for senior engineers to spend >10% of their time on hiring.

Joel Spolsky similarly advocates for involving most people on the team in interviews:

You should always try to have at least six people interview each candidate that gets hired, including at least five who would be peers of that candidate. [...] If even two of the six interviewers thinks that a person is not worth hiring, don’t hire them.

Six people might be too much for someone, but the main takeaway is that hiring needs wide consensus. That’s because you are not only testing for technical prowess, but also a wider cultural fit. You want your people to feel 1) excited to work with the candidate, and 2) committed to the hiring decision.

More on designing hiring processes 👇

Refactoring
Creating a Good Hiring Process (Part 1) 💼
Read more
9 months ago · 6 likes · Luca Rossi

📣 Join the Refactoring Talent Club

If you’re looking for a new gig, join to get personalized opportunities from hand-selected companies. You can join publicly or anonymously, and leave anytime.

Apply now

If you’re hiring, join the Refactoring Talent Club to start getting bi-monthly drops of world-class hand-curated Engineering people who are open to new opportunities.


And that’s it for today! If you are finding this newsletter valuable, consider doing any of these:

1) ✉️ Subscribe to the newsletter — if you aren’t already, consider becoming a paid subscriber. You can learn more about the benefits of the paid plan here.

Get full access to Refactoring today ✨

2) ❤️ Share it — Refactoring lives thanks to word of mouth. Share the article with your team or with someone to whom it might be useful!

Share

I wish you a great week! ☀️

Luca

Share this post
Monday 3-2-1 – product engineers, stacked diffs, hiring time 💡
refactoring.fm
Comments
TopNewCommunity

No posts

Ready for more?

© 2023 Luca Rossi
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing