Code Up Fast

dbidle
Slices of Bread
Published in
6 min readDec 7, 2020

A look at learning a programing language on the fly

Introduction

We all have done it. From our first preschool class to our final year of university, we have learned. We have even learned that learning is required to grow to become the coding powerhouses that we are today. So, what does it take to learn? More specifically, to learn a new programming language. A new programming language, at a new job, on the fly.

Types of Learning

Let’s look at some of the types of learning to give a brief overview of how students learn.

According to Literacy Planet (Planet, 2017), there are 7 types of learners:

  1. Auditory and musical learners
  2. Visual and spatial learner
  3. Verbal learner
  4. Logical and mathematical learner
  5. Physical or kinesthetic learner
  6. Social and interpersonal learner
  7. Solitary and intra-personal learner

Auditory and musical learners:

Auditory learners like to have things explained to them and hear examples out loud. They may hum or say words aloud as part of their learning (Planet, 2017).

Visual and spatial learner:

Visual and spatial learners enjoy charts, diagrams, and white-boarding. They may create these items themselves or watch others (Planet, 2017).

Verbal learner:

Verbal learners like writing and speaking. They have a pension for being writers in the literary or journalism field (Planet, 2017).

Logical and mathematical learner:

Logical learners like to recognize patterns and are typically good with numbers. They often lean toward careers in programming or accountancy (Planet, 2017).

Physical or kinesthetic learner:

Physical learners like to engage with the material. They like to “get their hands dirty” and may de-prioritize reading and writing (Planet, 2017).

Social and interpersonal learner:

Social learners enjoy learning in groups. They like to collaborate and will gravitate toward leadership in a group (Planet, 2017).

Solitary and intra-personal learner:

Visual, auditory, physical, verbal or logical learners can be solitary learners as well. They are best learning independently using a wide variety of learning materials (Planet, 2017).

As you can see from above, we learn in lots of different ways. Learning is unique to every individual, what kind of learner are you?

The Bread Experience — A new hire’s point of view

Hello, I’m DJ and I am new to Bread. I want to take you through some of the lessons I have learned while onboarding to the Production Support team and trying to learn Golang on the fly. A little background about myself. I came to Bread after three years of writing micro-services with the primary programming language of Java. Prior to that I had only a little experience in Python therefore Go is the third language I am picking up.

Knowing that I would be learning Go, I quickly did a hello world as the customary starting point in learning a new language. Granted, that is not required but why break from tradition?

Hello World Code Example
Hello, World!

The Hello World allowed me a very basic starting point. From there I wanted to get a feel for the language basics like Arrays, Branching statements, For loops, and the like. I jumped headfirst in a LinkedIn Learning course on Go and sped through it as much as I could. Again, this was about learning on the fly therefore I did not want to take too much time. Get the basics of the language down, iterate from there.

As I started this Go course at the same time, I was starting my new position, I was inundated with information as you may have guessed. However, I knew it would only be a short time until I was looking at code and trying to figure out what it did and where there may be any bugs or broken code. So, on I went. While going through the course, I was also looking up documentation on GO through the website golang.org. I have found that using a mix of resources is better than using one resource.

While working on the LinkedIn Learning course on evenings and weekends, during the day I was working on onboarding to the production codebase. Learning how the codebase was run locally, in each environment, and how to debug. The most important item I have found as key to onboarding with any codebase is documentation. The more documentation you have the better and faster it will be to onboard someone new.

One of the best resources outside of Video learning and documentation is your peers. After I was comfortable with running the codebase locally. I decided to tackle trying to write some unit tests the “Go” way for some code that was not covered. For this I used some existing unit tests as a blueprint for the tests I was going to write. The key point here is not to “copy and paste” blindly. Take some time to learn what the existing tests are doing. After some trial and error, I was able to work up some test cases however still was having some difficulty with my composition. Enter my teammates, one of the great advantages that we at Bread have is the team’s willingness to help others, especially new team members. I ran my unit tests by them in a mini working session with some surprising advantages. Not only did I learn what my issue was, they were able to see something that they have not experienced before. It’s learning fun!

The next learning experience came rather quickly. The one thing I truly appreciate is having a stipend for continual learning. There was a slack message advertising a weeklong Advance Go course. While I was just learning the basics, I took advantage of the stipend along with several of my teammates. This allowed me to better learn Go and be able to discuss topics with my teammates most of whom are still learning Go as well.

After the week learning session, combined with the learning resources stated above, I can comfortably say that I have enough understanding to continue to iterate my learning over the course of my time on the Production Support team.

An interesting point to note is the types of learning I utilized though my onboarding process to the new position while learning this new programming language. I have found that I’m not just one type of learner. I benefited from utilizing several types of learning as defined below.

  • Utilized LinkedIn Learning as a Visual and Solitary Learner.
  • Utilized Language and Codebase Documentation as a Verbal Learner.
  • Utilized the Hello World and Unit Tests as a Physical and Logical Learner.
  • Utilized peers as a Social Learner.
  • Utilized Weeklong course as a Visual, Auditory, and Social Learner.

If I had to define one Learner type, it would be Solitary however I do find Social learning valuable. I believe the takeaway is that you can lean to one type of learner but find value in other types as well.

Conclusions — What’s right for you?

After taking a look at a new hire’s experience with onboarding to a new company and having to learn a programming language on the fly we can analyze the learning behaviors and resources to come up with some best practices.

  1. Start Quick — Determine what type of learner you are and use that to your advantage. Hit the ground running with a Hello World!
  2. Use a learning guide, video or written, to learn the basics of the language.
  3. Use language documentation as a resource for your learning path.
  4. Use your peers! — Learning in a social context can only enhance your knowledge but enhance others as well.
  5. Take an intensive course, if you can.
  6. Don’t stop the learning process!

One thing to mention in our look at learning a programming language on the fly that has been overlooked up to this point. Write code! For all intents and purposes, if you are learning a new programing language and you are hesitant about writing code while you are learning then the process will take longer than it should. Write practice code, write unit tests, write a hangman game and have your friends or kids play it, then iterate based on their feedback. Either way, writing code is essential to learning a new programming language.

References

Planet, L. (2017, October 9). How to Engage the 7 Types of Learners in your Classroom. Retrieved December 2020, from Literacy Planet: https://www.literacyplanet.com/

--

--