The solution
Every developer at incident.io gets a MacBook, and the codebase is a near-million-line Go monolith where the local loop of changing code, compiling and restarting is meant to stay under 30 seconds. When Apple announced the M3 MacBook Pro in October 2023, engineers wanted one, and CTO Pete set the bar: 'If you can prove it's worthwhile, we'll do it.' The naive route is comparing spec sheets, trusting Apple's own benchmark claims, or buying the top tier for everyone.
The team turned the question into a measurement problem. Their existing hot-reloader was already causing problems, so they replaced it with one they wrote themselves: an invisible wrapper around make run that, whenever a build finishes, sends an event with the machine platform, memory, power source, total duration, per-stage times and the files that triggered the rebuild. Events flowed through Fivetran into the data warehouse, and several weeks of ordinary development produced about 25k builds without anyone changing their workflow.
Analysis could not be a simple average, because Go's cache makes builds wildly different: a comment-only change can compile in under a second, while a change to a base package recompiles most of the app and takes over a minute. Using an OpenAI assistant with a code interpreter, they dropped failed and cancelled builds, kept only AC-powered builds after a t-test (p about 0.0014) showed battery throttling, and split the rest by cache depth. They also bought three test laptops — M3 Pros with 18GB and 36GB, and an M3 Max with 36GB — and compared them with the M1 and M2 fleet.
The data showed M2 was already a significant jump over M1, M3 only an incremental improvement over M2, and the M3 Max's extra cores were not worth its roughly 60% price premium for Go compiles. Memory told a subtler story: machines with 32–36GB almost always finished linking in under 20 seconds, while 16–18GB machines routinely took longer. So the company upgraded everyone on an M1 to the base M3 Pro with 36GB and left the M2s in place. The article went up on 19 December 2023 and hit Hacker News on 28 December with 653 points and 408 comments.
What it achieved
Measure the real feedback loop, not the spec sheet: turn every local build into telemetry, clean the confounders, and let compile times set the budget
Why it worked
It measures the loop developers actually wait on, real compiles, links and restarts of their own codebase, so the purchase decision maps to productivity rather than marketing claims.
The telemetry rode on an invisible tooling swap, so data collection changed nobody's workflow and kept flowing after the decision was made.
Cleaning confounders such as cancelled builds, battery throttling and Go cache depth kept small but real differences visible instead of averaging them into noise.
Buying one of each tier turned price premiums into testable questions: the M3 Max's 60% premium bought nothing measurable, while 36GB fixed the slow linking that 18GB machines showed.
What can be applied
Before spending on developer hardware, instrument the actual feedback loop: collect real build telemetry, clean for cache, power and cancelled runs, and let the data pick the tier to buy
Aftermath
The order went in for the base M3 Pro with 36GB for everyone on an M1, while M2 owners kept their machines. The new hot-reloader also fixed stale-code restarts, gave the team a reusable benchmark for future hardware decisions, and mapped its Go dependency graph. The memory finding fed a plan to drop Docker from developer machines, since freeing system memory sped up linking. Lawrence Jones, the author, told Hacker News it took about 2.5 days, less than one MacBook, and was worth it for hiring and brand exposure. The 28 December 2023 thread drew 653 points and 408 comments.
FOLLOW THE EVIDENCE
The sources
- Apple unveils new MacBook Pro featuring M3 chips apple.com
- Maximizing Developer Effectiveness martinfowler.com
- Tracking developer build times to decide if the M3 MacBook is worth upgrading (Hacker News discussion) news.ycombinator.com