Domain-Driven Learning

You're reading a draft of an essay, it's not published yet.

Interacting with a real domain while learning programming is important for many reasons.

  1. Problem arises from the domain, not in the ideal learning environment
  2. “Necessity is the mother of invention” – frameworks and tools are built originally to solve problems the developers are facing in their daily real-work.
  3. Code should be written to solve domain problems, not for fun (unless you enjoy it).

How to be involved with real domain?

  1. 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.
  2. 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.
  3. 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.


Research for resources
- Vue.js original written to solve Evan’s problem
- React is designed to solve Facebook messenger issues