Two important concepts in programming
Decomposition
Divide the large problem into manageable chunks. Solve individual chunks and then combine all the solutions by means of composition. This will solve the larger problem.Hierarchy
Group some details together to form an abstraction. The group is the higher level abstraction and the details are the lower level abstractions. We can continue the grouping and dividing of abstractions to move up or down the hierarchical level till the problem becomes manageable.