Steve Jobs once said that learning to code 'teaches you how to think'.
A certain Barrack Obama said that it, ‘that will change the way we do just about everything’.
If you've read enough of my content, you'll know that at its core, coding is fundamentally about problem solving.
Now, I also believe that real-life is a lot about problem solving too, from whether it's locating your missing sock to organizing your diary for the week. Like when we code, our thought process needs to break down a task into a series of simpler steps in order to find a resolution.
This article explores how coding effects the coder beyond the code itself and whether the problem solving we do on-screen has an impact on our ability to problem-solve off-screen.
Let's crack on.
1. You'll Start to Question More
You are the developer and it's a new day, you're at your desk when that ever welcomed client requirement comes in hand.
It's then up to you to see what needs to doing, break it down, visualize the solution and provide the corresponding implementation plan.
At the same time, you also need to carefully consider how it will fit into the existing architecture and its impact of the application overall.
And before all that, they need to consider the feasibility of the request and provide feedback. You'll be surprised how much of the job is explaining the technical impracticality of a task to a client or stakeholder who isn't technically minded.
You need to constantly step back and think twice before you start anything in coding. Rushing into a development task is a recipe for disaster.
You'll find yourself reading in-between the lines and questioning a lot more in day-to-day life.
2. Improve Your Problem-Solving
Coding forces you take logically driven approach, you will find yourself writing out algorithms on paper in order to break a problem down and write the most efficient code.
You also need to troubleshoot defects and fix vulnerabilities in large systems containing hundreds of thousands of lines of code.
Logical thinking, problem-solving, coordination and organizational skills are the three cornerstones of programming.
The more you code, the more you exercise and strengthen these abilities.
Learning to program not only helps you to better understand your own way of thinking, but by organizing ideas and intentions, it will lead you to take better, thought-out and rationally driven approaches to other aspects of life.
3. Helps You Save Time
The modern world has given us the luxury of a number of time-saving inventions, from the washing machine to the modern computer. These have replaced the tedious, manual tasks employed by our ancestors.
Much of what drives software innovation consists of finding ways to automate and save time in our everyday activities. At the the macro-level, coders are at the heart of this technological advancement.
On the micro-level, coders are constantly finding ways to automate tasks within an application.
Since learning to code, I've found myself pondering how I can automate or finding quick ways of doing things in the non-coding aspects of my life.
4. Unlimit Yourself
Coding has made me realize how easy it is to conceive my ideas and develop useful, working applications.
Once you grasp how much is possible through code, you'll start testing ideas you never thought possible. How about automating some household appliances? Or coding and release a game idea you've always had.
Coding and imagination go hand in hand and you'll certainly feel less restricted, when you see the opportunity that lies in an increasingly interconnected world.
5. Increases Your Spatial Awareness
Spatial awareness refers to our conscious awareness of the objects in our environment and our physical position in relation to them.
It's how we confidently navigate the world around us and avoid knocking into things. For example, it's the internal mechanism that helps us to judge the placement, direction and speed of cars when crossing the word.
Modern coding is very compartmentalized. That means that complex applications are stitched together with reusable components a bit like Lego blocks that can interlink in hundreds of different ways.
A developer must be conscious of where these components fit in a sort of 3-dimensional space. An advanced coder is able to visualize this interlinking in an complex program to navigate the code.
This has actually been evidenced to increase our spatial awareness overall and better perceive the world around us.
 Messer, D., Thomas, L., Holliman, A. et al. Evaluating the effectiveness of an educational programming intervention on children’s mathematics skills, spatial awareness and working memory. Educ Inf Technol 23, 2879–2888 (2018).