5 ms·
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among
by ak39 11y ago
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.
My very limited skull size balks when I see regex, IoC architectures, EAV data modeling, fancy ORMs ... and, dare I say, ... functional programming.
- notduncansmith 11y agoProbably not a discussion worth having if your mind is made up[1], but I've found that FP actually forces me to hold a lot less in my head, rather than more. And when I say FP, I mean specifically impure FP (Clojure is what I have the most experience with), something that gives you the mutable state escape hatch without resorting to monads or other constructs designed to hide the state from you. The rest that you mentioned I can certainly do without. [1] That said it's worked to my extreme advantage, so I can't help but throw it out there.
- adrianN 11y agoAll those are tools that make certain jobs a lot less complex. I dare say you either use them for the wrong job or you should try expanding the size of your skull.
- ak39 11y agoTouche, my friend, touche! But you see, said skull is constantly buffeted by the paradoxes of the following three EWD maxims: 1. "The competent programmer is fully aware of the strictly limited size of his own skull"; 2. "I realized that my prior projects were just finger warm-ups. Now I have to tackle complexity itself. But it took long, before I had assembled the courage to do so." 3. "Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?" :-) Take care.
- icebraining 11y agoEWD seemed quite sure when he recommended Haskell over Java: http://chrisdone.com/posts/dijkstra-haskell-java http://chrisdone.com/posts/dijkstra-haskell-java
- gspetr 11y agoTo play devil's advocate:This refers to 2001, to wit, Java 1.3 - which we know was bad and slow.
- pekk 11y agoWe demand actual proofs of program correctness, but for some reason we don't even ask for proofs that practices actually work or even that they don't do any harm. We just take it on intuition and faith, and propagate practices by peer pressure. If it looks fancy, and people like it on HN, it must be better. I don't know in what sense this is "engineering."
- speedkills 11y agoSome people do actually gather evidence in this area. The best collection of it I have found so far is the book Making Software: What Really Works and Why We Believe It.
- UK-AL 11y agoYou end doing those things yourself, which in the end, is even more complex.
- k__ 11y agoWell, sometimes you don't even need all parts of one of those things. If you take care not to mutate and to keep your functions pure, that's a huge first step. I don't know much about how to make up own monads or what this type theory is all about. But that doesn't take away the gains of the stuff I know.