1) Work on the unsolved problems in AI coding 🧠
This idea is brought to you by today’s sponsor, Outlier!
Outlier helps enterprises improve their internal AI models by providing specialized human feedback. They are looking for skilled frontend developers to teach AI how to interpret and solve complex programming problems.
If you are looking for a flexible, fully remote side hustle with weekly payouts, you can learn more below!
2) From player to coach 🏀
I am a sports fan, and I like to think about the transition from IC to manager, as the one from being a player to being a coach.
In fact, things that make you effective as a coach are often quite different from those that make you effective as a player.
Let’s use basketball as an example:
🏀 As a player — you’re on the court. You’re responsible for executing plays and defending effectively. You may be the captain, in which case you’ll also make decisions in real-time on which plays to execute throughout the game.
👔 As a coach — you’re off the court. You set the strategy for the game, and build the plays that the team executes. You’re responsible for ensuring your team is healthy and strong – physically and mentally. And, when the game is not going your way, you’re responsible for picking the right play and/or changing strategy accordingly.
The best coaches differentiate themselves by coordinating their team‘s efforts and plays. Similarly, as an EM, the most effective levers you have to influence your team are your systems and processes.
We talked about this several times, for example:
👔 Changing Roles: from Engineer to Manager — awesome guest post from my friend Louis Bennett.
📗 An Elegant Puzzle — our review + summary of the masterpiece by Will Larson about Engineering Management.
3) 🗿 Monorepos are just better
I believe that today, in 2025, monorepos are the best way to organize codebases. More specifically, I believe they are a lot better (not just a little) than polyrepos, for the vast majority of orgs.
The TL;DR is that there have been historically very real pros and cons about monorepos vs polyrepos, but while today the cons of monorepos have been largely solved with tooling, the cons of polyrepos are all still out and about.
Here is a sample of the latter, paraphrased from a real-world team exploration done by Danilo Spinelli:
Refactoring complexity — in a poly-repo environment, tasks like library updates or major refactoring become highly complex. Each repository must be individually updated, requiring significant coordination and increasing the risk of inconsistencies and integration issues.
Hard-to-propagate updates — changes made to common packages are less visible in a polyrepo structure. This necessitates the additional steps of publishing the packages and then updating each repository with a separate pull request (PR).
Service misalignment — due to the above, there is a high risk of software components becoming misaligned, depending on the update status of common packages.
Distributed code reviews — pull requests can be spread across multiple repos, making the review process more complex, hard to monitor and time-consuming.
Duplication of settings — essential settings like security measures, identity, and pipeline boilerplates need to be replicated in each repo. Updates to any of these common elements require refactoring across multiple repos, increasing the workload and potential for errors.
Documentation challenges — when common docs pertain to multiple components, it becomes unclear where to place them in a polyrepo setup, leading to potential accessibility and update issues.
Here is also a detailed post-mortem by Segment about how they moved from 100+ repositories back to a monolith+monorepo.
Monorepos have different challenges, that mostly revolve around building and continuous integration. You don’t want to re-run the whole pipeline when a small change is made. Also, each workspace has its own test suite, its own linting, and its own build process. So a single monorepo might have thousands of tasks to execute.
These problems, however, are largely solved by modern build tools, that cache the results of individual build tasks so that no work is ever done twice. For Javascript stacks, you can check out Turborepo.
I wrote a more in-depth analysis of the monolith vs microservices debate (which is not the same — but related) in this past article.
You can find other techniques we recommend for 2025 in our yearly tech radar below!
4) 🪜 Single-track career frameworks
There is wide consensus today that companies should separate management and IC career tracks, because it’s different skills, different aspirations, etc.
Even though this is right in principle, there exist situations where a single track makes sense.
If you are a small team, say under 30 people, you may not need full-time managers and you may compress the management + tech leadership duties onto the same people.
So, in such a scenario, senior engineers can only be promoted into managers.
I know, outrageous!
But in small companies there might be no way for an IC to progress further, because you simply don’t have the kind of work for which you need Staff+ Engineers.
Will all the people want to turn into managers? No!
Are you providing equal growth opportunities to people who want to stay ICs? Also no!
And that’s fine — not all opportunities exist everywhere at a given time. Just be transparent about what exists in your company and what not.
I wrote more about designing career frameworks in this two-part series 👇
And that’s it for today! If you are finding this newsletter valuable, consider doing any of these:
1) 🔒 Subscribe to the full version — if you aren’t already, consider becoming a paid subscriber. 1700+ engineers and managers have joined already! Learn more about the benefits of the paid plan here.
2) 📣 Advertise with us — we are always looking for great products that we can recommend to our readers. If you are interested in reaching an audience of tech executives, decision-makers, and engineers, you may want to advertise with us 👇
If you have any comments or feedback, just respond to this email!
I wish you a great week! ☀️
Luca