Conditional logic is the third hardest thing just after variable naming and cache invalidation. There is no excuse to make it harder to understand.
140 karma · joined April 25, 2019
Conditional logic is the third hardest thing just after variable naming and cache invalidation. There is no excuse to make it harder to understand.
Seems like protocol overhead will stay.
DRY is a awful "thing" (a decree at best). In the worst interpretation it simply says "never write the same code twice". There is no balance or end to it. It doesn't have a competitor or alternative. It somewhat implies that it is always good. It doesn't define a scope where/when it should be applied. There is simply no broad agreement how to use it in practice. DRY touches multiple concepts, each too complex to put behind three tiny letters.
OP fails to make a great point, but the direction is right. We cannot take DRY and "code reuse" laws as granted. Abstractions and indirections have their downsides. It increases systemic complexity and may add dependencies. It certainly limits how easy the full system can be understood by humans.
I like the idea that human cognition has a huge impact on our lives and it certainly has. But trying to pull off a new pradigm shift on the congnition hype train is annoying.
What is true for me is that even average software and systems we build can get insanely complex. To fix it, it is just suggested to reduce the product size, train / hire people. It is absolutely not wrong, but the narrative is. If we talk about congnitive load we should look at formalism. Yes it sounds awful. But having clear rules of yay's and nay's is when designing and evolving systems can clearly reduce cognitive load, because I cannot remember all the stuff people failed at in history.
PS: Please don't mix up fomalisms with principles.
That is what annoys the fuck out of me with the software community. We actually reinvent constantly but everyone praises that we never should do it. It feels like a secret master plan of a hidden lobby that want to claim novelty and creativity for themselves.
Online schema change tools if you use RDBMS in production.