Refactoring

Share this post

On AI freshness, the pyramid principle, and hierarchies 💡

refactoring.fm

Discover more from Refactoring

Weekly, practical advice on writing great software and working well with humans.
Over 49,000 subscribers
Continue reading
Sign in
💡 Monday Ideas

On AI freshness, the pyramid principle, and hierarchies 💡

Monday 3-2-1 — Edition #44

Luca Rossi
Apr 3, 2023
11
Share this post

On AI freshness, the pyramid principle, and hierarchies 💡

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

  • Refactoring Quarterly Update! 📣

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.


🐋 Skiller Whale

Before we dive into this week’s ideas, I am happy to spend a few words to promote a great product I have discovered recently.

Skiller Whale accelerates developer productivity by targeting the skills that matter through live team coaching.

Live coaching session at Skiller Whale

Live team coaching gives developers a deep understanding of the technology they’re using, through hands-on group sessions, with individual feedback from an expert.

Sign up for a risk-free trial ✨

Skiller Whale is a key part of our long-term technology strategy and will help us continue pushing our innovation and strengthening our overall product offering.
— Meri Willians, CTO at Pleo & former CTO at Monzo

Skiller Whale is the single most valuable thing we offer to our engineers
—
James Ramirez, CTO at Essentia Analytics


1) 🤖 AI & Freshness

I am very excited about using AI to write code. One thing I am worried about, though, is freshness.

A few weeks ago I asked ChatGPT to create a Telegram Bot, written in Node.js.

After generating the code, I asked it to use the Serverless framework to turn it into a function that I could easily deploy on AWS.

Amazingly enough, it did it.

The code works, but there are two problems:

  1. It uses the old way of handling the function—with the callback—while the recommended way today uses the async / await syntax.

  2. It uses the deprecated "on" method for the Telegram Bot, instead of the new filter utils.

This likely happens because you can find way more examples online with these methods than with the new ones, as the former have been around for longer.

This freshness problem worries me for two reasons:

  1. I have no way of detecting it — sure, you can ask the AI to rewrite the code in the new way, but you have to know it first.

  2. It feels intrinsic to how AI works — the model is trained on data, so it is always going to favor stuff for which it has the most of it.

I wonder whether, in the future, new frameworks will have a tougher adoption curve because people will just stick with the ones where the AI is best.

More reflections on AI and coding:

Refactoring
AI & The Future of Coding 🤖
Hey! Let’s get something out of the way: this article has not been written by an AI. I know, it sucks. I am sorry. These are just some very human thoughts of mine, packed with emojis and questionable grammar choices. Thoughts about AI, though. In fact, over the past two weeks, basically all conversations I had with peers touched on the AI subject somehow…
Read more
9 months ago · 15 likes · 4 comments · Luca Rossi

2) 🔺 The Pyramid Principle

One of the most influential works about structuring effective communication is The Minto Pyramid Principle, by Barbara Minto.

In her book, she introduces the SCQA framework for presenting ideas in a way that captures the recipient’s attention and increases the chances they understand them. Each idea should be organized into four sections:

  1. Situation — the context, or the status quo.

  2. Complication — a change or a problem in the current situation which makes this communication necessary.

  3. Question — the main problem statement.

  4. Answer — your best answer to the posed question, or the process to put in place to get such answer.

At this point, you typically need to support your proposed answer with arguments and ideas. Such ideas should form a pyramid under a single thought, which is the answer you propose.

The SCQA + Pyramid Principle, summarized.

Below that, you should summarize and group the next level of supporting arguments. So, the Pyramid Principle is based on three key concepts:

  1. Start with the answer first — most people think better in a top-down fashion. Start with the answer and present supporting ideas later.

  2. Summarize and group supporting arguments — force yourself to limit the number of arguments you propose, by grouping them and focusing on the main ones. Minto suggests the Rule of Three.

  3. Logically order your supporting ideas — make sure that the ideas you bring together under each group actually belong together, are at the same level of importance, and follow some logical structure.

More ideas and examples on how to improve your communication skills:

Refactoring
How to Improve your Communication 📣
A few months ago I conducted a comprehensive survey about engineering careers. It provided many insights, one of which is that people believe non-technical skills are crucial for advancing their careers — even more so than technical ones like coding or system design…
Read more
7 months ago · 16 likes · Luca Rossi

3) 🏰 Hierarchy scales communication

As long as your team is small, there isn’t much need for a formal organization — 5 to 10 people can work pretty well without structure.

The main problem, when teams grow larger, is communication. Large teams have a hard time keeping people on the same page, allocating resources, and making good, participated decisions.

As you grow, these problems seem to get worse gradually at first, and then suddenly. Why?

As by Metcalfe’s Law, the complexity of communication is proportional to the square of the number of users involved. So, while people grow linearly, complexity grows geometrically.

To tame communication complexity, companies usually introduce hierarchies. Hierarchies have many advantages:

  • They provide clear communication paths, ensuring alignment across the org.

  • They reduce the number of lines each person has to manage, allowing the company to scale.

  • They provide a simple way for making decisions, by assigning clear responsibilities.

https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ba7ba34-6314-462a-9de0-f5498d144380_1832x906.png
Same 7-people team, different configurations

Hierarchy, however, also brings drawbacks:

  • Overhead — communication has a longer way to travel to a destination, which makes you slower. Longer paths also create all kinds of “work’s work”, like traffic controlling, managing up, presentations, and more.

  • Inflexibility — once in place, it is hard to reconfigure roles and processes. This in turn reduces agility, resilience to turnover, and velocity, too.

There are companies who successfully scaled without introducing hierarchies. I wrote a two-part series about them:

Refactoring
Unconventional Team Structures (Part 1) 🏰
A couple of weeks ago I had a chat with a VC who is also a reader of Refactoring. We agreed that today there starts to be some consensus about how to structure engineering teams, while just 10 years ago, when I founded my first startup, things were pretty messy…
Read more
a year ago · 8 likes · Luca Rossi

💼 Are you hiring engineers?

In 2+ years of Refactoring and with 30K+ subscribers, I routinely get asked for help about hiring. I always do my best and over time I helped tens of companies hire probably 50+ engineers.

So, if you are hiring developers, I can probably help. Feel free to reach out by replying to this email, or DM me anywhere.


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

11
Share this post

On AI freshness, the pyramid principle, and hierarchies 💡

refactoring.fm
Share
Comments
Top
New
Community

No posts

Ready for more?

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