I am a guitar teacher, but also in the final year of a degree in software development - and where these two meet, is the key… let me explain…
In my job, I teach my students the basics of all the techniques they are likely to face when progressing as players. My goal as a teacher is to ensure they are self sufficient. In effect - I Don’t teach them what to learn, but HOW to learn.
If they come across a song they wish to learn in the future, and are stumped by a technique, or unsure as to what this or that means… then I have failed.
How does this relate to programming?
My course is not the most practical. Many students have complained that it’s largely theoretical and we don’t have to create projects to add to a portfolio or work on big assignments with real world problems to solve. But what we are being taught, is the fundamentals of programming and to understand every aspect of the discipline, from coding, to problem solving, to development, and even the business side of things.
Basically, during my course I have become fairly comfortable in Java, learnt the basics of VB.net, PHP, Javascript, HTML, CSS and MySQL.
I have also done modules in OO programming, databases, web technologies, concurrency & distribution and Java development from the point of view of the requirements, processes and designers.
My point being, is that I have just started a module based upon Python, and even though I have never seen this language before - I immediately understood it, and within a day, I was coding it with ease.
I am a pretty poor programmer - but my course has taught me that all languages are virtually the same thing, and I also understand how projects are designed from the ground up. I know how to write code that will be easily understood by someone else. Projects involve teams… and being more than a simple coder is essential.
When trying to code something - I often get stuck on what syntax to use, or how to arrange this statement or method to compile correctly… but my course has taught me how to come up with the right solution.
I know what I have to do - but not necessarily how to do it (code wise). But that’s the easy part. Logic and problem solving is harder to teach than straight up syntax and whether this line ends in a semi-colon or a whatever.
I have never coded in C or C# - but I know that I could turn up at a job interview, and prove that I have a track record of learning multiple languages.
To sum it all up. It’s not what programming language is the best to learn - it’s the ability to learn the language, and what to do with it, that will keep you in the game.