Whenever you approach a problem, you should carefully consider the process of the requirements analysis. One of the biggest mistakes in project development is starting coding without a thorough analysis of the problem itself.
Imagine a situation where you are tasked with creating a calculator, a simple tool that allows users to make arithmetic calculations on numbers. Let's say you have magically completed the project on time and released the program. Now, users are starting to use your calculator and sooner or later they find out that the result of their calculations doesn't exceed the maximum size of an integer. When they complain about this issue, you are ready to defend yourself (and your creation) with solid coding-backed arguments such as it's because of using the int data type in calculations. It's totally understandable...