• Writing tests isn’t the developer’s job.
  • Pull requests are a waste of time. (More on that in a future post: “Unbranching software, unleashing productivity.”)
  • How do we measure developer productivity?

My answer is usually one word: hopeless. The people aren’t the problem — most are smart and capable. The fix is. Every one of these asks the team to change a behaviour it has quietly agreed not to touch, and we circle them for years because solving them means admitting we’ve been wrong, sometimes for a decade.

So here is my running list of what’s actually hopeless in product engineering, and the comfortable reason we keep doing each one anyway.


The quality delusion

Shipping code without tests is hopeless. We skip them because tests feel like extra work, right up until the bug they’d have caught ships to a customer.

Outsourcing quality to a QA team instead of to automation is hopeless. It’s easier to hire someone to find bugs than to build quality into the work.

Treating QA as “quality assurance” rather than quality automation is hopeless. We prefer the feeling of safety to the cost of the real thing.

The product management confusion

A PM who doesn’t shape stories with research and acceptance criteria is hopeless. Leadership rewards feature output, so PMs quietly become feature factories.

Treating a product manager as a project manager is hopeless. Controlling dates feels safer than trusting product decisions.

The organisational dysfunction

Adding managers whose only job is to manage people is hopeless. A familiar hierarchy feels safer than a team that has to lead itself.

Having both a CTO and a CPO is hopeless. Two titles are how a company avoids one hard decision about who leads.

Running product and engineering as separate teams is hopeless. Silos hand everyone a clean boundary to point at when things break.

The measurement trap

Trying to measure product engineering productivity is hopeless. Executives want a number they can read, even when the number means nothing.

Treating estimates as commitments is hopeless. Certainty is comforting; the work stays uncertain anyway.

The communication breakdown

Meetings with more than four people are hopeless. A big room lets everyone feel included without anyone contributing.

Meetings without an agenda are hopeless. Unstructured time feels collaborative while it wastes everyone’s.

Using the wrong words for a problem is hopeless. Call people “resources” long enough and you start treating them like one.

The knowledge gaps

Product engineers who don’t understand data are hopeless. We hire for technical skill and quietly ignore business sense.

A team that doesn’t understand the business, the customer, or the product is hopeless. Keeping people “focused on code” looks efficient on paper.

Data science without a data foundation is hopeless. ML and AI sound impressive in a board meeting; the plumbing underneath doesn’t.

The culture problems

Claiming to value work-life balance while rewarding burnout is hopeless. We promote the people who sacrifice everything, then wonder why no one rests.

Expecting a 9-to-5 as a startup founder is hopeless. We’re surprised when that expectation burns the team down.

Pretending you have no agenda is hopeless. Either you fit your colleagues’ agenda or they fit yours; the politics arrive whether you name them or not.

The technical decisions

Engineering leadership that isn’t hands-on is hopeless. We promote great engineers into pure management and call it a promotion.

A separate DevOps team is hopeless. DevOps is a culture; standing up a team is easier than changing one.

Calling people “resources” is hopeless. Interchangeable parts are easier to plan around than humans.

Not treating engineering, product, and design as one team is hopeless. Separate teams give you clean accountability lines and a broken product.


Why we circle instead of fix

Every item on this list is the same shape: a tension between what we know works and what feels safe, familiar, or politically convenient. The solution is almost never technical. It’s admitting we were wrong, restructuring a team, having the conversation nobody wants, or challenging whoever benefits from things staying exactly as they are.

The hopelessness was never in the problems. It’s in our unwillingness to pay the discomfort of fixing them.

This list is alive — I add to it after every honest conversation. If you’re carrying a hopeless pattern I’ve missed, send it to me on X.

With contributions from: Deepesh Naini, Sahil Kharb, Mahesh Lal, Ranjan Sakalley