May 18, 2024

Programming as Structured Thinking

Generative AI as implemented in popular products like ChatGPT has significantly reduced the need for computer programming, unless of course one works with extremely new and complex problems. This means that most entry and middle level programming jobs will get eliminated. Those who are not programmers by profession but only write programs to facilitate their day to day work – like data collection, analysis and visualisation – will find that most of their tasks can be automated. Then why should business management students learn Python programming? Because programming is not just about making a computer work but about thinking of any problem in the abstract, decomposing a complex issue into a number of simple ones whose solutions are known and then integrating these partial solutions to address the goal.

Young Bengali woman writing computer program under the close supervision
of a generative AI system. pop art style

The ability to write an effective program – in any modern language like Java, JavaScript, C++ or Python – implies that the programmer has the ability to think through a problem and come up with a feasible solution. Irrespective of whether one needs to write a program or not, this ability to think in a structured manner is a key skill that is acquired as a by-product when students learn computer programming. Unfortunately this by-product is often overlooked and with the decline of computer programming, this ability to think in a structured manner may eventually be lost from the repertoire of skills that students carry out with them when they pass out from management schools. This will be unfortunate and needs to be addressed.

While there can be many ways to define structured thinking, there are two obvious characteristics that are very important. The first is abstraction, or the ability to focus on the main idea or the most important parts of something, say a product or a process, ignoring the smaller details. This allows us to transfer expertise from one area, say selling soap, to another area like selling any other FMCG product. We understand that the two processes are essentially similar even though the product details are different. The second characteristic is decomposition where we break up a complex task into smaller pieces, solve each individual part and then assemble the smaller pieces of the solution into one integrated solution to the initial problem.

Abstraction and decomposition are fundamental to the process of writing computer programs and any honest programmer will automatically, even if unconsciously, be thinking in a structured manner as they write a program. In the process they would imbibe the principles of structured thinking and would learn to apply them in any other domains of managerial activity.

Young Bengali boy seeing the world or cars, buildings, factories around him as an abstraction of numbers, letters and geometric shapes. Pop art

Finally, each computer program, unless plagiarised from somewhere else, is a unique product – not a concept, not an idea, but an actual product – that delivers value in some context. Hence writing a program is an activity that is as creative as painting a picture or composing a poem, if not writing a novel! Good programmers are intensively creative and this creativity is as important a byproduct of writing programs as structured thinking is. Creativity is difficult to teach and can only be encouraged and nurtured in those who have it. In this context, learning how to write programs that perform interesting and useful tasks opens up a whole new channel through which students can easily exercise, demonstrate and nurture their latent creativity.

With the advent of AI, writing programs as a means to solve business problems may become  optional, but programming is and will continue to be a mechanism to engage in structured thinking and a medium to cultivate originality and creativity. That is why students must learn computer programming.

No comments: