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

Leonardo Teteo on January 20, 2019

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 i... [Read Full]
markdown guide
 

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.

 

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.

 

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.

 

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

 

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.

 

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.

 

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.

 

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

 

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!

 

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!

 

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!

 

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.

 

Good question and I have the same approach: I generally learn/retain new things the best when I do them myself. I feel like a good way to bolster the documentation/tutorials is to maybe find a small piece of work around some silly/fun analytics that you could work on. Maybe download something like your Twitter history and build a tool to generate some statistics on your usage.

 

That's not a bad idea either, I always had the curiosity to know what words I use the most on Twitter and no tool out there satisfy my ambitious. hahaha

 

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.

 

Maybe create a side project, when looking at a new language or framework the language or framework itself can give you an idea about how it might be useful and what kind of product you could build with it.

 

You could use the projects you do at work as a starting point for inspiration. Try to look at the smaller projects. Note down the core functions and features of that project. Then you can research on the best way to implement that project in the language you're learning. The key is to keep at it though, because many times you may run into many roadblocks and dead-ends before finding the path that works best for the language you are learning.

 

I've struggled with this too, mostly when transitioning from backend to frontend. So I've tried different approaches.

Video courses and learning platforms

Most tutors will build a medium sized web app in which you will be able to follow along and then give a go on your own. Working on something that "builds up" will keep you interested on finishing. I have tried Pluralsight and Frontend Masters.

Anticipating

Find areas of opportunity where your teammates could use an extra hand, you can start learning on your own and then jump in. Knowing you'll get to do something productive with it later will keep you motivated.

Freelance on the side

Recently I've been learning about serverless and JAMstack, Facebook groups are a good place to find gigs, there I stumbled with an opportunity to build a website and it was a perfect chance to try out GatsbyJS beyond the common blog tutorials you see around. It was great for me because not only was I learning and being productive and the same time, I was getting paid to do it!

This is what I did, like 70% of the tools you see there I haven't used before.

 

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.

 

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.

 

My situation is I studied several languages and always go with books still for the basics; usually able to skim over topics unless it is a new feature like channels or coroutines to name a couple. Spent a lot of time trying to understand implicits and a lot of functional features of scala. I feel a better programmer for it. Then beyond that just start using it or if possible a drop in replacement like Scala or Kotlin in existing java projects. I tend to go the route of setting up a frontend and backend typically straight forward,but not sure what constitutes difficult in your context. I try not to spend a massive time on learning multiple frameworks; because knowing the language is usually more important to me than learning the hottest framework. Then complicated things to me are learning to containerize everything in an effective way advanced Scala topics because there is so much. Though this is just where I am.

 

The golden question of How to learn languages/frameworks efficiently (and how to not fall into the Tutorial Hell).

I have adapted the process of how I learn along my last two years.

Initially, I just did tutorials until I magically knew how to do everything. It didn't work too well.

Then, I moved to do a few tutorials, then reading a book or two. Same success as before.

Now my process is to do one or two tutorials to see get the big picture, get the main features of a framework/language, build small and simple projects and then keep adding features.

Well, the process has more steps, but it has helped me way more than being stuck in tutorial hell. It helped so much I wrote 16 Tips for Python and Django beginners (Replace Python with a language and Django for the Framework)to help other people to overcome their 'Tutorial Hell'.

About what to build... Only you can answer that. Try to build something related with your passion.

You like playing the guitar? Build a Social Network for guitarrists.
You like gardening? Build a blogging platform for gardeners.
You have an app in your mobile that you enjoy a lot? Build a clone.

 

Hey
My problem for making projects which i want is that i see the last big result which scares me xD, i guess whatever is going to be made should be broken in so many small pieces. I dont like it much but haven't found any better way to learn thing

 

I find projects in books coupled with a personal project to be the best for me. That's the style of a lot of pragprog books (Phoenix, OTP). Also a lot of languages like Elm, Rust have decent tutorials on their own sites. If you figure out the best way with Haskell let me know ;)

 

Whenever I get to learn new language/framework I think of small projects I could work on. I was a tester back then, but also studied ReactJS on the side. I had a task to test cross-platform. The routine was to enter url, username and password, then I could select on the web form to perform manual testing.
So, I created a small software with some browser icons there and put text inputs so I can enter url and login credentials all at once. And when I click a browser icon, it automatically opens that browser and enter the url and login credentials for me.
I used a selenium webdriver.

And from my experience, you could also think of some routinary actions or problems you face everyday on your job or existing/potential clients that you can solve by creating an app for them.

 

I think my answer is that I don't shy away when confronted with something new. If their is a tool or resource (at work) which could benefit from some love I dive in.

I've learned VB (as part of excel), structuremap, some managed c++, jquery, selenium, little npm, encryption, msi (and wix), soap...

I have a bunch of personal projects which go to die, namely in D. The thought of using other languages isn't appealing.

 

exercism.io/ is a great site help with learning new programming languages. It provides a common set of tasks that you can implement in various languages and get feedback about your code. Good community.

 

You could try several free websites which let you practice.
Good examples are codewars, hackerrank, leetcode

code of conduct - report abuse