arduanika 4 hours ago

Excellent.

This part especially:

"Some developers can fit substantially more in their memory. I have come to believe that hinders them at least as much as it helps them. When you are at your limits, you are forced to simplify the situation in order to resume forward progress. The more regularly you are forced to do that, the better the chance that you are keeping the situation under control."

It reminds me of how Bill Gates said he'd rather hire lazy developers, because "a lazy person will find an easy way to do it." Maybe even better would be to hire lazy developers with poor working memory.

  • jandrewrogers 3 hours ago

    I have seen many systems that were overly complicated because the developers couldn’t keep it all in their head. It led instead to poorly designed modularity along boundaries selected to be small enough that they could keep it in their heads, to the detriment of both efficiency and maintainability.

    Being able to see across it at scale is what exposes elegant reductions to something simpler, which enhances maintainability. It is how you end up with the commits that delete a thousand lines of code.

    • paulddraper 2 hours ago

      100%

      This is how you wind up having tons of pointless parts and layers, because no one could understand the system from end to end.

      Blind men plus elephant, vs seeing men plus elephant.

  • svth 4 hours ago

    "There are clever, hardworking, stupid, and lazy officers. Usually two characteristics are combined. Some are clever and hardworking; their place is the General Staff. The next ones are stupid and lazy; they make up 90 percent of every army and are suited to routine duties. Anyone who is both clever and lazy is qualified for the highest leadership duties, because he possesses the mental clarity and strength of nerve necessary for difficult decisions. One must beware of anyone who is both stupid and hardworking; he must not be entrusted with any responsibility because he will always only cause damage." -- Kurt von Hammerstein

  • physicles 4 hours ago

    Reminded me of this gem from Brian Kernighan:

    "Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"

    • nine_k 28 minutes ago

      My rule is simple, grug style: "smart good, clever bad".

      Terminally clever is when you look at code that does something impressive and say: "Oh snap, I still can't exactly get it. I've read five explanations, and still cannot understand why they are doing this here. Screwed magic. How do people even come up with such ideas?"

      Genius is when you look at code that does something impressive and say: "Holy guacamole, it's so simple! Now that I see it, it looks almost obvious. Pure magic. How do people even come up with such ideas?"

      Despite the superficial similarity, clever and smart can be told apart. Clever should be seen as late stage optimization, smart, as foundation.

  • add-sub-mul-div 3 hours ago

    I have a high IQ and some combination of low key autism and ADHD which hinder my memory to some extent. I've gone my whole career finding the status quo way of doing things overengineered. I keep my stuff simple and I always see the team around me drowning in bugs and redesigns from their overcomplicated and unnecessary layers of abstraction and indirection that don't match how the business needs have evolved. I don't write a line of code until it's needed, and I find maintenance and extension of my code to be easy.

    • numpy-thagoras 35 minutes ago

      Well, I don't think that's memory dependent. I have an exceptional working and long term memory (and now I am not ashamed to admit it) and people around me cook up some really stupid solutions. Premature abstraction, overreach, focusing on the wrong things, etc.

      These matters are always problems of organization, and of prioritizing what the job is, what are the inputs/outputs, how do you efficiently parameterize them into messages and data packets, where do they go and how will you send it, etc.

ruslan_sure 3 hours ago

Yes. Programming isn't just writing code.

It would be better if these fundamentals were spread out alongside code writing.

  • Ekaros 18 minutes ago

    Sometimes I think it would be good to have separate terms.

    Programming is just writing code. It might or might not be complicated say you fine tune some assembly algorithm.

    Developing would be next step up. As you need bigger view.

    Software engineering is when you start to consider what would be good engineering and making decisions before just writing code.

    Software architecturing is interdisciplinary with engineering and happens is larger systems.

    I really think we have done lot of disservice, by grouping all of the things also under coding or programming.