A new project is a brand new challenge. A programmer who has experienced the same sets of problems will never approach it the same way again. The first time a challenge is overcome, the experience is analyzed through a combinatorial process to explore every possible outcome either through the method of brute force algorithm or through the method of recursion. Often, a programmers firsthand experience with a problem considers a handful of research, background information of the problem, defining the problem, and understanding its nature and conditions. All this probing for the understanding of the problem domain elicits a vast knowledge that can influence how we may approach this similar problem in a future encounter. Programmers are empiricist in terms of manipulating concrete data given its laws and principles to simulate the solution.