Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
February 6, 2021 08:39 pm GMT

Checklist for learning a new programming language

Update 22/01/2020: Ive applied the checklist to learning Scala and Im updating it based on that experience.

In a workshop that I recently gave, I compared learning a new programming language with learning a new natural language. Depending on your experience, learning a new programming language might be a medium difficulty task or a hard project. In the latter situation, youre going to need to have some structure in your approach, to ensure you reach your goal. But what is an easy way to start? I propose to use a checklist similar to the one Ive written below.

Naive solution

Ive got enough Java experience. Im a good software engineer. Ive played with other languages before, and it went well. I said to myself. I was aware that Scala has some very funky notations and that it uses plenty of functional programming concepts. But my confidence was high. Ill do it as I did it before: take an online course, read a book, find the documentation, make a small app, and go from there. But I didnt expect to get into analysis paralysis because of the overwhelming number of books, frameworks, courses, etc. I eventually decided on an online course and finished it only to realize that I wasnt learning as much as I wanted. I decided to make the learning process explicit by creating a checklist that I could improve iteratively.

The checklist

I created this checklist iteratively as I was learning Scala, but Ive generalized it for any programming language. In a future post, Ill show how Ive applied it to my learning.

There are two components that I found valuable while learning Scala: keeping my motivation high (mindset) and having a good learning plan that supports my learning experience (setting). Start with mindset first (ordered starting with top priority), continue with the setting.

Mindset

  • Clarify what your personal whys for learning are. Try to connect this to intangible needs/wants/dreams. Bad: I want to learn this because my boss promised me a 2% raise at the end of the year. Good: I want to learn this because Im curious about how it works
  • Find a project to build while learning. Online courses and books tend to teach concepts without applying them to real-world use cases.

Setting

One-time tasks

  • Follow a high-quality online course/book about the language. Material created by the languages author or main contributor clarifies the language philosophy and its specific patterns.
  • Find/create a cheat sheet with the most common expressions and idioms of the language and keep it open in a browser tab
  • Find/create a comparison between the new language and another that youre familiar with
  • Start collaborating on an open-source library. Pick a common one, but not a complex one. Start by searching on GitHub.
  • Find the official language documentation, learn how to read it, and keep it open in a browser tab
  • Find/create a roadmap that describes the steps that you will go through (the table of contents of online courses are usually a good source)
  • Find a code-conventions/style-guide document

Continuous tasks

  • Take notes: questions, curiosities, strange code.
  • Find someone to review the code that you write.
  • Find/create a dictionary/glossary of the concepts, keywords, etc. which are specific to the new language (consider making a mindmap). Aim to understand the use cases for them. And practice it.

Deprecated tasks

These tasks seemed a good idea in theory but were not useful to me in practice.

  • Find/create a list of antipatterns. It might be syntax or design patterns, but the language that you are learning is going to do a couple of things differently compared to what you were used to.
  • Find the frameworks that you foresee needing and are the most popular (GitHub search with the new language tag)
  • Find and learn how to use the most popular build tool

Work in progress

At this point, Im convinced of the usefulness of having a checklist for learning a new programming language. However, Im aware that some of these ideas are more effective than others. In a future article, Ill tell you how my learning process was affected by following this checklist.


Original Link: https://dev.to/treaz/checklist-for-learning-a-new-programming-language-5g67

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To