Made Basecamp and HEY for the underdogs as co-owner and CTO of 37signals. Created Ruby on Rails. Wrote REWORK, It Doesn't Have to Be Crazy at Work, and REMOTE.
The hardest part for me about collaborating with junior programmers, whether it's in open source or at work, is avoiding the premise trap. That's where the fundamental assumptions baked into the first draft of the code aren't questioned until you've already spent far too long improving the implementation. It's the same with AI.
Because AI at the moment is like a superb junior programmer. One with an encyclopedic knowledge about syntax and APIs, but also one saddled with the same propensities to produce overly-complicated, subtly-defective solutions.
You could read this as a bullish signal for the future of AI programming. That the current trajectory is tracking with the human programmer's progression tree, and that eventually, like the best juniors, it'll graduate to senior levels of competence in the fine details of code aesthetics, novel problem reasoning, and architectural coherence. I hope that's the case.
But that doesn't change the fact that, as of right now, I've yet to see any of the AI models I've been using for the past year produce great code within domains that I'm very familiar with. Occasionally there'll be a glimmer, just like with promising junior programmers, but taken as a whole, the solutions almost always need material amounts of rework.
Which is when that premise trap claps!
I've seen this repeatedly with both the Ruby and JavaScript code that comes out of the AI, so I doubt it's that particular to one language over another. But the propensity to pull in needless dependencies, the overly-verbose presentation, and the architectural dead ends are there all the time.
This is what I hear from people who are trying to use AI to write entire systems for them without actually being capable programmers themselves. That it's an incredible rush to see a prototype come to life in mere minutes, but that actually moving this forward to something that works reliably often turns into a one-step-forwards-two-steps-backwards dance. (Not unlike the many stories someone might have getting catfished by a barely qualified junior programmer on Upwork!).
While that's frustrating, it makes perfect sense when you consider the training data that has been teaching these models. The endless stream of basic online tutorials, Stack Overflow simplified answers, and the unfortunate reality that a fair chunk of internet programming content is made by the blind leading the blind.
Senior human programmers all got started on the same information diet, but eventually graduated to higher levels of understanding and mastery by working on proprietary code bases. Where all the trade-offs that are absent in tutorial-style code reveal themselves and demand to be weighed with finesse.
I think the next big leap for these models under the current paradigm probably isn't likely to happen until they're exposed to a vast corpus on proprietary, corporate code. And how that's going to happen isn't entirely clear at the moment.
So in the mean time, as a senior programmer, you'd do well to treat AI as you would a junior programmer. It's rarely going to save you time asking it to produce an entire system, or even subsystem, if you care about the final quality of the architecture or implementation. Because to verify the assumptions that have been baked into its path will require spending as much time to understand the choices as it would doing the work yourself.
I remain bullish on AI writing code for us all, but also remain realistic about its current abilities. As well as alert to the danger of luring more senior programmers, including myself, into signing off on slop, while it saps our stamina for continued learning, as we lean too much on AI writing for us rather than teaching how.
May this piece age badly within a few short years!
Jaguar's new rebrand is getting murdered online, and for good reason. The clichés are as thick as the diversity pandering is dated. CREATE EXUBERANT. LIVE VIVID. DELETE ORDINARY. You'd think these were slogans from a Will Ferrel bit about insufferable marketing trons, but nope, that's the 2024 campaign for a car maker that won't be selling any cars until 2026. Utterly tone-deaf, out of tune with the vibe shift, and quite likely the final gasp of a storied but dying British brand. SAD!
Contrast this with the advertisement for Volvo's latest EX90. It's a 3:45-minute emotional cinematic ride that illustrates to perfect what it means to have a strong brand. To stand for something, and actually mean it.
It's not even that original! They did a variation of the same theme six years ago for the same car, but that detracts nothing from its brilliance. In fact, the opposite. Brand is like culture: It's all about repetition and authenticity. Being who you say you are, over and over.
Volvo is safety, safety is paramount to parents, so Volvo is for parents. It's that simple, and it's that powerful. But only because it's actually true! You couldn't run this branding campaign for, say, Toyota, and see the same success. Toyota has their roots in reliability. That's their story.
But Volvo literally does care. Their history includes giving away the patent to the seatbelt. In Sweden, they have a crash response team that goes to the scene of accidents involving Volvo cars to learn how they can become safer (and they've been doing this since the 70s!!). And in the UK, the XC90 had no official deaths recorded since the car was introduced in 2004 (at least per 2018).
Volvo also does safety quite differently than most auto makers. They're not just studying and optimizing for the crash-ratings tests, which is what it seems drive most other manufacturers. Their cars do very well when the test expands to include new scenarios because it's designed to be best-in-reality not just best-in-test.
All that is to say that the branding strength of Volvo rests on congruence, consistency, and commitment to doing the same thing, a little better every year, for basically an eternity. It's incredibly inspiring.
Frankly, it makes me want to buy a Volvo! Even though by all sorts of natural inclinations (speed/design/heritage), I should be interested in a new Jaguar. But I wouldn't be caught dead in a Jaguar now. That's the power of advertisement: To lift and to diminish.
I'm sure there are truly pathological cases of ADHD out there, and maybe taking amphetamines really is a magic pill for some folks. But there clearly is also an entire cottage industry cropping up around convincing perfectly normal people that they suffer from ADHD, and that this explains many unwanted aspects of the human condition.
Take this thread I stumbled across on X today by an "ADHD coach": The ADHD Basics. It lists five primary symptoms:
Forgetfulness.
High standards / perfectionism.
Attraction to novelty.
Lack of consistency.
Difficulty establishing/breaking habits.
No wonder we've seen an explosion of ADHD diagnosis. This list applies to most humans at least part of the time! I would even say that all five applies to me much of the time. So does this mean I suffer from ADHD and should start taking Adderall? Come on.
This is usually when the hand waving starts: "Sure, you may recognize all those symptoms, but for true ADHD sufferers, they're just, like, worse!". Okay, but what kind of diagnostic standard is that?!
The official presentation of ADHD symptoms as listed on Wikipedia isn't much better than what the five from the ADHD coach either. It includes markers such as:
"Frequently overlooks details or makes careless mistakes"
"Often cannot quietly engage in leisure activities or play"
"Often talks excessively"
"Often has difficulty maintaining focus on one task or play activity"
"Is frequently easily distracted by extraneous stimuli"
Again, I can recognize myself in several of those from time to time. And if you include the entire list of markers from the DSM-5, I'm sure I can rack up the five+ necessary to earn an official designation of ADHD. That's just ridiculous.
It's even worse when it comes to kids, but Abigail Shrier already covered that topic expertly in Bad Therapy, so I won't repeat that here. If only to marvel at the collective insanity where being loud or animated during play is a pathological marker for children! Now that's crazy.
But I know this is a touchy subject for plenty of parents of kids who struggle in ways that might fall under some of these rubrics. So let's leave the kids out of this for a minute and focus on the adults instead.
A total of 45 million Adderall prescriptions were written in the US in 2023. That's up from 35 million in 2019. A great many of these were surely made to people who got convinced that being "forgetful" or "attracted to novelty" isn't just part of being human, but an affliction requiring amphetamines to mitigate.
What this reminds me of is the concept of cold readings. Where a psychic slyly prods for revealing details from their subject while vaguely throwing out potential hooks left, right, and center. The subject is induced to ignore the vagueness that doesn't apply to their situation, but focus on the inevitable hits that convince someone that what they desperately want to hear is true.
I think a lot of people desperately want to hear that there's a medical reason for why they sometimes can't focus, don't feel motivated, forget things, or find breaking bad habits hard (and not something as boring as you need better sleep, regular exercise, and an improved diet). So when ADHD coaches show up to make them feel better with a medical label, it's compelling to partake in the cold reading, and get the answer you were hoping for.
But that's nonsense. You don't need a diagnosis to be a flawed human. It goes for all of us. So if you want to supercharge your morning's productivity routine by popping a pill or two of amphetamines, own it! Don't hide behind some label (or think you're immune to the long-term effects of taking speed either).
But Tobi's contributions to Ruby on Rails extend far beyond his individual commits to the framework, creating Active Merchant and the Liquid templating system, or serving on the Rails Core Team back in the early days. With Shopify, Tobi more or less single-handedly killed the zombie argument that Rails couldn't scale by building the world's most popular hosted e-commerce platform and routing a sizable portion of all online sales through it.
In the process, Tobi built an incredible technical organization to support this effort. Shopify employs a third of the Rails Core Team, developed the YJIT compiler for Ruby, and contributed in a billion other ways. They are without a doubt the most generous benefactor in the Ruby on Rails world.
So when Tobi asked me whether I'd be interested in joining Shopify's board, I needed no pause to consider the invitation. OF COURSE I WOULD!
But to be honest, it wasn't just a reflexive answer to service the gratitude I've felt toward Shopify for many years. It was also to satisfy a selfish curiosity to wrestle with problems at a scale that none of my own work has ever touched.
Both in terms of the frontier programming problems inherent in dealing with a majestic monolith clocking in at five million lines of code, and the challenge of guiding thousands of programmers to productively extend it, Shopify deals with a scale several orders of magnitude beyond what I do day-to-day at 37signals. That's interesting!
So too is the sheer magnitude of the impact Shopify is having on the world of commerce. While much of the web is decaying to enshitification and entropy, Shopify stores stand out by being faster to browse, quicker to checkout, and easier to trust. That's enabling a vast array of individual entrepreneurs and businesses to have a competitive shopping experience against the likes of Amazon, without needing huge teams to do it.
It's always a delight when I findacoolstore, and I learn that it's running on Shopify. As I spoke with Tobi about on the announcement show, this was really hammered home after I got into mechanical keyboards. Seemingly every single vendor of thocky and clicky keyboards use Shopify! And when I see that, not only am I sure that buying won't be a hassle, but I also know I'm not going to get scammed. That's the Shopify magic: Leveling the commercial playing field between some obscure keyboard maker and the consolidated titans of e-commerce.
And now I get to help further that mission from the inside! What a treat. Thanks Tobi!
I haven't felt any urge to tinker with my Linux setup in months. This after spending much of the spring and into summer furiously and obsessively trying every PC out there to find the perfect replacement for the Mac, diving deep with Ubuntu, and codifying my findings in the Omakub project. But now it's done, and I'm left enjoying the Apple-free spoils of a new, better place without any recurring work.
It was the same experience getting out of the cloud. For months, I spent all my time building Kamal, examining server components, and plotting our path. But then we did it, and then it was done.
Ditto with Rails 8. Huge push to get the Solid Trifecta to line up with a release that included Propshaft and the authentication generator, and the rest of all the amazing steps forward I covered in the Rails World keynote. Now that's done too, and all new Rails apps enjoy the compressed complexity.
At the company level, most of our work is a marathon. That's how you stay in business for twenty years and beyond. By sticking with it. But at the executive level, almost all big leaps forward are sprints inspired by a hunch. They have to be sprints, because the level of intensity required to get that hunch over the hill is just too high to sustain for long (unless, I guess, you're Elon!).
That to me is the best argument for making sure my plate isn't full of half-eaten commitments. That my calendar isn't clogged with an endless ream of recurring meetings. Such that my mind remains an open, blank slate when one of those obsessive opportunities flutter by.
It was a deep dive into Docker, originally without any clear mission beyond curiosity, that lead to Kamal, and our path out of the cloud. Oh, and getting enamored by the speed of Gen 4 SSDs was what planted the seed for the Solid Trifecta.
I couldn't have planned any of this even if I wanted to. But I also don't want to. There are few things more satisfying to me than following a hunch and seeing where it leads, without a commitment to a specific, final destination.
It's a little like writing. Half the joy of composing these paragraphs come from discovering the arguments as the piece develops. Every essay starts with a hunch, but the final shape is rarely clear until the mind has been left to wrestle with the words for a while.
So that's why my answer to the usual question of "what's next?": I don't know! Because if I did, I'd already be half-way done doing it. And then it wouldn't really be next, it'd be now.
Finding the next now is the art of wandering, and wandering well takes practice and patience. Don't rush it.
We play a lot of Fortnite at our house. It's a great game for teaching kids cooperative discipline, and in a remarkably wholesome setting to boot (no blood, cartoon styling). I've had no qualms involving all three of our boys from an early age in the family squad, including our two youngest from around age four.
Since we started playing, I've just had two primary house rules:
Stay together.
No complaining.
Sounds simple, but it's ever-so tempting to stray from the squad to chase your own goal of getting better gear, and it comes easy to blame your brother when the other team gets you. Especially when you're still a preschooler!
But that's why Fortnite is such an effective tool for teaching discipline. Because if you want to win in a team-based context like that, you have to work together as a team, and you'll quickly realize that sticking to the rules makes that way more likely.
It's also teaches you how to lose gracefully. If you get all pissy and blamey when you're knocked out, the session ends, because nobody wants to listen to that (especially dad!). So if you want to play more, and get better, you better start tempering your frustrations. Wonderful life skill to develop early.
Equally, it's a delightful game to beat together. Unlike something like Mario Kart or Smash Brothers, which pits the family against itself (also fun, but less learning!), Fortnite puts us all on the same team, striving for the same objective, and in line to celebrate together when we're successful.
When you add it all up, it's one of my favorite activities with the kids. It's highly rewarding to see them internalize both the big life lessons mentioned above, as well as the nitty-gritty tactical insights, like always seeking higher ground, securing cover, and having proper backup before engaging.