13 Jul, 2022
I am primarily a DevOps Engineer and like to dabble in Python when I have a project to work on. Recently I've been taking on engagements that are more development-oriented, working with react/node and java/kotlin but having little prior experience applying these programming languages to client projects. To meet certain milestones, I had to quickly delve into learning these languages so that I could help our clients deliver their platforms on time. I’d like to share my experience so that you know how to get up to speed with programming languages and frameworks when time is of the essence. With my key tips on rapid learning, you’ll be able to provide value to your team, client, or organisation and help with the delivery of projects where you might have otherwise sat on the bench.
Define a project goal
This is one of the most important steps to learning a new topic. Having a goal to work towards reduces the likelihood that you’ll become overwhelmed by the complexities of a topic. Pick a starting point and define where you’d like to end up after a certain amount of time. In a professional work context, this step is generally going to be easier as you will have a goal set for you. In my case, a client’s team wanted to start off by displaying data tables on the screen by the end of the week. Thus, my goal was to quickly brush up on how to dynamically populate tables in React within 5 business days. For personal learning, selecting a project and goal may be a little more difficult as there would be so many options. A genuine area of interest is usually a great place to start. For example, I enjoy video games and have always wanted to practice my object-oriented programming, so I took on the project of creating a tower-defence game with the goal of applying the programming paradigm over a couple of days.
Draw from prior experience and find out what you don't know
The logic behind all programming languages is language agnostic. An ‘if’ statement will typically act the same regardless of whether you're working in python or C or any other language. The main differences in the language are in:
- Syntax (println in java vs print in python),
- Concepts (e.g. having to declare data types in Java/Kotlin vs not having to declare types in Python),
- or Library driven (e.g. what library do I need to call to perform x functionality or what does library *name* do).
By further exploring these elements in the language you’re learning and how they function differently from a language you’re an expert in, will help you pinpoint knowledge gaps, guiding you on areas to focus on.
Google (or *insert search engine of choice*) is your best friend
Figuring out the right set of keywords to search for and finding the answers to the questions you have is an important skill. There are countless resources available for most programming languages, from official documentation to Stack Overflow or even Github repos from other people that usually provide a working example.
I recently worked with Kotlin and a codebase that was new to me. I came across a ".right()" attached to the end of a return statement and initially had no idea what its purpose was or where it came from. Initially I thought to just Google "Kotlin right()" but that didn't return any results that were relevant to me.
Going back to my codebase, I noticed that there was an import statement that read "import arrow.core.right" and went back to the search "kotlin arrow right". This provided a wealth of useful resources which then allowed me to provide in-depth feedback during a pair-programming session.
If you don't already have a codebase available, boilerplates are a great starting place as they provide working examples of larger codebases and what breaks them. When learning the basics of React, I looked into developing in the material UI library and downloaded the free javascript version of the minimal theme. Then I looked into what it would take to populate my own data into the bar chart libraries they had available.
There would still be a lot of work for you to become a master in a specific language and the very concepts around it, but this approach to learning the basics will allow you to gather enough knowledge to contribute meaningfully to team discussions, client projects, and even decision-making. You’ll be able to ask valuable questions and start shaping a solution that takes into account stakeholder requirements. Don’t be afraid to say you don’t know, but always show that you’re committed to finding out. Demonstrating your motivation to learn and find an answer will provide greater value to your team, client, or organisation than simply sitting back because you feel you can’t help.