A year ago I wrote and article on why you should learn to code in that article I argued that programming is a tool much like hammers and screwdrivers which the average person may not need to use on a daily basis but a tool that comes in handy in certain situations. My arguments there still stand and recently I have thought of a few more benefits of having the mindset of a programmer, or really an engineer.
Recently I had an assignment to create an application that would allow two people to play a simple game of rock paper scissors over a TCP connection. When you fail to break this problem down it can seem quite complex and it can be hard to know where to start but when you do break the problem down it becomes quite simple. First you realize that you need to write two programs, one to act as a server and the other as a client. You then figure out how to connect the server and clients to each other and how to tell the client programs that two of them are connected and ready to play. Then you have to figure out the game logic which can be done on either clientside or serverside. When you break the problem down like that your large problem becomes a series of simple problems.
I'm sure programming is not the only thing where breaking down a problem like this is a key to success, I'm sure that this is a large part of most engineering fields, but programming is what I have experience with so that is what I will talk about.
In the realm of software engineering there are many concepts which help you break problems down functions, objects, loops, threading, and boolean logic are just a few of these. I could spend some time explaining some of these in more detail but I'm not in the mood to think of an engaging way to do that right now and I don't want to bore you.
Another thing essential to any sort of programming is the art of bugfixing. No matter how hard a software development team tries to escape them bugs and other undesirable features make their way into every project. Since no two bugs are alike the process of finding and fixing a bug is always unique, programmers are often forced to humble themselves as they spend time looking for their mistakes.
All of us, no matter our profession, will find ourselves having to troubleshoot all sorts of things in our lifetime. Computers, engines, TVs, and kitchen appliances are just a few examples of things that I've had to troubleshoot or had to help others troubleshoot. I often find myself confused when I come across people who seem to refuse to put any effort into solving a problem of course many companies are making their products hard to fix but that time has not come yet.
Bugfixing is an important skill for everyone to practice because we all need to know how to find and mitigate problems in our life. Multiple times in my life I've found myself trying to get an engine started by checking spark plugs and being sure to prime carburetors or even cylinders themselves when the real reason the engine wouldn't start was because it had an empty gas tank.
Too often we find ourselves trying to solve a problem without breaking it down, and too often we find ourselves trying to fix a problem by checking all the wrong places. Programming is something that helps us break these bad habits and lets us form new ones that can be applied to all aspects of life.