Direction.

Blog 1 June 1 2026

It's good enough to ship

The last two decades of "software engineering" was never a craft discipline. The Clean Code and Practical Programming movements were always aspirational at best, much like Formal Verification was a generation before. The people who rallied around these ethos' endlessly point to how bad most software is, and how enterprises rarely spend time to build rigorously because of business pressure (and they are right). While disappointing, these aspirational goals are not what drives 99% of technical products.

The vast majority of "engineers" writing code are not improving the Shannon entropy of a process, or solving some edge case of a graph traversal algorithm. The vast majority are migrating the analog world into digital form, to get money to feed and house themselves. I mean, this is well documented. People joining FAANG a decade ago had to solve some complex topology problem in the interview. A year later as a "senior staff engineer" they are spening 60 hours a week running experiments with font kerning, in order to optimize render boxes across 17 mobile screen sizes, so that "doggy hairbows" and "teeth whitening" ads would never bleed over the edge of the window. For that you get $300,000 a year, plus millions in options

The incentive for the vast majority of "software engineering" has never been about correctness, durability, or privacy. The incentive was and remains profit at maximum velocity. You might recognize a trend here: velocity hates engineering rigor; as Feynman so eloquently described in his testimony about the Challenger disaster.

So we got what we were paid for: "Good enough" enterprise and consumer software everywhere.

Look at the evidence

Facebook ran on a PHP monolith so famously wobbly that they had to invent the HipHop for PHP transpiler just to keep it from breaking. For a decade, that was the technical engine of one of the most profitable companies in history.

Microsoft Active Directory is one of the largest attack surfaces on the planet. It's almost a joke at this point, that the first place to look during a major security breach is AD. This is the backbone of enterprise identity for most of the world, and it was designed in an era when "security" meant a firewall and a pager.

And then there's the TensorFlow vs. PyTorch story:

Google, with all its might, all its god level talent, ships TensorFlow. It's well built, beautifully documented and it came from a pair of hardcore engineers that happened to be best buddy geniuses; these stars of the computing world. TensorFlow totally changed the game, and made deep learning accessible to regular engineers, not just AI experts. The industry loved it and every tutorial used TensorFlow. Google was the king of AI engineering, unquestioned. Shortly thereafter, inside Facebook, another small team of hardcore engineers takes a scrappy project called Torch and iterates it quickly into PyTorch, knowing that there's a massive growing place for deep learning tooling. It shipped faster, iterated more quickly, was easier to reason about, and took off in research. Today, almost nobody starts a new project with TensorFlow.

That's the reality. Professional software has never been about engineering purity. It's about what works well enough to get velocity and attention, until something works a little better, and then everyone switches.

The 1990s were pumping out shovel-ware and "freeware" that would BSOD your computer a few times a year. The number of video games that were fundamentally broken when shipped, was probably a good quarter of the market. I think the Windows 98 pipe screensaver had more active users than most of those games. The 2000s were ripe with all-you-can-host websites, platforms and enterprise Java factories, trying to move entire industries from analog to digital. By the 2010s desktop bloat finally gave way to GIANT CLOUD MONSTROSITIES and surveillance capitalism so you didn't even own your software once you purchased it. Nobody wanted to slow down the profit machine long enough to implement real engineering so that's what we live with now.

People need to stop pretending there was some golden age of bespoke hand crafted homegrown software that works great and benefitted the people building it

"Good Enough to make profit" has always been the bar

For a brief window, maybe from 1995 to 2019, the ability to write "good enough" code was scarce enough, and had so much demand, that people could command increasingly outsized wages. Enterprises have always looked at products as commodities and have constantly searched for labor with the lowest price to build something "Good enough."

"Oh yeah, we're gonna bring in some entry-level graduates, farm some work out to Singapore, that's the usual deal"

a direct quote from Office Space (1999)

So, again, not new, the economics are precicely the same in 1996 as they were in 2026, but now you have a global workforce with no wage floor.

What changed with transformer architectures and the ubiquity of the LLM-as-a-service, was that the cost of typing out "Good enough" code has been dropping since 2022 to the cost of energy. Functionally, that moves the needle: someone smart enough to describe a workflow precisely, with a marketing budget and time to iterate, can now produce what the majority of "software developers" used to deliver, but without having to learn what a garbage collector does. So as long as you can make a good enough product faster, and consumers continue to not discriminate on origin or quality, "Good enough" will continue to win.

The Rise of the Product Developer

Switching costs were always the moat, code was never the actual bottleneck to success. The person who survives the next decade isn't a 10x diva who can hold a JAVA + SQL + Python application in their head. It's someone who knows how to sell a product thats "good enough" to get a client locked in until it's too costly to switch providers. Infrastructure and dataflows are the lock-in that enterprises are forever hunting for.

Ok so let me twist the knife then: the Product Developer isn't going to be less of an "engineer" than the 10x typist because by default neither is doing engineering. The key difference is: The Product Developer has theoretically more time to spend on architecture, testing, accessibility, second and third order effects, longevity, observability, and overall usability than someone who has to do that, AND write and update every line of code by hand.

Because when the LLM handles the typing, the human is free to do the non-typing part of engineering that most line engineers "never have time for." I'm sure your org has been needing to do a refactor in a while, and somehow hasn't gotten to it. So when is specification, architecture, verification, testing, user validation, and overall measurement happening today? The things we told ourselves we were doing but never actually had time for. Now we have time if that's how we choose to use it.

There's millions of books on good coding but what we teach at Direction are the non-code engineering fundamentals that give a scaffolding to products that engineers never were given the time for. This helps Product Developers get to market faster and more robustly to win those moats. Simultaneously from the user side, be able to prevent getting locked in to something by being able to inspect and build your own in-house tools if you like.

The motive for profit driven companies isn't going anywhere, and they will do whatever they have to ship profitable products as quickly as possible; they never cared about code quality and never claimed to. If you don't care about quality for its own sake, but care about shipping good enough products you're in luck. Now you have great tools to get good enough products shipped and start the iteration loop.

However if you do care about quality, then you're in a better position than ever in the history of engineering. Nobody stole your favorite text editor or bash scripts. Individuals can now create whatever they have dreamed of, to whatever level of standard they want, with a fraction of cost or time compared to a decade ago. You can now nearly replace or straight up clone products 1:1, in ways that suit your needs. Most of all you can finally take the time to do the hard engineering you've always wanted to. It doesn't take a giant team or a massive budget to compete on quality now, if thats what you decide to do.