I’m thrilled to announce that my commercial “Testing Without Mocks” training course is now available for free!
My “Testing Without Mocks” resources—also known as “Nullables”—are consistently among the most popular material on my site. I used to offer an instructor-led course for it. But I’m too busy for that now, so I’ve released that same high-quality course in a self-guided format.
What if, instead of saying, “you can’t manage what you don’t measure,” we said, “you can’t manage what you don’t understand?” With the addendum: “*metrics aren’t a substitute for understanding.”
"In my new role as VP of Engineering, there was one question I was dreading more than any other: 'How are you measuring productivity?'
I can’t fault the question. I mean, sure, I’d rather it be phrased about how I’m improving productivity, rather than how I’m measuring it, but fair enough. There are real problems in the org, I do need to fix them, and I need to demonstrate that I’m doing so."
@jamesshore very interesting article! Also, "product bets" is a very interesting concept, but I fear it may hide a trap: since it considers the bet the number of eng-days to employ against future return over multiple years, it seems to me that it doesn't consider the ongoing cost that the new feature (or any shortcut take) may introduce.
Is there a failsafe against this problem? Maybe some detail that you didn't mention?
"What I’m really doing is changing the engineering culture at OpenSesame. Culture doesn’t change easily. It tends to snap back. True change involves changing hundreds of little day-to-day decisions. That’s hard, even when people want to make those changes, and full buy-in is hard to come by... This is where the new career ladder comes in."
@jamesshore@marick Reading through it, it seems pretty aligned to the roles usually needed. I'm also trying to change a culture and it's hard, especially when the focus of the company isn't on tech, and works with a lot of contractor. For me it's a slow change over time persuading people that a strong digital culture is just as important as a retail one.
I'm happy to announce that my Testing Without Mocks training course has returned! This is an in-person course that's ideal for people in Europe. It's taking place in Budapest, just prior to the Craft Conference, on May 28th and 29th.
I'm not sure when I'll have a chance to deliver the course again, so if you're interested, this is a rare opportunity.
@jamesshore@RonJeffries@jasongorman Then I suggest the following: I'll use the naming convention you recommend, and at a future stage of the exploration (maybe when we're trying another language) we can introduce a different type of data store, and see how that affects the existing code at that point. That might help make the project useful, as well.
Hey folks, you might be wondering why I've been so quiet lately. It's because I joined a late-stage startup as VP of Eng. Now for the best part: I'm hiring multiple Staff Engineers / XP coaches to help me transition the company to XP. We're also using FaST (Fluid Scaling Technology). Details follow:
If you've got kids and like C64 or old-school basic, my friend Woldie's got a really neat project for sparking kids' interest in coding: Saturday Morning Code-Toons, complete with old-school programming environment and turtle graphics! Very cool stuff. The latest episode is here:
@jitterted@mlevison It’s in the AI Chronicles source code, which is under an MIT license, and I just pushed the incremental testing changes to the repo. I don’t have a formal npm release, but I’m thinking about doing it if there’s enough interest.
I have to confess to some hubris. After evaluating the various Node.js testing frameworks, I've decided to write my own instead. In this 🧵, I'll explain why. Mostly so I can remember it for the future.
This week on my #livecoding stream with @jitterted, we discuss estimation, responding to dealine pressure, academic studies, and more. Oh, and our tests find a bug that only #nullables could expose!
This is the final episode of the season, but we'll be back in two weeks with an interesting new problem: a natural-language role-playing game. We'll be using #TypeScript + #React with a #Java + #SpringBoot back end to integrate with #ChatGPT. Should be super interesting.
That starts in two weeks—the livestream is May 8th from 1-4pm Pacific, and the recording will go up on May 12th. Calendar reminder here:
Nullables are a novel approach to testing that allow you to create fast, reliable tests without using mocks (or interfaces). They're a way of "turning off" production code so you can have sociable, state-based tests that don't talk to the outside world.
I'm hosting office hours on May 10th at 9am Pacific / 12pm Eastern / 18:00 CEST for anybody who'd like to discuss these ideas. Bring your code! Details and a calendar reminder are available here: https://www.jamesshore.com/v2/calendar/2023-05-10
There seems to be a generation of programmers who believe interfaces (as in “interface MyInterface”) creates decoupling, so have an interface for every class is a good thing. I can’t agree. Code is decoupled when a change HERE doesn’t require a change THERE. An interface with one implementation does little to help, in most cases, and adds a lot of noise. If you think sprinkling interfaces everywhere magically makes code “decoupled,” you almost certainly have REAL coupling issues you’re ignoring.
Here’s a crazy idea: instead of story points, let’s make them after fruit. Story pears, story kiwis, story grapes. Then, when a manager complains one team has a bigger number than another: “Sorry, you can’t compare apples and oranges.”