HACKER Q&A
📣 rstagi

Is looking at the code slowing us down?


I know this scares many people, but you can control things with QA, evals, ship quality gates and so on... I know we might have more bugs in the short term, but is not looking at the code the right direction we should go for the long term?

Several important developers switched to this new idea, the ones who work in production grade stuff (one example is Antirez, who just wrote some tweets that inspired this post)


  👤 mikgp Accepted Answer ✓
Slowing us down from what?

In the context of many other measures I think speed is an important measure. Maybe even the key measure. I’ve even written a blog post entitled “reading code is an anti-pattern.”

But if the metric is, slowing us down from having more lines in production then the answer is unequivocally yes.

If the answer is providing customer value, or having a sustainable engineering culture. Then I’m not so sure. I’m not saying I believe the opposite, but it feels like excessively optimizing on the wrong thing.

Ultimately I think this asks the wrong question, I think most other surrounding questions is the right one which is - how do you safely and quickly deploy the right code to production that delivers customer value.

I think that will continue going forward involve doing so in an automated fashion, but then the right question isn’t, “should we stop reading code”. But something like “what is the right way to ship intent to production”

Because if you do the first without the second…


👤 al_borland
Speed has never been my number one goal. I’m not sure why I’d start to optimize for that now.

👤 theandrewbailey
Looking both ways before crossing the street slows you down too, but it's done for good reasons. Ignore reading code at your own peril.

👤 rvz
> I know we might have more bugs in the short term, but is not looking at the code the right direction we should go for the long term?

Would you drive without looking at the road (or blindfolded) because we now have autonomous vehicles?

Not looking at where you are driving and also never looking or understanding what the code does, makes no sense in the long term. Especially in the event of a disaster.

Both have something called "liability" and it gets expensive when it goes wrong.

> Several important developers switched to this new idea, the ones who work in production grade stuff (one example is Antirez, who just wrote some tweets that inspired this post)

Does that mean we should blindly follow them? Just because someone else is doing it does not mean you should too.

A better questions is...have we lost the ability to think for ourselves because we have LLMs doing all the thinking instead?


👤 verdverm
The issue is long-term code quality. These things are not good at it. They locally optimize, reimplement (inconsistently), and are overly defensive. You can only observe this by looking at the code they produce.

👤 dlcarrier
I work in hardware development, and without the ability to release updates after something has literally shipped, embedded software has to follow the the opposite philosophy.

I've found that the forced do-it-once-and-do-it-right philosophy requires so much less total development time than the break-things-and-release-often philosophy that I've adopted it on software that I could update after the fact.

The biggest impediment is that you may be relying on a software stack adopting a different philosophy. No matter how good your software is, if the underlying OS or libraries are by, there may still be poor reliability.

Using standard C libraries is a pretty safe bet, whereas relying on Python or Node.js libraries means you'll need to issue constant patches, even if your software works fine, and the fixed libraries might even break compatibility.

Given the option, running your software on OpenBSD can give extremely high uptime as critical updates are rare. They have a philosophy of not only looking at what they write, but looking at it again later, even when they haven't changed anything, just in case they made a mistake.