153 karma · joined July 22, 2016
...
MORPHEUS: Where did you hear about the laws of thermodynamics, Neo?
NEO: Anyone who's made it past one science class in high school ought to know about the laws of thermodynamics!
MORPHEUS: Where did you go to high school, Neo?
(Pause.)
NEO: ...in the Matrix.
MORPHEUS: The machines tell elegant lies.
Also consider an SDET role, those can sometimes be easier to get and then you work internally on removing the T if you really don't like that sort of work.
For an instance of how it depends, see the classic Forth example for implementing a washing machine driver:
...
: RINSE FAUCETS OPEN TILL-FULL FAUCETS CLOSE ;
...
: WASHER WASH SPIN RINSE SPIN ;
Then a single call to WASHER is all that happens when the user presses the start button.Function calls should make things clearer, not less clear because of some other principle (like DRY or single responsibility or testability etc.). That's ultimately where I think the JavaLand culture has gone wrong, all these abstractions (many of them caused by being forced to live in a Kingdom of Nouns) that are sometimes quite useful in the large are always a pain in the small, but many times the small is all that is needed. Big projects are slowly learning they don't need to be so big, they can instead be a set of independent smaller projects, but it'll take more time.
I don't see the point in having beginning students think about tail call optimized recursion vs normal recursion unless they're going through SICP. In the end it can totally be a compiler thing. For instance, GCC can optimize this:
int factorial(int x) {
if (x > 1) return x * factorial(x-1);
else return 1;
}
into this: int factorial(int x) {
int result = 1;
while (x > 1) result *= x--;
return result;
}
(http://ridiculousfish.com/blog/posts/will-it-optimize.html)I just remembered this post which I think helps better capture some of what I'm talking about: https://plusbryan.com/its-just-wood But I think there's something else besides avoiding things that are mysterious. I think it has something to do with the physicality of the thing. At least something else is needed to understand the weird reluctance with working with hardware that a lot of software-only people have, who differently from the general public (who can't even use their computers) are sharp enough to battle with mind blowing complexity and solving mysteries of bugs or how new languages or APIs work every day behind their screens.
Every other programming language I've used a lot of (spanning from assembly to lisp) I've found it most pleasant to work in vim, even in large projects. I suspect the only other environments I'd want an IDE would be for iOS development and C#.