Everything can be made up for—except modularity
Good modularity lets you tolerate crummy code locally and fix it later without breaking everything.
Good modularity lets you tolerate crummy code locally and fix it later without breaking everything.
No, QA is not your designated tester. “QA” is a process, not a role: its real job is to help the team grow.
Behind the scenes of my weekly writing: ideation, the writing process, the role of AI, and next steps for these articles.
When the client’s needs become clear over time, the daily rate is the most appropriate solution. But how do you determine it?
LLMs are our new hammers. But the heart of the field isn’t a nail: that’s where we need to keep our focus.
More AI, more code to review, more context switching, more fatigue: the limit is the human factor.
Just because we develop faster, does that mean we no longer need Agility? This idea betrays a misunderstanding of what Agility is.
It’s better to have a little intentional duplication than premature abstraction that mixes business rules that have no business being together.
Your favorite LLM is the perfect companion to ask all your embarrassing questions. But then again, is there really any reason to be embarrassed when you don’t know something?
Coding with an LLM is like managing a team: you have to balance delegation and move forward in small steps.
Sharing your ideas on LinkedIn exposes you to aggressive comments. How should you deal with trolls?
For a young developer who has everything to learn, LLMs are false friends because they discourage the effort to learn.
When should you throw an exception, return an error, or model the absence of an error? The answer lies in the business intent.
Before components, tokens. How to structure a coherent Design System using a well-thought-out token architecture.
An ORM lets you build the domain on entities it exposes, which are directly mapped to the database. This is the opposite of Hexagonal Architecture.
TypeScript is often used only superficially. This is particularly true for Union Types, which help prevent inconsistent states.
Exceptions are not meant to handle predictable errors. Discover the Result type, an alternative to try/catch.
PBT verifies that a business invariant is always satisfied regardless of the parameters and the return value of the function being tested.
Reflections on five years of independence: intellectual stimulation, learning, writing, and freedom.
Radicalism is the refusal to distort words—and thus the refusal to compromise. It is divisive, of course, but that is for the best.