Interacting with a real domain while learning programming is important for many reasons.
- Problem arises from real domains, not in the ideal learning environment.
- “Necessity is the mother of invention” – frameworks and tools are built originally to solve problems the developers are facing in their daily real-work.
- Code should be written to solve domain problems, not for fun (unless you enjoy it).
How to be involved with real domain?
- You either be an employee facing daily challenges. But in this case you should be careful since a lot of working environments suck. You mat not be learning so much rather fixing other people’ problems endlessly.
- Open source for the rescue. In open-source projects, you are working with the best developers in the world facing edge-cases. Even if you are a beginner, you don’t need to contribute to the open source project, but at least you can read the code and experiment with it. This is so much valuable. Reading other people’s code (for me) is the best way to learn new programming techniques.
- Build your own domain. If you are building a product, you may face real-life challenges, but this so much depend on the product you are building.
You need something to push you to face new challenges. This is will never come out of the books.
The quality of learning is what matters, not how many years of experience you have.
The Why Question
Look at any technology you’re using today, read about its history, and see why it’s invented? The valid answer for all technologies is: to solve a problem. Engineering is about solving problems, not thoertical, but real problems people face in their fields.
It’s important to know this in order
Research for resources
- Vue.js original written to solve Evan’s problem
- React is designed to solve Facebook messenger issues