Welcome to my PinkLetter. A short, weekly, technology-agnostic, and pink newsletter where we cultivate timeless skills about web development.
I worked with an agency that charged clients for time and materials. I hated it. Every. Single. Hour.
Let’s leave aside how much it sucks to keep a tally of how much time you worked on what. Not to count all those random modifiers you apply to be fair to the client: “I should have known it”, “I made a silly mistake”, and “I wasn’t so productive today”.
However, the worst part is that incentives are misaligned: the better you are, the less you charge, and the risk falls on your client: you are late so they pay—doesn’t sound that right when you say it out loud.
I’m aware of Hofstadter’s Law:
It always takes longer than you expect, even when you take into account Hofstadter’s Law.
But I refuse to accept that time and materials is the best we can do.
I don’t sell hours, I sell outcomes, and my professionalism should be on the line, not my client’s money.
Before you write any code — ask if you could ever possibly want multiple kinds of the thing you are coding. If yes, just do it. Now, not later.
(Riccardo: Thought-provoking but true in some cases?)
We all have moments that change the way we think, the way that we look at the world, the things we want to do with our lives. On July 20, 1969 a whole generation of Americans had one of those transforming experiences: Two men landed on the Moon and nothing was ever the same again.
(Riccardo: Imagine getting a blue screen of death while you are landing on the moon.)
TypeScript provides several utility types◹ to help us manipulate types easier, like: Partial
(Riccardo: Looking at utility types is an excellent way to learn type-level programming in TypeScript)