DEV Community

Unconventional way of learning a new programming language

Sahil Dua on March 18, 2017

Note: This article was originally published on Hackernoon There are more than 500 programming languages. Hence, it's pretty normal for you to star...
Collapse
 
g2theg profile image
Garrett Galow

I thought a lot about this problem in an HCI (Human-Computer Interaction) project in my graduate studies. Most professional developers end up learning languages at work. Unfortunately, not everyone has a team of developers to lean on and code bases to develop and learn a new language in. The approach you exactly described stood out as one of the best options that exists today to emulate that approach. I'd recommend this to anyone looking to build their skills in a new language. It also doesn't hurt that contributing to open-source will be something you can later show off if needed!

Someone really should build a site that can help people find a good open source library to contribute to.

Collapse
Collapse
 
codemouse92 profile image
Jason C. McDonald

YES! I find that I learn a language fastest and best when I'm reading through code written in that language...assuming it is halfway decently intent-commented and/or documented so you know what it was supposed to do. :3

That said, I also watched one of my teams learn a LOT about C++ by reading through some very poorly documented spaghetti code and working out what it was doing, and why. (Their efforts later led to the open source project being able to refactor a performance-critical part of the code.)

Collapse
 
rubyandcoffee profile image
Alexandra Wolfe

Really great article, surprised many others (including myself!) hadn't thought of this before. I've been programming for a while and still haven't really contributed to open source - but I suppose you're right, you don't need to be an expert, you can just start on simple pull requests.
Thanks for writing - this was really interesting.
In fact, I'm going to contribute to something tonight!

Collapse
 
olivercole profile image
Oliver Cole

The difficulty is in finding a good quality project. I nearly learned Python just to contribute to a project I liked using and believed in - then I found a whole bunch of discussion on Reddit about how the maintainer didn't know what they were doing, refused to update dependencies, esoteric coding style, wasn't open to debate, etc etc.

So I never learned, and never made the pull request :(

Collapse
 
llexical profile image
Lizzie

I don't do it on open source projects, but I have always found the best way to learn a new language is to find a project and add to it. It also makes you an awesome employee because you are happy and able to learn on the job

The only thing time I would say it is different is if the inheritance pattern or some other major feature is very different from what you know OR it is your first programming language. Then it's best to do some research on differences or learn the basics before you dive in! I have learned multiple languages this way.

I think I am going to start with open source next time I want a new language though, it sounds fun!

Collapse
 
gregorgonzalez profile image
Gregor Gonzalez

That is the best idea, learn by studying other people code.

When I started to work, they had a really big ERP system and I started by following their patterns and methods. Was hard because there wasn't documentation and every one was so occupied and no one could explain anything to me. Reading the code I realised that I don't needed the documentation because methods/functions are really simple and self explanatory. I followed the pattern blinded till I realised why they need it.

All pieces fit and now I do the same study everytime and any project.

Collapse
 
kaverigoj profile image
Kaveri Patil

"I have never received even a single comment which was insulting or demotivating. Everyone is super encouraging and helpful." --This is the only reason I love open source community and I want to be part of it.

Collapse
 
srebalaji profile image
Srebalaji Thirumalai

Very good article. I used to always wonder how to find those open source projects to get started. Is there any way to find the suitable open source projects to contribute ?
Thank you.

Collapse
 
timwillsie profile image
Willi šŸ‘ØšŸ¼ā€šŸ’»

I once came across this twitter account which showed github projects and their beginner issues for your first PR:

twitter.com/yourfirstpr?lang=de

Maybe it's worth a look.

Cheers, Tim.

Update:

Here are other sources for the first PR:
open-source.now.sh/
up-for-grabs.net/#/

found in this german blog post:
t3n.de/news/open-source-einsteiger...

Collapse
 
dennisfen profile image
Denis Borisevich

Thanks for the links, Willi! I always had hard time finding entry-level issues to work on when learning new tech.

Collapse
 
trustnoone profile image
Giovanni Caporaletti

Anyone here who learned haskell or scala or rust and contributed to a project after 2 days? :)

Collapse
 
souravbadami profile image
Sourav Badami

Good read! Thanks, Sahil!

I've done an article on First Contribution to Open Source!, bit.ly/first-contribution.
Do give it a pass if you are a new contributor and just want to get started.

Collapse
 
netanelravid profile image
Netanel Ravid

What a great article

Collapse
 
srebalaji profile image
Srebalaji Thirumalai

Very good article. I used to always wonder how to find those open source projects to get started. Is there any

Collapse
 
letsbsocial1 profile image
Maria Campbell

Great article. And I agree. Great way to learn. And to learn how to work with others!

Collapse
 
nijeesh4all profile image
Nijeesh Joshy • Edited

Some thing really worth trying. Great article

Collapse
 
inidaname profile image
Hassan Sani • Edited

This just came in at the right time thank you, I am actually learning Go and I have been battling with adopting and understanding, I am sure this will work.

Collapse
 
niko profile image
Niko šŸ‘©šŸ¾ā€šŸ’»

Awesome article! I've just started learning Ruby for work, going to try this out.

Collapse
 
dominicduffin1 profile image
Dominic Duffin

Sounds like a really good idea - I must get started this summer.

Collapse
 
jlhcoder profile image
James Hood

Nice article! I'm going to give it a try!