My strategy for learning a programming language quickly

When I first arrived at my new school, I was completely unaware of what programming language they were using to teach the students – it’s something that is prone to change 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 me; 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

  • Codecademy (JavaScript, C#, Java, etc.)
  • freeCodeCamp (Web Development)
  • The Odin Project (JavaScript, Ruby)
  • General MOOC websites like Coursera, edX, Udemy, and FutureLearn also fall under this category

JavaScript

C Sharp

PHP

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.

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.

Conclusion

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.

Your degree isn’t enough: my advice to students

A degree, whether it be in computer science, software engineering, mathematics or a related field is often marketed as the golden ticket for those wanting a lucrative career in programming. An often extortionately expensive goose that will eventually lay golden eggs for years to come.

While it’s absolutely true that a degree has serious value in technical career paths, it should be noted that students on a degree programme should not see three to four years of study as a silver bullet. Plenty of students will get a job with just their degree and nothing more, yes, but as the barrier of entry to many development and IT jobs lowers and university students face increasing competition from apprentices, boot camp graduates, and completely self-taught developers, there is no room for complacency.

What do you know?

Throughout my time in academia, I’ve had the good pleasure of advising plenty of students on their next steps and what they can do to maximise their time as an undergraduate. I’ve been on careers panels, representing former employers and universities. I’ve had the opportunity to learn directly from senior developers and recruiters from a range of amazing companies including Google, Oracle, Amadeus, and Network Rail on what they’re looking out for and how they curate CVs (resumes). I currently work in education now; passing the mantle and routinely guiding and assisting students with their own professional development and learning journeys.

Of course, don’t accept my word as Gospel. I encourage you to do your own research, talk to your university’s career service(s), and to other senior developers and recruiters you network with. Everyone has unique perspectives to share and your mileage will always vary. Finally, it’s important to note that I speak from the perspective of someone within the British education system, so things can be different elsewhere, such as in Africa or in North America.

A tiny word of caution

I realise that by writing this article some might try to mimic me directly or curate my GitHub or other portfolios to see whether I can stick to my own advice.

Do what I say, not what I do.

I’m not always a great model to follow directly, given that my intentions have always been different and that I never intended to work as a full-time web developer given my interests and passions lie elsewhere. I’m an academic first and foremost. That being said, I routinely help people reach those goals, so let’s get started.

1) Complete projects and portfolios

You hear this all the time on self-taught guides and other tutorials on how to work in software engineering or to become a developer. Students with a formal CS background are not exempt from this. University teaches computer science and a lot of theoretical skills, with practical elements here and there. It often doesn’t teach you how to use the latest frameworks and programming languages, which are nevertheless in high demand.

You will often be grilled on how you’ve applied your programming knowledge outside of work/studies and this is a great time to show off the work you’ve done. Uploading your coursework to GitHub isn’t enough here either, though it’s certainly a start. Whether it’s design work, APIs, monolithic web applications, JAMstack websites – whatever – show it off and be prepared to talk about it.

2) Contributing to open source

A quick word on open source. Open-source contributions are frequently seen as brilliant and often favoured even more highly by many recruiters and interviewers as they demonstrate a working knowledge of development workflows and current technologies. That and you know how to confidently use Git.

That being said, contribute to (F)OSS if it interests you. Don’t feel pressured into contributing to a project if it honestly just doesn’t interest you that much. Or worse yet, for a damn t-shirt. There are often other more valuable things you can be doing with your time, such as working on that side project, or…

3) Technical writing and blogging

Writing about what you know, whether it be a tutorial, a thought piece on a specific piece of technology, a guide or discussion, or even a unique piece of research is a fantastic way to demonstrate what you know, potentially what you’re working on, and where your passions lie. It’s also a neat way of building up your own personal network and gives you something to talk about in that important interview.

You could also live stream, podcast, or create a YouTube channel. Whatever medium and format suits your style of expressing yourself.

4) Making use of your university

University is an incredible resource for networking, for getting involved in research, and may even have teaching assistant or demonstrating opportunities for you to take hold of. Research and teaching are especially great to have on a resume, as they both demonstrate a great deal of competence in a certain area, such as in a programming language or field of computing.

It doesn’t all need to be computer science or programming related though. Look for opportunities to be involved in sports and clubs that interest you, or volunteering schemes where you can give back to the local community. Volunteering is especially useful at building soft skills employers are looking for, helps paints you as an empathetic and likeable person, and can even open more doors for paid employment. It happens!

One thing to note though, avoid letting your grades slip because of any of your extracurricular. It’s something I see quite frequently and would encourage people to find a balance as best as they can.

5) Classes and courses

Taking a class or free course in something different can broaden your horizons and help paint you as someone knowledgeable, has a keen desire for learning (which is something developers never stop doing!) and isn’t just someone interested in programming and nothing more.

Learning how to do 3D modelling, a foreign language, or a social science like psychology are all great examples of how you can further spread out your skillset. You can even do these online for free by undertaking a MOOC (massively open online course) on websites such as Coursera.

Alternatively, this is a great time to work through online curricula such as freeCodeCamp or The Odin Project to further bolster your portfolio. If boot campers are doing it, then find some free time to work through them too. They’re great for sharpening the technical skills that your coursework might overlook.

6) Internships and industrial year placements

University students who are looking to compete for the best jobs should look to carry out internships in the summer . There is no better experience than real-world experience, and subsequently, internships are worth their weight in gold. Whilst it’s great to get an internship at a major company, don’t overlook smaller organisations, as the experience is nevertheless a serious advantage and you can learn an incredible amount no matter where you go.

If your university programme or degree scheme offers the ability to take an industrial year placement or a “year out” to work in an extended internship placement (this is common in the UK) then you should seriously consider this. Almost every student I’ve spoken to who has taken such a year before their second and final years of study have attested to just how much they have learned within that year, and how it has recharged them to finish their course. Some high-flying students who impress their employers can even score graduate jobs.

The only exception to all of the above is unpaid internships. If you want to take one, don’t let me stop you, but I strongly believe that they are exploitative and that it’s bullsh*t to have someone live out of pocket just for the experience.

(It’s also not the same as contributing to FOSS or volunteering, which is something you do generally for a good cause or community.)

7) Casual employment

If you can’t secure an internship, please don’t turn your nose up at casual work over the summer, or even part-time whilst you study! Whether it’s teaching, cleaning, barkeeping, or stacking shelves, work experience is work experience and it helps you to develop soft skills and an all-important reference for later.

Again, don’t break your back by earning a paycheque when you should be studying. But I empathise that sometimes it’s necessary to stay financially afloat. Balance is key and hopefully, you can find it.

Conclusion

I hope that you found my advice helpful. It is important to note that this is not the end-all and be-all of all student advice and that there are likely to be important points that I missed, so definitely continue to read here on the Internet and further afield for even more valuable advice!