How I learned General Approach to Learning Languages
About me
Nearly 40 years of experience in the tech field, my first language was basic, then visual basic, C (just C, all there was back then!), pascal, etc; all languages hardly anyone will recognize today, with the exception of C. Although, most use a very distant relative to the original C, in C++, cpp, c#, musl, etc. Thankfully, most modern languages are not written so close to the building blocks of binary anymore. This abstraction, allows for powerful expressions and functions, and also is a lot more friendly for humans.
Why I wanted to learn General Approach to Learning Languages
I pickup languages very fast, to me hex-encoding, ascii, or utf, are as natural as breathing. I hardly spend the time to "study" any one language anymore, picking up one as I need it, and discarding it as either it looses "flavor of the month" status, or makes way for newer languages which are very widespread and show no end in deployment. The only real two exceptions to this life cycle, have been Java, and CSS. Which refuse to die. And if you've never used some kind of "end" tool to sit on top, below, or post/pre-process, you are reaching back in time, and programming in the same or nearly same ways of programmers from 15 years ago. Of course it has gone through quite a few upgrades, and is quite optimized in comparison to when it emerged. But, at it's core, it's still fundamentally the same. Java is still terrible at initial sequences, but amazingly fast with anything involving a loop. And CSS still cascades from top to bottom, even if the pages have grown from 3 to 25, you still can't assign it variable arithmetic....
How I approached learning General Approach to Learning Languages
I wouldn't necessarily recommend learning new languages the way I do. But I have quite a few "golden tid-bits" that can be very helpful, whether you're a sloppy organizer (like myself), or very detailed in organization. There is a large push as of late for re-usable code, style-sheets, standardization, etc. And I agree with nearly all of these ideals, just don't confuse them to mean, that everyone should follow one process from start to finish, and that everyone can learn a language that way. My best advice there, is to break away from that mindset, and approach learning a language with a process. Sure, you can borrow whatever the latest trend is, but I would also encourage, trying to fit the language in patterns in which you know you learn best. For me, that's finding someway to render things as I go, I pick up things quickly, so I need lots of live feedback about what I'm putting into development. Tools like Jupyter, sandbox, storybook, codepen all help me get feedback sooner than later. It has always been more difficult for me, to program linearly. I can visualize very conceptually where the development needs to go, and for me, sometimes that means starting in the middle and working my way out. I also prefer to tackle the hardest problem I think I'm going to face, first, whether that's a new database integration, merging two technologies that don't play well together (react and D3 for example), migrating old data structures into newer ones that not only migrate, but also provide significant optimization benefits.
My point being, is you have a lot of experience you bring to the table, regardless of how many years of tech experience you have. Don't put yourself at a disadvantage, by not utilizing that experience and knowledge to help you along. If you learn best in a loud place, surrounded by people, then go there. If you need to be in a cave, where sunlight cannot penetrate, in absolute quiet, do that. If you need to push things around, to have it make sense to you, rather than follow a prescribed route. Do that. In the long run, it will make learning and executing, under duress, far more organic for you. It can also teach you a lot about problem solving, which is especially important in development, because often there are no guides to turn to, or no-one who has done it before you, being adaptable is far more helpful than linear.
Challenges I faced
Some other tidbits, related directly to languages. If you've read this much, I commend you!!
At the core of every language, the language is trying to do two things, no matter which language it is, they all have this in common. One, they are trying to translate your intent into something actionable to the computer, and two, they are trying to translate the computers interpretation of your instructions back into a language that is more palatable for you. So this should tell you, learn to speak the fundamentals of computer programing. If you get the fundamentals, which are often a lot easier conceptually to grasp (especially if you're just starting out), it will make more esoteric references easier to comprehend. And if you get really good at the fundamentals, 9 times out of 10, you'll be a better programmer than most. I know plenty of people who are great in a subset of language, i.e. they use an abstraction, of an abstraction, of an abstracted language and they are a wizard in that subset. Which is great, but what happens when we switch projects, or a client wants something else, suddenly that person is staring at everyone else like they've grown a dragons head. True, it is very difficult today to master a great many languages, and I don't advocate that either. It's very difficult to acquire enough skill and very time consuming, that's not a route for most people. However, as tech eb and flows with time, you will find yourself in a lot more demand, or a lot more relevant, if you understand things like variable assignment, loop characteristics, if/then, else/if, for,while,try,map,array,list,brackets, etc. Because every language will have their own version of those, 85-90% of the time. Then its just a matter of understanding the context in which that language frames those assignments, and all of the sudden, another language opens up to you.