There's an [1]interview with Richard Stallman and this article is the exact answer he gave when asked what the best way to learn programming: write a feature for an open source project with active users, then debug said feature, and repeat until you get better.
I note that if you pick the wrong project, you might not get code quality, reviews or appreciation. So it sounds like you need to go specifically searching for a project to learn with, rather than e.g. a tool you already use.
Trust me, when you write code for your personal project which may be a weekend project or an overnight quick hack, you write code to get something done. All you care about is — “Does my code work?”. You hardly care about the quality of the code.
Not in my experience. When I learn a new language by implementing a project in it, I do not consider the job done unless I have written idiomatic code in the new language and really understood every piece of code I took from Stackoverflow.
Not saying that contributing to open source projects for learning a new language isn't a good idea. Free code review in exchange for your contribution to the project is a win-win.
Agreed. If I'm trying to learn a language, my first concern will be the style that I write in. I'll pay special attention to elegant ways to express my intent in the new language, with special attention paid to features that differ strongest from languages that I already use. Having the project work is important, of course; it's the proof of having learned something. But the initial project needs to be clean and idiomatic first, and correct second.
Personal projects in languages that I'm already familiar with are the places that I allow myself some sloppiness.
I also agree completely. One thing I want to add is that with personal projects, I care about my code and the structure etc as much or maybe even more sometimes as the "work" code. It's just me in the personal project.. why not make it as I want, and make it really nice for myself?
Contributing to an open source project (coredns - who are super-helpful) was also one of the steps that I took to learn Go. It's a good early step but I still think you should do some tutorials before asking for a person's time.
You need to decide what you might be interested in first. Then search for a small project on Github, Bitbucket5, etc., that does something like that or related to that and see if they have any open bugs that need fixing or a list of features that they want implemented.
It's probably best to ignore any projects that have not had any recent contributions at this stage because the maintainer might have lost interest so you won't get any feedback about your contributions.
9 comments
[ 3.7 ms ] story [ 27.1 ms ] thread[1]https://youtu.be/dvwkaHBrDyI
Not in my experience. When I learn a new language by implementing a project in it, I do not consider the job done unless I have written idiomatic code in the new language and really understood every piece of code I took from Stackoverflow.
Not saying that contributing to open source projects for learning a new language isn't a good idea. Free code review in exchange for your contribution to the project is a win-win.
Personal projects in languages that I'm already familiar with are the places that I allow myself some sloppiness.
It's probably best to ignore any projects that have not had any recent contributions at this stage because the maintainer might have lost interest so you won't get any feedback about your contributions.