More often I come across individuals who precept programming as a difficult paradigm. This stimulated me to think about the reasons why programming seems to be difficult and also so different to many other professions? Additionally, to what scope it’s possible to simplify and quicken the process?
I thought profoundly on this topic, read relevant paperbacks and referred online resources (link). Inspired by the conclusions and resources, I want to share the outlook of the topic here.
Often times we perceive programming as just an extensive act of coding. But in reality, it involves a process behind it.
According to the conclusions, the process can be formulated into 4 simple steps:
1. Interpret the problem.
2. Repeatedly break down the problem into sub-models
3. Implement the sub-models (The Coding Part)
4. Review the code yourself as an end user
Let’s understand these steps.
- Interpret the problem:
Scrutinize and analyze the problem for which you want to create a program. Then draft the model of the problem which can be implemented as a program.
This is a very important step as it requires both the application (Programming Language) and the domain specific knowledge. We should gain the knowledge about how the end users will be interacting with the computer and our software.
It is this step which differentiates a good programmer from an unskilled programmer. This is because a better programmer is one who really understands the problem and can create an abstraction of the interpretation to solve the problem.
2. Repeatedly break down the problem into sub-models:
Continue this process until a level is reached where you can implement the smallest sub-model by writing the code. Determine which tools and frameworks shall be used for the implementation.
3. Implement the sub-models (The Coding Part):
The simplest part of the programming in reality. Generally, new or non-programmers gravitate to overestimate this step. But in reality, everyone can do this step with a little training of programming syntaxes. The selection of languages also matters the most because relevant languages can provide much better and faster ways to do the work.
4. Review the code yourself as an end user:
After the code is ready and the desired program is built, a programmer has a liberty to use and review how the program is working before advancing it for testing (in the case of large programs). This helps the programmer to validate the program by comparing with the actual requirements of the problem statement.
If the steps 1 and 2 are carefully followed, step 3 would not be that difficult task to implement.
In conclusion, programming is an engineering and artistry at the same time. Although it is possible to divide these steps among different people, but the quality of programming depends on those who are good at steps 1 and 2 to create better programs.