Decomposition is the process of breaking down a complex problem into smaller parts. It is also one of the most widely applicable Computer Science (CS) concept in our lives.
If a system you’re learning is too complex to understand/implement, break it down into manageable parts. Writing your own programming language is complex, but writing a lexer is probably not. Writing a lexer might be complex, but read in a string and split it into a list of string is not.
Let’s repharse the concept of decomposition using a more relavant terminology;
Break down hard, complex tasks into simpler, smaller, and manageable tasks.
If booking a restaurant is hard to you (if you’re like me), break it down into the smallest, simplest step.
Get the phone number of the restaurant. Make the call. The rest will come through.
If running a marathon is hard, running for 10 minutes per week is not. If running is hard, walk. If reading an academic paper is hard, reading and understanding the abstract and conclusion is not. If writing an article is hard, write short paragraphs. If write short paragraphs is hard, write tweets.
Now, go and apply it in your everyday life.