Refactoring

Share this post

Sponsorships, feedback quadrant, feature teams, feature flags 💡

refactoring.fm
💡 Monday 3-2-1

Sponsorships, feedback quadrant, feature teams, feature flags 💡

Monday 3-2-1 — Edition #41

Luca Rossi
Mar 13
8
Share this post

Sponsorships, feedback quadrant, feature teams, feature flags 💡

refactoring.fm
Article voiceover
1×
0:00
-6:03
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:

  • How to Write Secure Code 🔒

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.



📣 Refactoring Sponsorships (new!)

Refactoring is mainly funded by the subscriptions of its paid members. However, in the past we also had the opportunity to work with a few great products to promote them with our readers.

This has led to collaborations with some of my favorite companies, like Reforge, Stepsize, or Swarmia.

In the last two weeks we have completely revamped our sponsorship program to make more of such collaborations possible. If you are interested in learning more, you can find details below:

Promote your product on Refactoring ✨

I only work with products I can genuinely recommend and that can be helpful to readers. I would love to discover more!


1) 📊 The Feedback Quadrant

Kim Scott has seen it all.

She led teams at Google, coached Twitter and Dropbox CEOs, managed a pediatric clinic in Kosovo, and started a diamond-cutting factory in Moscow.

She spent a lifetime managing the most diverse people and leading them to success. Later, she wrote about her learnings in one of the world’s most popular books about management and feedback: Radical Candor.

Kim breaks feedback into four quadrants. On the horizontal axis you have unclear to clear feedback, and on the vertical you have negative to positive.

Whether positive or negative, the best feedback is always clear and specific. On the contrary, it sets up our reports for failure.

Softening negative feedback is human — we want to avoid adding even more pressure on our teammates. Such cruel empathy, though, doesn’t give them the tools to do things differently. It dampens their growth.

Unclear positive feedback is equally ineffective. Simply saying “you are doing a great job” doesn’t cut it, because it doesn’t bring any learning. In the worst cases, it feels artificial and a way to balance the bad one out.

You can learn more about giving good feedback in this previous article 👇

Refactoring
How to Give Feedback 💛
Feedback is one of the most used words in business, and also one of the most literal. If you look it up in a dictionary, feedback occurs when the outputs of a system are routed back as inputs. So the system literally feeds back into itself. The simplest systems to include mechanical feedback were invented in Egypt more than 2000 years ago, and were basica…
Read more
a year ago · 16 likes · 2 comments · Luca Rossi

2) 🧱 Platforms and feature teams

As your engineering team grows larger than the initial 10-15 people, you get to a point where people can’t simply all work together, usually for two reasons:

  • 📣 Communication — in a larger group of people, “everyone does everything” makes it hard to organize work properly.

  • 📚 Skills — technology becomes more complex and it requires specific skills to move forward.

The most natural choice at this stage is to organize your engineering team into layers/platforms based on your tech stack — e.g. Frontend + Backend.

Separating layers helps to build engineering culture and practices, and slowly makes your team shift from generalists to specialists.

Twitter avatar for @lucaronin
Luca Rossi ꩜ @lucaronin
@shl Well, this is true as long as you need to scale ~2x. To scale 10x you need specialists and processes. Can't escape that. The other problem with "generalism" is you always need incredible people. My take is: first 10 hires = incredible generalists, then scale vertically.
10:23 AM ∙ Jan 15, 2021
29Likes3Retweets

In a team organized by platforms, complex features are delivered by Feature Teams.

These are cross-functional teams assembled with the purpose of delivering a specific feature, and dismantled later.

My feeling about Feature Teams is that they are a necessary evil in between the small, “generalists” stage, and the final “products” one where you can assemble durable, independent, cross-functional teams.

Feature Teams have two major pitfalls:

  • 👑 Product ownership — being temporary, teams retain little ownership of what they build. This in turn makes it harder to 1) properly iterate on features and 2) develop product expertise over time.

  • 🍱 Resource allocation — while it is a flexible way to work, it also requires continuous negotiations between stakeholders to define what is the best way to allocate engineers.

You can find more ideas about the various growth stages of an engineering team in this past article 👇

Refactoring
The Three Stages of Engineering Teams 📊
Mike Krieger, co-founder & CTO of Instagram, believes there are three major growth stages every engineering team goes through. These are crucial moments in the wider company evolution, and largely match my own experience at a fast-growing startup first, and a…
Read more
2 years ago · 17 likes · Luca Rossi

3) 🚩 Feature flags and trunk-based development

Trunk-based development is a version control workflow where developers work in small batches and merge their work into the main trunk as often as possible — usually at least once a day.

That is opposed to the common workflow of feature branches, where developers create a separate branch for each new feature, and then work in isolation on that branch until the feature is complete.

There is convincing evidence that teams who adopt trunk-based workflows achieve higher velocity and shorter cycle time.

However, not all projects can be broken down into small, working parts that get completed within a day. How should you work in those cases?

Enter feature flags.

With feature flags, you can keep code in a disabled state, and merge it to the trunk even if the feature is not complete.

Small and frequent merges have some major benefits:

  • Easier code reviews

  • Less chance of conflicts

  • Reduced risk for releases

You can learn more about how to use feature flags, and what they are useful for, in the article below 👇

Refactoring
Feature Flags 🚩
Much of modern software engineering is about shipping fast and often. Studies like Accelerate and the State of DevOps demonstrate that teams that ship the most often are also the most likely to meet or exceed business goals. Highest performers are twice as likely to meet or exceed their organizational performance goals …
Read more
9 months ago · 22 likes · 2 comments · Luca Rossi

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

Sponsorships, feedback quadrant, feature teams, feature flags 💡

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