“Everybody in this country should learn how to program a computer, because it teaches you how to think.”
This famous quote by Steve Jobs has a lot of truth to it. Coding certainly improves your ability to think logically and make more rational decisions. But nowadays you could also say:
“Everybody in this
country world should learn how to program a computer, because computers are taking over every aspect of our life.”
With the explosive growth of technology over the last couple of decades, the need for people who know how to write software for all the different devices dramatically increased. Of course not everyone has to become a fully fledged programmer and not everyone would be happy with that profession, but a certain level of coding skills becomes more and more important in a lot of other jobs too, and it can be hard to keep up with the newest technology if you don’t understand how any of this works under the hood, at least at a basic level. Besides that, coding can also be a very enjoyable hobby.
The wonderful thing about programming is, that you can completely teach it yourself and you can start right now. You can download a free IDE (integrated software environment, the program where your write code in) like Android Studio, start without any formal education and learn in the process. In a matter of days you will be able to write your first little programs. Sure, it can make sense to pay a few bucks for a good course or book here and there, but besides that you don’t need anything other than a computer, internet connection and the willingness to learn. Will it be overwhelming in the beginning? Hell yea! But this is absolutely normal and the same for everyone. Just give yourself time and enjoy the learning process as much as possible.
If you are still unsure if you should start learning to code, let’s take a look at some specific benefits that programming can bring into your life, either as a hobby or as a full time job.
Programmers are in high demand
Technology is taking over the world and you just have to look around you to see proof of it. Currently I am living in a tiny village in Austria and even here almost everyone has a smartphone that can do things that a few years ago only desktop PCs could do, from surfing the web over playing multimedia files like movies, music and games, to shooting high quality photos and editing them with high end software.
But not only are our phones now little super computers that get more powerful every year, we now even have watches and books with computers in them. Complicated software in cars is long established but instead of assisting humans while driving, it will soon just completely drive by itself (and much better and safer than any human could). Virtual assistants like Alexa and Google Home are coming into our living rooms, understand what we say and do tasks for us. We have smart frigdes, smart houses, smart bracelets and of course apps that control all of these things from our finger tips. We don’t have to stand on the side walk and wait for a taxi, we request rides on the Uber app and pay electronically. While on the ride, we can talk face to face with friends and family through our phones, because internet is available almost everywhere. Or maybe we watch a movie on Netflix or play a game. Almost anything can be improved with computer technology and eventually will, step by step. Is that scary? A bit. But that doesn’t matter, because it’s inevitable. A better approach than worrying is to accept this development and make sure that you don’t get left behind.
Computers are an increasingly important part of our every day life and subsequently we need people who can write the software for them. According to the Bureau of Labor Statistics “Employment of software developers is projected to grow 24 percent from 2016 to 2026, much faster than the average for all occupations.” That’s for the US, but I don’t think it is much different in the rest of the world. According to the same source, the median salary was around 103k per year in 2017. So in a nutshell: The chances of getting a well paid programming job are pretty high if you bring the necessary abilities.
But coding skills are also getting more and more important in careers other than programmer, like scientist, marketer, designer and even journalist. Either to build websites and software solutions yourself or simply to have a better idea about what you need to have built by someone else. In a world full of software it’s hard to work and communicate with your team effectively if you don’t know how any of this works under the hood, at least partially. According to studies, nearly half of all jobs in the US that pay $57,000 or more per year require at least some coding skills and this amount will most likely grow in the years to come, not shrink. Again, this doesn’t mean you have to become a fully fledged programmer if you don’t want to work as one, but you should at least learn the basics.
However, if you want to make it your profession and code for a living, check out my blog post on how to get a job as a programmer.
You can create something from nothing
For me one of the most fascinating things about programming is that you can create useful products just by writing text. Ok, you might need to add some digital resources like images, videos or sound files, but all of them are just bits and bytes. You don’t need wood or stone or metal to create an app, you don’t need heavy machinery and you don’t have to care about storage and delivery. You can turn your ideas into reality just with keyboard and mouse and easily distribute them to millions of people without ever having to go outside (You should still go outside from time to time).
You can do this as an employee in a company, but also at home with your very own side project. You don’t need a team to create an app and you don’t have to create something very complicated to earn a side-income. You just have to create something that a certain group of people wants to use. If you don’t have any coding skills, but an app idea, the hurdle is much bigger, because then you have to invest a lot of money and make sure to communicate your idea properly. But if you can build it yourself, you just need time.
Now, I am not saying that learning to code is enough to become a successful app entrepreneur and get rich. But it is very manageable (and a lot of fun) to build your own program as a hobby project. If you create something that helps people solve a problem, you can make money from it. And if it helps a lot of people, you can make a lot of money. Notice that I didn’t say “if you’re lucky”. It’s not about luck, it’s about how much value you can provide.
But even if your project doesn’t make you rich, you still acquire more skill and build your portfolio, which makes you more valuable to employers. I can’t think of many other jobs where building a side hustle wouldn’t go to the cost of your main work, rather than benefiting it.
There is always something to learn
Technology is evolving fast and programmers have to readapt if they want to stay ahead of the curve. Frameworks change quickly, whole new programming languages show up and stuff you learn gets outdated pretty quickly. This may sound very stressful, but there is a “general programming skill” that you develop independently from languages and frameworks. The more code you write, the more you adopt a certain way of thinking and approaching problems. You get used to reading unfamiliar code, and concepts that you learned earlier show up in a similar form in other places. And once you make typical mistakes, you also start to understand good practices and how to keep your code clean and maintainable.
But besides that, learning new stuff regularly is actually a good thing, because it keeps your brain sharp and also brings fun and variation. Having a job where you do the same boring routine every day might sound like an easy life, but the lack of challenge will just turn it into a boring rut that can eventually turn into depression. A sense of growth and accomplishment by overcoming new obstacles is what gives life meaning and you a feeling of competence and self-confidence.
Of course you could – theoretically – also get all of this from a hobby and just see your job as a means to an end. But in reality most people spend their free time either in front of the TV, at parties or on vacation, because the stress from work leaves them no energy. All of these activities can be beneficial in small doses, but don’t provide any challenge whatsoever. I can’t stress it enough: Happiness doesn’t come from ease and comfort. If this was the case, we wouldn’t have so many depressed and suicidal people in a time where most of us live like kings a few hundred years ago. Constant learning, a sense of progress and the feeling of accomplishment from overcoming hurdles is what makes people happy.
The frequent changes in the programming world also mean that you can influence to a big extend how valuable your skills are to a company. This gives you control and empowerment, because what you achieve is very much related to how much effort you put in. There are a lot of people that can code a little bit. But there are very few very good programmers in relation to the high demand.
The skills you train with programming can also spill over into your everyday life and help you solve problems and make logical and rational decisions that are not directly related to programming. If you want to know what I am talking about, take a look at the book “Algorithms to Live By” by Brian Christian and Tom Griffiths.
You peak early
Besides variation, the constantly changing programming environment brings another benefit: You can catch up with the most recent technology faster and become a very valuable employee without having to acquire decades of experience. This is very different from jobs like medical doctor, where the circumstances change more slowly and experience and formal education are more important than anything else. The diseases a doctor has seen and diagnosed in his years of experience are essential to building his skill and getting him into a high paying position. And most of these diseases have been around for hundreds, thousands or even millions of years. Whereas for a programmer it is more important that he can adapt fast enough to the most recent changes.
When you are in your twenties, you tend to learn more quickly and bring the physical capabilities and willingness to spend a lot of time in front of the PC. Younger people usually handle overtime better and can code and study until late into the night if necessary, without being a total wreck the next day. And their brains tend to process and store new information better. Of course you can still be sharp and fit when you are older, but the majority of people declines pretty drastically with age, because they don’t take care of themselves enough. If you live healthy, you can keep your physical and mental fitness while building on the experience you acquire over the years and this way become even more valuable. If you want to stay fit for years to come, check out my blog post on how to stay healthy as a programmer.
Since programming is such a “self-teachable” skill and pretty much everything you need to know is freely available, how quickly you catch up is only limited by your willingness to learn.
You can work from home
Since you only need a computer to write code, you don’t necessarily have to be in an office to do that. With a proper internet connection and a messenger software, you can even talk to colleagues face to face without being in the same room as them. This is why remote programming jobs are becoming more and more common. You could also decide to work as a freelancer, without being employed at a particular company. If you manage your time, energy and finances properly, you can even travel and work as a programmer from around the world.
Not being bound to an office has a lot of benefits. You don’t have to commute to your workplace and back, you are not forced to live in a city that you don’t like and you don’t have coworkers that interrupt you while you’re trying to focus. Working remotely also means more flexibility, because you can decide when you want to work, schedule your week according to your needs and even get something done when you’re sick.
Of course working from home brings it’s very own challenges. You can still get interrupted by family members or roommates or maybe you feel lonely without the social interaction from coworkers. The flexibility in your schedule can lead to procrastination and a bad work ethic. But you can develop strategies for these kind of problems. I don’t think you should constrain yourself on purpose only to avoid bad habits and instead approach these problems directly. You could for example read my 3 Tips to Stay Focused While Coding to learn how to stay more concentrated.
Working locally in a company, remotely as an employee or completely independent as a freelancer is mostly about your personal preference. They all have benefits and downsides. But it’s good to have options, right? And as I mentioned earlier, with the right idea you could even go the route of a software entrepreneur with relatively low entry barriers.
Coding in flow
No, I am not talking about my Youtube channel and website here. When I say “coding in flow”, I am talking about the “flow state” (also called “the zone”), which originally gave me the idea for my channel name.
The flow state is this deep and fulfilling state of mind, when you focus on something so intensively, that the world around you and any worries seem to disappear, while hours fly by in what feels like minutes.
This might sound like magic woo-woo, but it’s just physics. Your brain can only process a certain number of bits of information per second. For example you can’t listen to 5 people talking at the same time and still understand what all of them are saying. And for the same reason you can focus on a task so intensively, that other input and even your own thoughts, including worries about the past and future or even appetite and exhaustion, temporarily disappear from your consciousness. The flow state basically brings you into the present moment and keeps your there, which is linked to increased happiness. At the same time you are highly productive, because you are not distracted by anything. The whole task just becomes one intrinsically rewarding experience, even if it didn’t look enjoyable at first.
But not every activity can get you into the flow state. First of all, the task at hand has to be cognitively demanding, otherwise it will not occupy enough brain processing power, leaving you some capacity to worry about other stuff and get distracted. However, it must not be too difficult, because then you get frustrated and the whole activity feels pointless, which also breaks your focus. You need a challenge that is hard, but you know you can get done. Programming (not always, but often) offers this kind of challenge, because even though it can be difficult to figure out how to fix a bug or how to implement a certain feature, you usually have the tools and ability to solve the problem eventually.
Secondly, in order to get into flow, you need clear goals about what you want to accomplish and some form of immediate feedback about your progress towards these goals. When you write code, you usually have a pretty clear picture in mind about what you want to achieve. For example fixing a bug so a certain type of misbehavior or error doesn’t occur anymore or you want to display a specific piece of information on the screen. That often means you have to focus, tinker with different lines of code, run it, get quick feedback about the success of your approach and then repeat this cycle until it works. Of course this depends on your particular task and project and you can land in a job position where you get into the flow state very rarely. But in general, programming can offer more of these experiences than most other jobs, especially the ones that only consist of repetitive grunt work.
If you want to know more about the flow state and how to get into it more frequently, read “Flow” by Mihaly Csikszentmihalyi. This author is basically the father of the flow concept and has studied it his whole life.
Well, did I convince you to start learning to code? If not, that’s totally fine. Not everyone’s gonna like it. But if you got interested, you can begin immediately. If you want to start learning Android development, do the following 2 things:
- Read my How I Started to Learn Android Programming (And How I Would Do It Again) blog post
- Subscribe to the Coding in Flow Youtube channel
If you would rather start with iOS, web or any other kind of software development, I can currently not recommend a source, because I have no experience in it. But again, you don’t need the perfect source or course, you just need Google and the willingness to learn. So what are you waiting for? Just start! Good luck on your journey!