Continuous docs, product engineers, good abstractions π‘
Monday Ideas β Edition #66
Hey, Luca here! Welcome to the Monday Ideas π‘
Every Monday I will send you an email like this withΒ 3 short ideasΒ about making great software, working with humans, and personal growth.
You will also receive a long-form, original article on Thursday, like the last one:
To receive all the full articles and support Refactoring, consider subscribing if you havenβt already!
p.s. you can learn more about theΒ benefits of the paid plan here.
</> Coderpad
Have you ever had to reverse-sort a binary tree at your job? Probably not.
Thatβs why 4,000+ engineering teams (including Netflix, Lyft and Spotify) have ditched the algorithm interview questions and use CoderPadβs collaborative IDE to actually code with candidates (See the Sandbox) π
With a realistic and customizable IDE that supports 40+ languages and frameworks, you can drag and drop a repo, add packages with npm install & watch code playback after the interview.
Itβs a great way to pair program with candidates to see if they would be a good fit for your team.
Coderpad is a sponsor of Refactoring π check out here how we run sponsorships transparently.
1) πΒ Continuous Docs
I have found that teams that are good at writing docs, all have a major thing in common: they donβt write docs only at the end of a project β they write them throughout its whole life cycle.
In fact, writing docs β of whatever kind β has many benefits:
πΒ Help your reasoningΒ β writing is thinking. Going through the process of writing a formal document helps solidify your reasoning and come up with a better solution.
β‘Β Improve outputΒ β you can support your writing with previously created templates, checklists, and examples. These make the work lighter and lead to better results.
π¬Β Improve communicationΒ β it is easier to have good conversations about complex topics when these are backed by writing. You get more thorough reasoning and easier convergence.
πΒ Future referenceΒ β docs naturally record decisions and can be used for posterity.
These benefits happen throughout the whole life of a project, from inception to release to future maintenance.
Now, I have found that most teamsΒ over-index on the future referenceΒ use case, while neglecting the first two. But writing docs onlyΒ afterΒ the fact is like retrofitting unit tests to production code: not completely useless, but you miss out on a lot of value.
Also, writing docs at the end is genuinely harder than doing it gradually while the work is in progress. Artifacts like meeting notes and design docs are not only usefulΒ per se βΒ they naturally turn into long-term docs, later, with very little effort.
So the best way to write more docs β and write better ones β is usually to find ways to write them throughout the whole project lifecycle.
You can find more ideas about writing good docs in this recent Refactoring guide π
2) Abstractions should be core + have short payoff
When talking with early stage startups, I warn them against heavy engineering investments and premature abstractions, for two reasons:
π Product evolution β product evolution often invalidates your assumptions, turning your formerly sensible abstractions into big piles of tech debt.
π Distant payoff β you may invest in the right abstraction, but whose payoff is too far in the future, and don't live enough to see it.
With time and gray hair I have become more and more conservative about tech investments.
As a startup I would focus on stuff that is truly core to your value prop, and whose payoff is reasonably short-term.
3) β¨Β The Rise of Product Engineers
In recent years, I have noticed that more and more engineering roles are being identified by their area of impact (e.g. Product Engineer, Customer Success Engineer), rather than tech platform (e.g. Frontend Engineer, Backend Engineer)
Out of these, the Product Engineer role is the most representative of this shift and has become a staple in successful companies like Stripe, Intercom, Atlassian, and more.
Here is how Intercom defines it:
As a PE, youβll be taking ownership of real customer problems by building smart, efficient solutions to both backend and frontend [...] There are projects for you to own in multiple areas, such as our messenger, bots, rule matching, [...]
The push for Product Engineers 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.
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.
This culture promotes more ownership and enables personal growth.
You can find real-world stories about how product engineering works in companies in this previous article π
βοΈ Trinetix
Have an innovative product vision or transformation idea?
In case you missed it, last week we promoted the great work done by Trinetix, which makes you move from ideation to value creation in 5 simple steps.
Power your strategy and de-risk innovation via rapid validation, actionable user insights, and strategic experience transformation β securing long-term value for your business, employees, and customers.
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.
2)Β π»Β Read with your friendsΒ β Refactoring lives thanks to word of mouth. Share the article with your with someone who would like it, and get a free membership through the new referral program.
I wish you aΒ great week! βοΈ
Luca
Consistent record
Noted
Kept nol
Aavilability when we don't or agiuments
Direct indirect opinion on allade