How to master and truly understand a new programming language
The great white whale of all programing tutorials
So your into tech? And you like to read, well that’s great!
As I’am currently writing this there is probably more than one hundred people doing the same thing right now, just in the field of tech. Sharing knowledge with the written word.
It’s awesome, it’s really, really cool that I (a dude/dev/dad from a country so far up north that polar bears have been known to freeze to death here) can take a part of something a person that lives on the other side of the planet has written bare moments after it’s been published. So I’am just gonna take a few seconds and appreciate that, and honestly I think you should to.
(one Mississippi, two Mississippi, tree Mississippi)
And we’re back.
So it is awesome that people write and share there knowledge. But heck, it’s also really overwhelming. Cause there are so many options, so many sources of truth, so many mediums and channels of information and sometimes it makes my head spin just thinking about it.
So I decided not to write a tutorial!
You heard me right!
Instead I talked to some clever people and decided that rather than telling you how I think you should do stuff, or what you should do to conquer your next programing language, framework, api or whatever. I’am gonna recap the methods that these people use and let you make up your own damn mind about what approach you like.
If you want you can consider these 3 paths as tools, mix and match and find your own path with these. Or you know, you can follow one of them blindly or ignore all sound advise you hear and sing nah nah nah! I don’t care and I’am not gonna track you down and tell you what to do! Or I’am? ;)
(no seriously I’am not. Cause I got kids and stuff. I ain’t got time to deal with your foolishness I got enough with my own…)
So enough of the crazy rants lets get down to it:
* “The programing language” will be referred to as “It”
The In depth path
Step 1: Understand the languages history
- Find out who controls it.
- What was it’s original purpose.
- What it the philosophy behind it and it’s design.
- Is it rising in popularity or falling and why
- What does the community look like
- How do you keep yourself up to date with it
- Is there any controversies
- What are the existing problems or bug that one should be aware of
Step 2: The High level architecture
- What programs, setups and configurations do I need to run it
- Package managers, is there an official or are there several
- Is it complied or interpreted, is there perhaps a combination and if thats the case how does that work
Step 3: Getting to know it
- Official tutorials and O’Reilly books
- What does the actual code look like, is there any similarities with other languages I know. And if that’s the case what are they how does this language different.
- Is it a typed system
- What comes out of the box
- What are the standard or most used libraries and the most common third-party-tools
- Is there a style-guide or many and if so how do I feel about it
- How does it’s core look like and what does the core contain
And during this entire process it’s is recommended to build, execute code, explore the tools.
The analytical path
Step 1: Researching
- What is it’s context
- What is it’s purpose
- Why is it needed
- What problem or problems does it solve
Step 2: Starting up
- Do a bit of googling with the agenda of comparison
- What does the syntax look like, do I recognize it
- Go to it’s official site, read some docs, learn the basics like how to set it up, configure it and start writing some code
Step 3: The Mastering
- When the syntax makes sense, write some programs that solves some problems it was designed to solve
- When it feels good and right use it in a real current project
- The point of this path is to get an analytical and contextual overview and gain knowledge step by step
The hands on path
Step 1: Quick start
- Find a tutorial or a quick start and do something like a ‘Hello World’
Step 2: Write some motherlovin code
- In the hands on approach it is all about writing code
- This is because if you want to get down to it you will only really learn the in’s and out’s by coding
- Get errors
- Solve the errors
- The documentation don’t describe the messy parts and have to fix it when the shit hits the fan, that knowledge can only be gained through experience, trial and error!
Credits and Contributions:
The in depth path: Info and method by Ryan Cook
The analytical path: Info and method by Hemant Chhonkar
The hands on path: Info and method by Matt Johnston
This piece was written by Stefan Lachmann, @2lach in September 2018