is it essential to learn as many programming language as possible ? - No. Ofcourse not.
But you should know how to approach learning new programming language when the time comes ( which i believe is gonna be the case of pretty much everything you wanna learn ) . Especially, when you are working in fast pacing startup. Getting things done. Where deliverables are always on the toes.
there are several languages, i know (in the order learning):
- Python
- Go
- C
- C++
- Rust
(the list is not extensive although, but i think they have taught me alot)
When i say, i know the language. It’s around to be able to develop an application using it, debug code, and maintain it.
Tracing back -
It took me long time to get comfortable with my first language (Python) around 2.5 years. But then learning Go and so on.. took less time. I was curious what was the problem, initially took large amount of time, then it was pretty swift. Looking back there were things i pointed out that were helpful, and unhelpful.
In this blogpost, i will list down the things i like.
Python :
How should’ve approached python :
- Understand variable initialization
- Basic function definition
- Understand basic pythonic arithmetic
- Learn about classes and how single inheritence works by doing simple example
- Learn about how importing works in python, try sample code to modularize the code.
- Look at how professional python programmers code. (youtube, twitch, github). Try to replicate there style. **Even though, it may look too overwhelming. Don’t dive in too technicalities, just try and comprehend the logic and code flow. Try and understand what they are doing.
- Develop the habit of looking at good clean code written by good coders.
- Debugging - unless you know how to debug your code, you won’t understand the granular details.
- Every language has some key things to be learned from, find learning what is core of the language you trying to adapt :
- python got quick protoyping, quick development
- golang got goroutines, lean learning curve, etc ..
- Build one maintainable project in python. It can be CLI, CRUD website, anything!
- Pick one open source project and get involved in it by contributing.
How i actually approached python :
- Find what to develop and google everything…Ctrl+C-Ctrl+V all the time. (i still do Ctrl+C-Ctrl+V, but this time its more mindful, knowing exactly what is needed is essential)
- Inconsistently focused on doing the work without actually honing my tools to the required level. (in games, also when you encounter a task which is awefully hard it means you need to go back to basics and level up, that’s called keeping up the game otherwise, you’re soon to become a bottleneck)
Golang
I had to learn this in my first job. Learning from previous experience, i approached golang accordingly :
How i approached Golang?
- This time, went through basics of Golang. Made sure i was comfortable with creating functions in Go. (used nice looking VScode theme to keep me engaged)
- Go doesn’t have classes but structs. Initially i started writing code without structs in Go. but it doesnt help after a while. Writing structs gets you closer to the Go
- I often peeked into my senior’s code. Which was quite clean and using good amount of techniques in Go. I followed this what i shared in python above
- `Try to replicate there style. Even though, it may look too overwhelming. Don’t dive in too technicalities, just try and comprehend the logic and code flow. Try and understand what they are doing.
- I replicated my senior’s style, although poorly. But with time and effort it got better.
- Spent time in debugging alot…alot
- Invested time learning Go’s core: goroutines, channels..
- Built my own CLI project in Go
- Forked and conrtibuted by example to this Opensourced Golang library
**Same methodology are applied when i was learning C/C++ for production development.
Opinion -
Whether it be learning language as a hobby, experiment, professional journey. Pareto’s rule (80:20) still holds, 80% of learning comes from 20% of the efforts. Those efforts must be in right direction. Although, most of the learning will come from the mistakes. But you also do want to respect and save time. Not always you’ll have the luxury of spending huge amount of time. That’s why it gets essential to put the effort just in the right place. And getting the job done and learning as a reward.
A programming language can be used for desktop application, web servers, CLI, general purpose software development. But i believe there is one main branch which is basics and then there are expertises like android, full stack development, design, machine learning etc..
The guide above does not deal with expertise domain. Only scope is to talks about possible right approch for learning new programming language.
This suggestions above are not perfect. There could indeed be some flaws. I’ll correct it as soon as it gets pointed out.
Thank you
I hope the insights would help someone-somehow. Whoever read it till the end. Thanks. Please, leave some feedback on what can be improved.
Remember the list:
- Understand variable initialization
- Basic function definition
- Understand basic arithmetic
- Learn about classes and how single inheritence works by doing simple example
- Learn about how importing works in python, try sample code to modularize the code.
- Look at how professional programmers code. (youtube, twitch, github). Try to replicate there style. **Even though, it may look too overwhelming. Don’t dive in too technicalities, just try and comprehend the logic and code flow. Try and understand what they are doing.
- Develop the habit of looking at good clean code written by good coders.
- Debugging - unless you know how to debug your code, you won’t understand the granular details.
- Every language has some key things to be learned from, find learning what is core of the language you trying to adapt :
- python got quick protoyping, quick development
- golang got goroutines, lean learning curve, etc ..
- Build one maintainable project in your language. It can be CLI, CRUD website, anything!
- Pick one open source project and get involved in it by contributing.
~ Until next time, Hitesh