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?
Latest comments (28)
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.
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.
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.
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 try several free websites which let you practice.
Good examples are codewars, hackerrank, leetcode
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
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
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:
publicandprivatein Java,myandourin 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 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.
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.