DEV Community

loading...

What do you build to learn a new language or style?

Luke Westby
Elm core contributor. Creator and former maintainer of ellie-app.com. elm-conf organizing team alumnus.
・1 min read

I like to reimplement Elm's Json Decoders in whatever language or framework I'm trying to learn. I did this when I was getting up to speed on fantasyland in JS, and when I needed to brush up on Python, and now this week with PureScript. How about you?

Discussion (13)

Collapse
ben profile image
Ben Halpern

I definitely do not have such a disciplined approach to building, but I think this is a great approach and I'd try it in the future.

Collapse
lukewestby profile image
Luke Westby Author • Edited

i'm actually a little skeptical of this approach. there's a lot of variance in how a community's culture informs open source contribution, in how a particular maintainer or core team approaches contribution, and in the experience of the person taking this advice. i worry that someone who is new to open source or to programming in general might try to apply it to a project where pull requests aren't the primary way to contribute and then end up feeling discouraged by the results of that interaction.

that is to say, contributing to an open source project is more than just writing and reviewing code and treating it that way can be a net negative.

Collapse
woahitsjck profile image
Justin Chew

Awesome, just read the article and I feel pretty keen to start this approach!

Collapse
dvdmuckle profile image
David Muckle

I love this approach to learning a new language, but I've always had a hard time finding a project simple enough to build on. Any advice on how to go about that?

Collapse
hoelzro profile image
Rob Hoelz

I like the idea of contributing to open source as a way to get into a language, with the caveat of trying to contribute to projects you actively use. That can really help with motivation!

Collapse
hoelzro profile image
Rob Hoelz

When I was doing Language of the Month, I made sure I had a project picked out that I felt was a good fit for my target language's stengths. I did some stats stuff with R, a multi-process text-based adventure in Elixir, and a provably correct implementation of Connect 4 in Idris. I think the most important thing (for me, anyway) is making sure you stay motivated - having a project in mind (especially one you'll use) can really help!

Collapse
buntine profile image
Andrew Buntine

I think that Conway's Game of Life and/or a Brainfuck interpreter are good, simple projects for learning a new language or paradigm.

Collapse
maestromac profile image
Mac Siri • Edited

Not really "building things" but I find myself trying to solve the first 5 questions of Project Eulers whenever I'm trying to learn a new language.

Collapse
flutterflies profile image
Katie Macke

I like doing something like a text editor because a basic text editor is really simple to make but you can add a lot of features that can help you learn lots of different parts of a language.

Collapse
lukewestby profile image
Luke Westby Author

i really like this! the predictability of starting with the basic functionality of the text editor seems like a nice way to get through the learning curve, and then the freedom to add features and be creative seems like a great way to get to know the strengths and weaknesses of the new language. really cool.

Collapse
bgadrian profile image
Adrian B.G. • Edited

Mini games ofc, what else?

Except for Go, I wanted to learn new algorithms and techniques

Collapse
justgage profile image
Gage

Just anything i want to make anyway. OCaml was a command line journaling app, Elm was a budgeting app.