loading...

re: How I chose a programming language and beat bad habits VIEW POST

FULL DISCUSSION
 

You missed something HUGE: a programmer who only knows one language is like an artist who only knows one medium, or a musician who only knows one instrument, or a farmer who only knows one crop. You'll have a favorite or two, but if you only ever learn one, then you never actually learned even that very well. Convincing yourself to even TRY to learn a second language once you know one is the hardest part; I'd recommend learning your first two concurrently. Once you know two languages, learning each new one takes a few days, eventually just hours.

 
 

Thanks for your reply Tyler. I updated my post to reflect my true context. I was not saying you need to live, breathe, and eat just one language till the day you die. I meant more in the tone that programming is essentially a sky scraper and if you don't get past the first step you will never make it to the top of a staircase.

 

I would support that only partly, especially as this advice fully ignores his well stated problem.
Pick ONE language, get fluent in it, feel comfortable.
Once you got to that point, learn a second and third language to evolve to the next step.

Trying to learn two languages in parallel as a beginner is confusing and distracting, perhaps frustrating.
Either it doesn't help because the languages are too similar and you struggle too much wasting time with learning two syntaxes instead of concepts, or they are too different and the different concepts or their interpretation put an additional burden on the learning process.

This is btw even true for artists: You mostly learn to get comfortable with one medium/instrument to get a grip for the basics of the art (Observing, estimating proportions, shadow and light, view angle / notes, harmonies, rhythms, dynamic) before you start transforming your experience to a second and third medium.

 

Thanks Dirk for truly understand the point of the post! It is insanely confusing to learn two languages at once. Similar to if you tried to learn the piano and the guitar at the same time you would get frustrated of all the issues that would pop up. All of the "advanced" stuff comes eventually. But in order to get past the basics you need to get a grip on one.

I've taught programming pretty extensively in a non-classroom context, (mostly at work, but some family) such that I follow the same students for years, and here's the tactic that I've found works the best.

Pick a "primary" language to learn, and a "comparison" language. You'll do the majority of your work with the Primary language, and the useful things you build will be built in that language. But for each concept you learn, you become familiar with the parallel concept from your Comparison language. Perhaps not well enough that you'd be comfortable writing something new in that language, but comfortable enough that you can read and understand other people's code. Obviously this is a lot easier if you have a teacher who knows both languages well.

A key point here is to get an evidenced-based understanding of what concepts carry over from language to language, which concepts are parallel and just differently expressed, and which ones you have to start over fresh. Plus seeing that different languages can make it easier or more difficult to tackle certain kinds of problems is instructive.

An example is during COVID lockdown I taught my 11-year-old how to program using Lua (primary) and Python (comparison). Lua was the primary because the objective was game scripting in Roblox. But Lua has some funny little quirks (as does Python I suppose), and it's much easier to understand the reason to jump through certain weird hoops when writing Lua if you can see the same techniques expressed natively in Python.

That's an interesting tactic. I could see how the would be useful as they cross bleed into each other but could also slow down process and demoralize someone if they get overloaded easily. But like you said only write in one so that would dampen the overload process.

code of conduct - report abuse