For many people programming seems like something "nerds" might do, or something really advanced, and probably something they don't have time for. But programming isn't as difficult as one might think, and also has some unexpected beneficial consequences. Today I want to talk about the 10 reasons people should learn to code.
As a novice programmer, one of the biggest misconceptions I had was that programming was coding. At first glance this seems obvious, after all a programmer does enter code into a computer. Where this falls short, is it doesn't touch the surface of everything a programmer is responsible for. Things like requirements gathering, being able to interview a client (and ask the right questions), being able to identify a problem and also if a software solution can solve it,or if one already exists. They need to be able to manage time, create flowcharts, and explain them to a client, and troubleshoot logic errors and bug; Senior programmers also need to be able to manage their teams.
It's through these extra tasks and duties that I came to appreciate the unexpected skills that come from programming.
1. Learning to program can help you understand a problem
Programmers not only need to be able to understand source code, but also how to use source code to solve a problem. Often this means having an interview with a client, taking a list of sparse and loose requirements, and nailing them down into concrete requirements which then need to be incorporated into the software.
More than just getting requirements from a client, a good programmer needs to be able to take a high level problem and see it's solution. In order to do this a programmer needs to be able to do the right research to have a proper understanding of the problem and how their expertise might best be applied to solve it.
Programming languages also operate on very simple structures such as conditions and loops, this means that the requirements that programmers gather also need to be broken down into small enough steps that these structures can achieve them.
2. You'll be able to solve problems you otherwise didn't have a tool for
Programmers are business men who seek out problems and provide solutions in code.
Everyone has at least one time in their life run into a situation where they don't have the right tool for the job. The greatest benefit to being a programmer is being able to create such a tool. Need a tool that can rename a directory of files based on a time stamp? You can write a tool for that! Need a quick program to email you reminders, or one that lets you know when someone has logged into your system? You can do that too!
Many popular applications are the result of someone realizing they didn't have a good tool for that job. Google for example cashed in on the fact that the search engines available in it's time weren't very good at producing relevant results. Microsoft capitalized on the need for PC maker IBM to have a usable OS for their computers. Programmers are business men who seek out problems and provide solutions in code.
3. You'll learn how to break things down into smaller bits, and be able to use this in other places
As i mentioned above, programmers often need to break down complex problems into really small manageable pieces. This same logic can be adapted and applied to real world problems as well meaning a knowledge of coding can boost your performance in any field of work.
4. You'll have a better appreciation for how the underlying software works on your computer and it's limitations
Most people have no idea how their computers work, or appreciate exactly what goes into making something like a video work. XKCD shows a great example of the abstraction that computers provide
Understanding these abstractions gives you a whole new appreciation for exactly what happens when you want to "see a cat jump into a cardboard box."
5. You'll be able to troubleshoot way better
As any programmer will tell you, you will run into a bug, error, or logic error. being able to troubleshoot these types of problems separates the "Boys from the Men" most programming languages don't provide very friendly error messages when they don't work, and some such as PHP don't provide any error output on a production server.
But how does this apply to real life? Well, being able to identify what could be causing a problem in a program especially logic bugs can prove useful when trying to figure out why some math you are doing isn't adding up, help you discover that you missed a board when assembling that new Ikea desk you just bought, and even where an argument escalated from.
6. you'll improve your people (communication) skills (interviewing a client)
Programmers deal with people on an everyday basis who have no idea what they [programmers] do. As a programmer you need to be able to clearly articulate what you can provide as a solution, and the limitations you have in terms that are simple enough for non-technical people.
You also need to be able to parse the requirements out of such things as "I need an app that lets me quote stuff" through carefully structured questions. Often these requirements will be a moving target as the client thinks up new ideas, and you need to be able to satisfy these as well as politely keep them inside the scope of the project.
Programmers often need to consider questions such as "How do I politely tell the client, their idea sucks?" or "How do I explain to the client that I can add that functionality, but that's new and will be billed"
People skills are universally required in nearly any field of work, and tend to take on the same characteristics. As a professional in any industry, the people you are providing service to are coming to you because they don't possess that skill set, meaning you need to be able to talk client.
7. You'll become an expert at taking shortcuts while retaining quality.
Programmers are notoriously lazy, is it then any surprise that programmers came up with the concept of Cut, Copy, and Paste? As a programmer you are constantly required to look for the simplest solution to solve a problem, both to save time and money as well as make your programs lean and mean.
This game of function and minimization is something practical in nearly every facet of life, besides, who wouldn't mind a shortcut while doing their chores?
8. You'll learn amazing multitasking
Programmers nearly always have several projects or ideas on the go. Being able to manage all these different projects is a must when it comes to the industry, and while you may have a project manager who oversees the progress of each client and project, your time and tasks are often left up to you to divide and conquer.
9. Programming forces you to become knowledgeable in everything
Anytime you code an app or program for a client in a field, you need to know a little bit about that industry. For example if you are making a quoting app for a furnace, you need to understand how the parts are priced and used. If you are making an accounting app, you need to know what fields, forms, reports, and calculations an accountant would need.
10. you'll never do the same thing twice.
Just by the very nature of the field, you'll need to learn new advances, and new ways to do things. You'll meet new clients with new requirements. You'll even discover new and better ways to do things.
This is what makes programming so exciting, you don't get up and go to your same boring job every day infact you don't often get up and be a programmer every day. Some days you are a project manager, some days you are the accountant, still others a graphic designer. Wearing new and different hats is part of the job.