How do I get 'cracked' at programming
spend at least a few years being heavily autistic about programming (and writing a bunch of programs that do various shit) and you'll be there before you know it
How do I gain the ability to look at a file full of abstract code and libraries I don't use and then go "oh, the author missed a few optimizations here"
you generally have to know what's going on in a program if you want to be able to improve it
to understand libraries you don't use you generally spend some time reading through documentation
if you hate reading 5 different tabs of documentation, programming is definitely not for you
also keep in mind that optimizations are rarely what programmers aim for when modifying a program
the very best programs are always written to be logical and understandable to humans as formal descriptions of symbolic manipulation processes that just so happen to be easily carried out on a machine
it is good if they are fast, but sacrificing clarity for speed is considered a desperate measure generally only taken by core library functions that must run at extreme speeds
ironically, it can be far easier to speed up a nicely written program than it is to speed up a poorly written program that has had its clarity sacrificed for minor speedups
How do I learn what is happening in the machine
if you aren't already using a gnu/linux-based operating system, you should install one in a vm or an old laptop or something. windows has a shitty general philosophy of hiding shit from you, so it's easier to learn stuff like c on a unix-like system
keep in mind that you will never learn absolutely everything, so you'll have to settle with many things just being high-level black boxes (unless you go learn more about how they work)
How do I look at open source projects and easily make meaningful contributions
hack on shit until you have a sense for the aesthetics of a program. then, find something shit about a project that people (you being one of them is a great motivator) want fixed and go fix it
you will have to learn shit like git to actually do the contribution process but that's easy if you are already a linux user
being comfortable in terminals is a hallmark of better-than-average programmers, since good programmers are generally not supposed to be afraid of repls for retarded scripting languages (which is what bash is and how it works)
(except possibly outliers like LISP)
lisp (and even more so scheme) have a strange habit of conveniently brushing against a number of really deep computing concepts, and every programmer should at least take a shot at one of them
they are naturally quite expressive too, and that's even before you use their special features that let you define entirely new language keywords
Are you interested in data structures and algorithms that can help promote more efficient outcomes?
not knowing what you are trying to do in the first place is a grave error when it comes to any art form
this includes programming
Perl can be perfectly readable but I would argue it still goes into the outlier category.
perl may have lots of rough edges and a hard-to-get-into syntax, but it isn't extremely unusual as a programming language
yeah sure the sigils are an abomination and the magic variables are weird but you can get used to all of that fairly quickly
and it can be downright pleasant for mangling text, with its concise syntax for doing shit to strings using regex
its regex support is so downright awesome that most things base their regular expressions on perl