Comment by Buttons840

Comment by Buttons840 3 days ago

20 replies

Time to apply the best analogy I've ever heard.

> "Measuring software productivity by lines of code is like measuring progress on an airplane by how much it weighs." -- Bill Gates

Do we reward the employee who has added the most weight? Do we celebrate when the AI has added a lot of weight?

At first, it seems like, no, we shouldn't, but actually, it depends. If a person or AI is adding a lot of weight, but it is really important weight, like the engines or the main structure of the plane, then yeah, even though it adds a lot of weight, it's still doing genuinely impressive work. A heavy airplane is more impressive than a light weight one (usually).

subhro 3 days ago

I just can’t resist myself when airplanes come up in discussion.

I completely understand your analogy and you are right. However just to nitpick, it is actually super important to have a weight on the airplane at the right place. You have to make sure that your aeroplane does not become tail heavy or it is not recoverable from a stall. Also a heavier aeroplane, within its gross weight, is actually safer as the safe manoeuverable speed increases with weight.

  • fny 3 days ago

    I think this makes the analogy even more apt.

    If someone adds more code to the wrong places for the sake of adding more code, the software may not be recoverable for future changes or from bugs. You also often need to add code in the right places for robustness.

  • dahart 3 days ago

    > a heavier aeroplane … is actually safer

    Just to nitpick your nitpick, that’s only true up to a point, and the range of safe weights isn’t all that big really - max payload on most planes is a fraction of the empty weight. And planes can be overweight, reducing weight is a good thing and perhaps needed far more often than adding weight is needed. The point of the analogy was that over a certain weight, the plane doesn’t fly at all. If progress on a plane is safety, stability, or speed, we can measure those things directly. If weight distribution is important to those, that’s great we can measure weight and distribution in service of stability, but weight isn’t the primary thing we use.

    Like with airplane weight, you absolutely need some code to get something done, and sometimes more is better. But is more better as a rule? Absolutely not.

  • RugnirViking 3 days ago

    right, thats why its a great analogy - because you also need to have at least some code in a successful piece of software. But simply measuring by the amount of code leads to weird and perverse incentives - code added without thought is not good, and too much code can itself be a problem. Of course, the literal balancing aspect isn't as important.

  • scarier 3 days ago

    This is a pretty narrow take on aviation safety. A heavier airplane has a higher stall speed, more energy for the brakes to dissipate, longer takeoff/landing distances, a worse climb rate… I’ll happily sacrifice maneuvering speed for better takeoff/landing/climb performance.

    • subhro 3 days ago

      Again, just nitpicking, but if you have the right approach speed, and not doing a super short field landing, you need very little wheel brake if any. ;)

      • scarier 2 days ago

        Sure, as long as you stick to flying light aircraft on runways designed for commercial air transport. I would also recommend thinking about how you would control speed on a long downhill taxi with a tailwind, even if you didn’t need brakes on landing.

  • vdqtp3 3 days ago

    > the safe manoeuverable speed increases with weight

    The reason this is true is because at a higher weight, you'll stall at max deflection before you can put enough stress on the airframe to be a problem. That is to say, at a given speed a heavier airplane will fall out of the air [hyperbole, it will merely stall - significantly reduced lift] before it can rip the wings/elevator off [hyperbole - damage the airframe]. That makes it questionable whether heavier is safer - just changes the failure mode.

    • subhro 3 days ago

      > That is to say, at a given speed a heavier airplane will fall out of the air [hyperbole, it will merely stall - significantly reduced lift] before it can rip the wings/elevator off [hyperbole - damage the airframe]

      Turbulence, especially generated by thunderstorms, or close to it.

      • vdqtp3 3 days ago

        Maneuvering speed is Va which is about max deflection on a single control surface, I think you're thinking of Vno if you're referring to turbulence

        • subhro 3 days ago

          Indeed I was thinking of Vno. I just had a brain fart when I said manoeuvering speed. I meant to say maximum structural cruising speed.

fbd_0100 3 days ago

Progress on airplanes is often tracked by # of engineering drawings released, which means that 1000s of little clips, brackets, fittings, etc. can sometimes misrepresent the amount of engineering work that has taken place compared to preparing a giant monolithic bulkhead or spar for release. I have actually proposed measuring progress by part weight instead of count to my PMs for this reason

stockresearcher 3 days ago

> the best analogy I've ever heard.

It’s an analogy that gets the job done and is targeted at non-tech managers.

It’s not perfect. Dead code has no “weight” unless you’re in a heavily storage-constrained environment. But 10,000 unnecessary rivets has an effect on the airplane everywhere, all the time.

  • runako 3 days ago

    > Dead code has no “weight”

    Assuming it is truly dead and not executable (which someone would have to verify is & remains the case), dead code exerts a pressure on every human engineer who has to read (around) it, determine that it is still dead, etc. It also creates risk that it will be inadvertently activated and create e.g. security exposure.

    • stockresearcher 3 days ago

      Yes, we all love pedantry around here (that’s probably 99% of the reason I wrote the original comment!)

      But if your position is that the percentage of time in the software lifecycle that dead code has a negative effect on a system is anywhere close to the percentage of time in an aircraft lifecycle that extra non-functional rivets (or other unnecessary weight objects) has a negative effect on the aircraft, you’re just wrong.

      • fragmede 3 days ago

        it's still directionally accurate though. Dead code has a weight that must be paid. Sometimes the best commits are the ones where you delete a ton of lines.

      • [removed] 3 days ago
        [deleted]
      • [removed] 3 days ago
        [deleted]
  • wat10000 3 days ago

    In this analogy, I'd say dead code corresponds to airplane parts that aren't actually installed on the aircraft. When people talk about the folly of measuring productivity in lines of code, they aren't referring to the uselessness of dead code, they're referring to the harms that come from live code that's way bigger than it needs to be.

  • 1718627440 3 days ago

    When you are thinking of development and refactoring, dead code absolutely has weight.