Learning (Software)
Many people ask a lot about how to learn X (language/framework/library). Many people also answer the same answer again and again: make a project.
I want to elaborate in this article about what that answer means, how to learn and why this is the right answer.
Why learn something new?
Initially you have a reason that you want to learn X. Whether it is to put on your CV or to know more about it or to use it or any other reason you might have.
First you should make a plan to fullfil that need: new framework => to get a new job.
In the scenario of trying to get a new job with a new tool, you can see what is the common use case of that tool for example. Plan a project to show off and to learn from. Work on it in small steps to tackle problems and learn from each part. This way you won’t give up and you could see small improvements in your learning process and also you can decide in the middle that you learned enough and change the plan at any point.
Basics are the reason you want to learn
Obviously you would go after the basics of X first. The issue here is knowing what they are. But you can answer this yourself by asking what you need it for. Using a frontend framework? Google what is it good for. Same with libraries, what to learn d3, you will find it’s mostly used for charts. You can then later choose a few charts you want to implement and start from the easy parts.
Real world example
A good current example is reactjs, a UI library/framework. For me it’s good in rendering your UI based on the state of your application in contrast with jQuery which you would manually go and change stuff based on events. Reactjs is mainly about the component usage with internal state and lifecycle methods.
A small app that uses these when needed:
- componentDidMount for api calls and dom event listeners
- componentWillUnmount for removing dom listeners
- component internal state for data and user interactions that changes the view
- Passing properties between components
From there you can tackle the usual different cases of real world applications like forms, menus, SEO, app state, localization and many others. Most developers don’t tackle all of these in their career! We are driven by needs that create problems to solve and we learn from them.
So like on the job when you have problems to solve, all you need is to create a need from the reason you want to learn, then you would have many problems to split, solve and learn from.
From small libraries with one use case to a complex framework with a new way of thinking
I find it useful to find code online, copy and try it in an existing project. This method is very useful with small libraries to get a real feel from.
The bigger X is, the bigger the journey and the effort/planning would benefit the learning process.
Summary
To learn something, we need to use it. To be motivated to use it and not get lost, we need a good reason. Anything we want to learn has a need to fullfil, a target we should focus on to get to our goal. This is also true outside of the software world.
Please let me know if this helped you or if you have a suggestion or some other way you learn and is proven to be useful for you.
Top comments (0)