My Strategy for Learning a Programming Language Quickly
When I first arrived at my new school, I was completely unaware what programming language they were using to teach the students - it's something that is prone to changing over time and isn't usually mentioned on a job spec. Many schools throughout the UK will use Python from start to finish in both a procedural and object-oriented fashion later down the line, whereas some schools are still using Visual Basic. I was alarmed to find out that the senior students use C# - a language I had very little knowledge of and experience using outside of playing with it in Unity. Or so I thought.
This article is all about how I was able to rapidly learn C# and begin adding it to my programming repertoire, because I was suddenly in a position where I had to! This isn't a situation that is unique to educators such as myself; as a developer, a system architect, or whatever role you are currently in or aspire to be in, there could be times where you too are forced to rapidly learn a new language, framework, or technology in the face of new circumstances, such as a new client or acquisition, or maybe your boss was just feeling malevolent.
Tip 0) A reminder that the language acquisition overlap is huge
Chances are, what you know already in another programming language will transfer over to a new one that you're attempting to learn. Core concepts such as variables, classes, functions, arrays, and so on are more often than not going to remain identifiable as you change technology, give or take semantic differences. This is just like how once you learn how to speak another language, you get more efficient at the language learning process.
Granted, some jumps are larger than others, like getting used to semicolons and braces when you're from a Python background, or entire design patterns such as MVC (Model View Controller) when learning a new framework like Laravel or Rails. Chances are though, you already know more than you're aware of!
One more thing, please don't be afraid of admitting you don't know something! If you're familiar with Broadwell's learning competence theory, this is one step closer to mastering something!
Tip 1) Learn by doing
I knew to start writing C# my best bet was to download Visual Studio and get started*, and that's exactly what I did. I dedicated a few hours to installing the software and building basic programs and algorithms that I knew just so that I could come to understand the syntax and general workflow.
I played around with building console apps, using Winforms to build some basic desktop applications, and when I was ready I decided to start looking around at tutorials online and on YouTube to learn some more complicated functionality, such as accessing databases, accessing and writing to CSV (Comma Separated Value) files, and so on. I remember laughing to myself when I found the StringBuilder functionality was just like the implementation in Java.
You can do as much or as little of this as you want, but I truly believe this is the most effective way to learn it, more so than reading or watching alone.
* I realise that this isn't the only way to develop in C#, especially on macOS or Linux. But this is what we do in my workplace, so it's how I opted to learn.
Tip 2) Find a good reference guide
(If you want to suggest something to add here, please let me know in the comments!)
I don't recommend reading textbooks or references from start-to-finish as an effective guide for learning programming languages. But finding a good reference that you can look at for additional insight is a great way of learning. Here are a few of my favourites for the languages I use most, and they're completely free (unless stated otherwise):
Multiple / General Purpose
- freeCodeCamp (Web Development)
- General MOOC websites like Coursera, edX, Udemy, and FutureLearn also fall under this category
- Mozilla Development Network Docs
Tip 3) Learn from others
Learning from one-another is a tried and tested way of aiding you on your learning journey. You'd be surprised what you can learn by sitting down with someone for half an hour when you get stuck. For me, sitting down with my colleagues and having them run through some of the aspects I was unsure about was immensely helpful.
I realise that this isn't everyone's cup of tea, nor is it a luxury available to everyone. As a bonus, I recommend giving fellow developers tweeting about the technology you're learning a follow on Twitter, if you use it.
Even better! Have a look on Hashnode for articles written by other talented technical writers on your new technology or programming language! You can learn a tremendous amount from other people's technical writing and you help motivate them to write even more!
Tip 4) Remember that this is an ongoing process
Don't be discouraged. Remember, learning is something that developers and other professionals (teachers included!) never stop doing and there will always be gaps in our knowledge. We can't possibly be experts on absolutely everything, so remember that it's only necessary to learn what you need - you can always learn more along the way and there's absolutely no shame in that.
In my experience, smart people are those who recognise that there are things that they themselves do not know.
The smartest people aspire to go one step further and learn what they don't yet know.
In all, it took me a few days to get comfortable with working in C# and to develop my confidence where I was able to pick apart my learners' work and debug it comfortably. I realise that I am absolutely not an expert, nor do I claim to be. But I know enough to do my job effectively, to teach it to other beginners, and to start me down the path of continuous learning and improvement in my own skills.
I hope that you enjoyed this piece of writing and that you find it useful whenever you might find yourself needing to learn something in a hurry, such as for a new job. If you have any suggestions or comments, I'd love for you to leave them below. Alternatively, if you have any suggestions for learning resources, I'll gladly add them to that section.
I try to write new articles at least once a week, so please give me a follow here on Hashnode for more nuggets of wisdom. Until next time!