DEV Community

Cover image for What do you do to practice new programming languages and/or frameworks?
Leonardo Teteo
Leonardo Teteo

Posted on

What do you do to practice new programming languages and/or frameworks?

I've been struggling with this problem for a while now. I'm curious, I like to experiment new things, be it languages or frameworks, but for that it is important to have some idea to code with. Just do the tutorials is not enough for me, it is generally too easy, so I need something more real to practice. However, I don't have much creativity to projects. I try to think about some problem that I may have and would like to automate or something linked with my hobbies that would be nice to create. I do have some projects slowly evolving, but since they are a little more complex, I tend to use things I'm already fairly familiar with, so it doesn't count. I also try to find open source projects on GitHub that I could contribute, but the well kept ones are generally too hard for someone who wants to practice the basics, it is intimidating.

So, the question is, what to do when you want to practice something, but doesn't have an idea of project to try it on? There are sites that can help with that? Front-end, back-end or both. What do you do when you are in this kind of situation?

Top comments (28)

Collapse
 
hellokyyt profile image
Kyle Harrison

I build fully managed blogs and Twitter clones to practice new languages. It encompasses most techniques used in the real world, and enough of each to get some good practice in doing real world data processing and handling with a display and management layer.

Collapse
 
leoat12 profile image
Leonardo Teteo

That's a great idea. We generally use Twitter a lot and know it inside out, at least theoretically. I think I will try it out in the near future, it is a challenge I never thought about.

Collapse
 
jamesdengel profile image
James dengel

To learn other languages, I like using sites like codingame.com, many little challenges, it helps me to learn a new languages and hone my skills. For Frameworks it's something more substantial like a project or little website or Web API.

Collapse
 
leoat12 profile image
Leonardo Teteo

It looks interesting, I will take a deeper look at it. :o

Collapse
 
buphmin profile image
buphmin

Honestly I think the best way to learn is to use it at work. Now this isn't always possible but if the opportunity presents itself and the language or framework fits the use case then that is the best way to learn. At work you are dedicating a large chunk of your day to development, and you are incentivized to write good code. You also typically have a discrete end goal to guide you. At home when I am just playing with things my code can get a bit sloppy when I don't have a solid direction and no end goal.

Collapse
 
bgord profile image
Bartosz Gordon

I've been thinking about all this "coming up with ideas" problem, too. Of course, there's no silver bullet. First thing that comes to my mind is automating the boring stuff. Then think about your problems. Except of these two topics, maybe try this one.

Iterate.

Do you have any side-project or maybe a script that you've written a while ago? Maybe it's worth spending some time to improve it, add a new feature, a few tests. Or rewrite it while keeping in mind all new things/patterns learnt recently? I found it rewarding to rewrite the script I use on a daily basis from more than 60 LOC Node.js codebase to 20 LOC bash script.

Collapse
 
hoelzro profile image
Rob Hoelz

One strategy I like to use when learning a new language (which you could probably apply to frameworks as well) is try to take example code from tutorials and purposefully break it to see what kinds of error messages I get. Here are some examples:

  • Misspell a variable or function name - how does the compiler communicate that to me?
  • If a tutorial says "just put this keyword here - trust me, and we'll explain why later" - definitely see what the compiler says if you omit the keyword!
  • If you learn about keywords that serve a similar purpose (eg. public and private in Java, my and our in Perl), try interchanging them in examples and see what breaks.

Although compilers' outputs are getting much friendlier these days, I've found that doing this helps to build an intuition for what the compiler is trying to tell you for later - when you're not trying to write invalid code!

Collapse
 
leoat12 profile image
Leonardo Teteo

I've never thought about that and I value greatly the learning experience that comes from a error or mistake. I will remember that one!

Collapse
 
ahmedmkamal profile image
Ahmed Kamal

I was thinking about the same thing a while ago and I ended up with that, for me there's nothing better than building projects, and I also have the same problem I can't think about new ideas to these projects, to be honest, we have to spend some time working on our creativity this skill is very important, anyway there's a list of the practical projects that you can build using any language of your choice, check it here, while you're working on practical projects or any project in general keep in mind to stay up to date with the best practices of the language or the framework you working with, most of the time you'll find these best practices listed somewhere for the specific language or framework by 10 minutes of Googling, here's an example of Node.js best practices, I also built some practical projects like Desktop app using Angular, Text editor using C++ and Binary Decimal converter using C++ actually I'm a big fan of JavaScript as well as C++ and, I wish I can use both of them in some projects togither, hope this's helpfull and hope also we can find new and more effective ways to practice on new languages and frameworks.

Collapse
 
leoat12 profile image
Leonardo Teteo

The list of projects and your advices will be very helpful. Thanks! :D

Collapse
 
serpient profile image
serpient • Edited

I learn new skills (a new framework, practice backend, design process) in Chingu -- great place to just take on a project and apply whatever new thing you need to practice.

Disclosure - after doing it a few times, I now work for Chingu. I still highly recommend it!

Collapse
 
leoat12 profile image
Leonardo Teteo

Took a quick look and it looks fantastic. It is impressive how there are some many great sites out there you've never heard about. :o
I will definitely sign up and see how it goes.

Collapse
 
embiem profile image
Martin Beierling-Mutz

I usually learn by...

  • using it in one of my side projects
  • using it while contributing to OSS
  • using it at work

So I guess I'll usually learn/practice by using it πŸ˜‰.

Especially if you can't practice it at work or don't have a side project that fits, I'd strongly recommend contributing to OSS that uses the language/framework. This way, you often even get reviews of your code for free.

Collapse
 
jvarness profile image
Jake Varness

I try to take problems I've already solved, or tutorials I've already gone through, and go through them again, following the best practices and paradigms for the new framework/language I'm trying to learn.

It makes learning a little faster since you already know what you want to accomplish, but you now need to learn how to apply it to the new thing you're trying to learn.

Collapse
 
itr13 profile image
Mikael Klages

I usually try to do a tiny project, but I've noticed that I seem to learn faster if I have access to an already existing project that I can tweak values in and modify to see what happens.

Going to try that from now on, hopefully it will make my learning more effective.