It is as interesting as it is deceptive, how certain professions are hard-termed “technical”; as if they are purely mechanical/manual, with no requisite to use one’s brain & creativity; almost equaling it to “breaking stones”.
But think of his breaking stones scenario for a moment. Do you think one can break stones efficiently for a long time without using brain...or for that matter, being creative? In fact you will quickly realize; once you imagine yourself given a task to break 100 stones into smaller pieces over a day (manually or mechanically); that it is not enough to have just adequate energy and good tools to do the job most efficiently.
You will see that it will take substantial engagement, understanding the problem at hand, considering several approaches, implementing an approach, testing the result & continued iteration, until the problem is solved most proficiently, consistently. In this case, breaking all 100 stones in into required size pieces, most efficiently with a sense of system that can be repeated endlessly.
You may find this interesting to see how the above “thinking pattern”; which is typically earmarked for the elite “design thinking & creative” tasks; applies to even the most mundane (not so of course) of the jobs.
Coding is one of these tasks; where we typically visualize a coder typing vehemently on a computer; reducing coding to a skill of the hands…with hardly or no engagement of the mind!! Whereas it can’t be any further from the truth as we can see with the example above.
Coding starts exactly where every small & big inventions of the world come from…the human mind. It is a mental skill that is manifested with manual & digital tools. In fact a major part of coding is mental that requires “adequate engagement, understanding the problem at hand, considering several approaches, implementing an approach, testing the result; & continued iteration until the problem is solved most efficiently & consistently.”
The coder doesn’t sit down to code “without a problem at hand”, a good understanding of the constraints & requirements of the solution, & a tentative plan; making it a problem solving activity. This concept is very important to understand to fully appreciate & correctly approach the process of “coding”; a skill that is again commonly considered technical/manual & not creative.
Imagination is not confined to creativity & design. The process of coding takes hours & hours of imagination where one tries to visualize & comprehend several options/approaches to a problem. Most of the work here is mental; where several solutions are tried & tested (which actually takes loads of passion & perseverance) with help from one’s hands & IDEs; until you find that 1 solution that solves the problem most accurately & efficiently…for the time being!!
Appreciating & understanding that indeed coding is mostly a creative, design thinking & problem solving process; that really pushes one’s mind to its limits; can drastically improve the way one approaches to learn to code & practice.
Iftikhar A Khan | Program Leader, Creative Computing