The Art of Computational Thinking
As a beginner software developer, one of the concepts that made tackling programming problems easier for me was understanding Computational Thinking. It reduced how much my palms sweated and my brain shut down once I finished a tutorial and I was given a challenge or problem to solve.
A Google search will tell you that CT “is a problem-solving technique that imitates the process computer programmers go through when writing computer programmes and algorithms.” All this is trying to say is, Computational Thinking is the process of thinking like computers think, to arrive at solutions.
P.S. I love writing, and I love stories too. When I’m stuck not understanding a concept, sometimes I try to use writing and storytelling analogies to see if they get through better. I use them here too and I hope they help you as they often do for me.
In The Beginning, There Was Computational Thinking
To become a software developer, you have to create programs that tell the computer what to do and how. The challenge is, computers are stupid so without precise instructions, they can’t give you what you want. For newbie developers, this is especially difficult because knowing how to tell a computer what you need done is the koko. You need to first understand how a computer thinks before you can then speak to it in its language. That process is Computational Thinking. CT is the process involved before the actual code/program. CT provides developers with a structured approach to solving complex problems. This approach involves;
Problem Analysis: You can’t explain what you don’t understand, even to humans. When it comes to solving a problem, you have to first understand what the problem is about before you can go about solving it. This is like the plot of a story, without understanding the nuances and intricacies, you can’t write the story well. Watch Nigerian movies and you’ll understand what I’m talking about.
Problem Decomposition: Once you understand a problem, the next thing is decomposition. This involves breaking down a complex problem into smaller ones. As a beginner, approaching problems this way reduces how much it overwhelms you because you’re taking apart a large problem and organising them into smaller chunks to be tackled one after the other. In story writing, this is breaking a story into chapters, paragraphs, and characters and working on each part individually.
Abstraction to Manage Complexity: Once a problem has been broken into numerous parts, you sometimes realise that there are parts that are unnecessary. Abstraction is an important principle of CT. It helps you focus on the most important details from which your solution will emerge.
Algorithmic Design: Algorithms are the step-by-step directions used to solve a specific problem. Learning how to develop these step-by-step procedures to solve problems is important for a software developer. In writing, it’s like choosing the right words to convey your exact meaning or intentions. Algorithms define the logic and flow of your solution. You need to practice developing efficient algorithms to enhance your problem-solving skills.
Iterative Problem-Solving and Debugging: As a software developer, you’ll often face unexpected challenges and bugs and as a newbie, it’s easy to feel frustrated. Being able to constantly break down problems to their most basic form, test hypotheses and ensures they function as intended, identify errors and refine your solutions over and over again is extremely important. This is the iterative mindset and it builds resilience, adaptability, and the will to continually improve in your development process. It’s the same thing in writing too, you have to continuously review and edit your work and find ways to improve clarity. This is what helps you become a better writer who tells great stories.
Conclusion
The day I realised software development was not just a rigid, boring process that only involved logic and analytical processes was the day I truly found my love for it. There’s a lot of creativity that goes into making anything that’s worth making. Software development is no different from any artistry endeavour; be it writing, drawing, etc. A software developer is an artist who uses technology to manifest their dreams. The hard part is learning the proper way to be that artist; understanding what art you want to make, following the right process that makes it easy and manageable, finding the right tools, and repeating the process as many times as it’ll take you to become as good as you desire. Like in everything else, curiosity is needed so you push yourself from where you are to where you want to be. It’s also important to find a like-minded community to immerse yourself in, and a mentor to guide your steps. As you move deeper into your software development journey, always try to remember the concept of computational thinking, it’ll make problem-solving so much easier. Good luck!