4 ms·
In many fields you're expected to work at some higher abstraction level above "how things really are working", in which case all the tutorials will use the prim
by PeterisP 4y ago
In many fields you're expected to work at some higher abstraction level above "how things really are working", in which case all the tutorials will use the primitives of that abstraction level.
In this case, if you want to understand how stuff works, you should explicitly look for things that are not labeled "tutorials" - often textbooks will be a decent example, covering the principles and theory behind these abstraction layers which you'll then use in practice.
Like, in ML there are books which work through a basic implementation of all the algorithms using just the matrix multiplication primitives of matlab or numpy, and that works well as a learning exercise, but in practice everyone would rather use a highly optimized (but thus complicated less understandable) library maintained by others.
Similarly, in cryptography, there are textbooks which will work you through an implementation of the core algorithms, but again, a tutorial teaching how to do stuff in practice would not (and definitely should not) cover making your own implementations for cryptographic operations, but rather describe how to use a properly verified library.
- bilekas 4y ago> In many fields you're expected to work at some higher abstraction level above "how things really are working", in which case all the tutorials will use the primitives of that abstraction level. Great point, I used ML only as an example, GraphQL was another that came up in comments. Books are a good resource, or college literature for example, but from an approachable point of view, without knowing the 'basics' it's hard to consume.
- readonlybarbie 4y agoWhich is kind of a shame, to be honest. I would dare say that even x86 assembly is less complicated to understand than many of these libraries, where time is spent trying to memorize their semantics rather than understanding how data is modified and how systems communicate with each other. It is true that a lot of platform specific nastiness and complicated math occurs in some of these libraries which is not necessary for a user to learn. But for those desiring to learn "what's happening under the hood", the code should not make an effort to needlessly obscure this from them by way of complicated syntax, poor interface design, academic naming practices, and big unwieldy spaghetti classes.
- giraffe_lady 4y agoidk man I already got a couple hobbies and one serious domain of expertise I'm just tryna get work done and get paid here. might be a shame to you but I'm so grateful I don't have to dig through a compiler manual or whatever to do my job.
- readonlybarbie 4y agoAgreed, with the only caveat being, there is a chance that the current favorable market conditions for programmers disappears. There might come a day where companies believe that the value of slapping a few potentially buggy libraries together is not worth $xxx,xxx per year. I for one kind of hope that companies return to buying/contracting well-defined finish products with small external studios rather than throwing money at W2 developers like us. I think the software quality will be higher, and the risk of our jobs being outsourced lower, wherher rightfully so or not.
- CrimsonRain 4y agoCan you link some examples? Appreciate it.