If you wonder whether to invest some time into learning programming, or you already code, but feel stuck or lack motivation - this article is for you. Why should you learn to code? I’ve come up with a lot of reasons! They are all backed by my experience as a software engineer as well as countless conversations with my peers. I hope this blog post will help you make a right decision.
Before you start reading, here’s a short list with all paragraphs in this article, each representing a reason to learn programming:
- Receive attractive salary
- Get a job in stable industry
- Experience different career opportunities
- Have valuable skill on your CV
- Choose from many job offers
- Work from anywhere
- Enjoy great work culture
- Boost your problem solving skills
- Improve collaboration skills
- Focus on practice
- See results of your work immediately
- Build something cool
- Understand how software around you works
- Express your creativity
- Have freedom
- Meet incredible community
- Learn it all online
This probably is the most obvious. Average salary of software engineer is considerably higher than for most other career choices. I want, however, to show you exactly how much higher. Under this link you’ll find compensation for developers in many of the top tech companies. For example at Google, as you gain experience and expertise, you get promoted through levels with symbols like L3 (Software Engineer II), L4 (Software Engineer III), L5 (Senior Software Engineer) etc. By clicking on the tiles on the website, you’ll see average yearly salaries (most of them are verified). If you wish to take a look at other parts of the world here is the link to great article backed by data with top paying countries. And if you would like to go even further and find your country, then I can highly recommend this report from Economic Research Institute.
The unemployment rate for software developers in the USA stays at remarkable 1.6% (as stated in this report from prestigious U.S. News & World Report) and is similarly low worldwide. The software industry is very stable, but don’t get me wrong - you probably won’t use the same skills you are learning today in 10 years, since technology evolves rapidly. You can be sure, though, that most companies will support you in acquiring new knowledge, because they know that their business success depends on using up-to-date tools. Companies and start ups will come and go, but if you keep you skills polished (and most organizations are happy to help you with that), you can be sure to find a new job opportunity in no time, even if your current workplace bankrupts.
When you acquire the ability to code, you’ll have unique opportunity to contribute to various industries, like: banking (see: Revolut, N26, Monzo), e-commerce (see: Wish, Etsy, Amazon), dating (see: Tinder, Badoo, OkCupid), construction (see: Archdesk, Procore, Buildertrend), social media (see: Facebook, Instagram, Snapchat), AI (see: OpenAI, Boston Dynamics), gaming (see: Call of Duty Mobile, Witcher, Candy Crush Saga) even sex life (see - but only if you’re over 18 ;) - Elvie Trainer, Lovense Remote). It’s all software, which helps millions of people! In addition, you’ll have multiple choices in how to do it. You can be freelancer, IT project manager, software engineer in big corporation working on many different projects, developer in small start up maintaining one product, team leader or just start your own company. This was probably the most important thing, that lured me in.
Steve Jobs once said “Everybody in this country should learn to program a computer, because it teaches you how to think.”. I couldn’t agree more, but I would also add “...and it looks great on your CV.”. No matter if you decide to pursue software engineering professionally or you land a job doing something a bit different - mentioning programming skills to any potential employer demonstrates your ability to comprehend advanced topics, understand abstract concepts and think in a structured and critical way.
Recent research from Microsoft (which you can find here) indicates, that as many as 149 million new technology-oriented jobs will be created worldwide in the coming 5 years. Software development accounts for vast majority of this forecast (98 million). See it for yourself! Try this small experiment at home: go to one of the top websites with job offers in your country and type “software developer” (preferably in your language). Scope the search to your location only. How many offers can you find? I live in a medium size city with population of about 800 000. What are my results? 300 job offers in the area (as of July 9, 2020)!
Remote work has been present in the software industry for many years now. This model, in theory, allows you to work from any place with stable internet and a desk for your laptop. It’s a dream for some people and a nightmare for others. If you belong to the latter, but you still want to profoundly experience a dive into other part of the world, then I have good news - there is probably a high demand for a programmer in your dream location. Let’s examine some of my top places using Indeed job listings search engine: Bari (Italy) - 45 jobs, London (UK) - 5000 jobs, San Francisco Bay Area (USA, California) - 3300 jobs, Honolulu (USA, Hawaii) - 35 jobs (as of July 9, 2020).
Like everywhere else, there is still a chance here for meeting shitty coworkers. Yes - if you’re unlucky, you can stumble upon mobbing or discrimination, but there is far smaller chance for this in the IT world and, thanks to plethora of available job offers and rumors spreading quickly among local software engineers, you can successfully dodge any bad workplace (in contrast to many other industries). Feedback meetings, 1-on-1s with managers and tech leaders, retrospectives - these are only some of the standard processes nurtured in modern software companies to help stay in constant contact with you, your productivity level and your general happiness during work.
Before I learned how to code, I had been solving multiple problems during high school and university related to math, physics, mechanics or chemistry. They were often complicated and challenging, but most of the time there was a pattern you could extract or exam answer key you should fit into. Also, they were so theoretical and detached from the real world, that they became boring very quickly. Recently I’ve come to a conclusion, that I owe most of my current ability to think outside the box, decompose the problem and reason in an abstract way to software projects I implemented during last few years. Sure, there are sites like Stack Overflow with ready-made answers for developers, but the pleasant angst you get when you start solving something in Java, Python or any other programming language and joyful smile, that appears on your face when you finally fix it (only with partial help from Google) is a feeling I hadn’t experienced previously at any stage of my education. You just feel your problem solving skills boosting! I can only compare it to sitting in the infinitely complicated Escape Room solving one puzzle at a time, but never wanting for them to finish.
Take a look at Facebook, Instagram, Amazon or any other piece of software you often use. It may look simple at first (most of the time, that’s the intent of creators to provide excellent user experience), but if you keep looking, you’ll notice the depth. These kinds of online platforms are so complicated under the hood, that it would take ages for a single programmer to craft, hence group effort plays a vital role here. Working with people to deliver a project teaches a lot about them, mostly because almost always there are problems to address. Software industry won’t leave you without any help, though! There are clever methodologies (like Scrum or Kanban) used in many modern companies, which facilitate such cooperation and has been working well for years. If you want to learn how to work with people, I believe the IT world is the coolest place to do so.
You won’t find many theoretical programmers. Our actions are focused on delivering something someone else can use or something, that will help us be more productive. Having this in mind, can you guess what’s the number one thing you can do to stand out from the crowd when applying for the first job? Show real software projects you implemented! If you’re looking for a course to learn how to code always prefer the one, which offers help with implementing one or more practice projects.
I graduated from the Faculty of Mechanical Engineering, where I was learning about pumps, gears, millers, pistons...I’m boring myself just writing about that. But unexciting classes weren't my biggest problem. I was consuming a lot of theory about all these big machines only to have around few hours every month to see them in action (even less time to try them myself). My friends at the Faculty of Civil Engineering had similar issues. They wanted to finally see real results of their careful calculations and planning, but due to the nature of this industry they weren’t able to. Software is not like that: learn theory, practice, apply it in code, compile and BOOM - you see the output on your screen almost immediately. Experiencing results of work in such quick manner helps to stay motivated and even amazed at things you can build with your own hands.
I’ve seen many fun (and weird) software side projects in my career. Conway’s Game of Life, Rick and Morty API and 8values quiz are some of my favorites. I even implemented one for my engineering thesis: beer label classifier based on convolutional neural network (after taking a picture of beer label, machine learning algorithm was successfully recognizing it). What would you build? Sky is the limit!
Not so long ago I had an interesting conversation with my friend, who works as a designer. He told me, that the way he experiences the world, as he passes by the street, is in colors, fonts, shapes, designs, logos, icons and images. A similar thing happens to most software engineers I know (including me). They can’t look at the website or mobile app the same way as other people. They usually know how most features work, or if they don’t they try to figure it out. Have you ever had the feeling, that some piece of technology worked so good and smooth that it looked like a magic trick? When you learn to code, you’ll know how this magic trick is done.
Many don’t consider programming a creative activity, but I tend to disagree. It’s obvious, that thanks to widely available resources, you can create something, that few moments ago was only a part of you imagination and put it online, but what about everyday work for your employer? Can it be creative? It’s true, that some of the tasks you’re going to receive will be repetitive (like setting up tools or fixing bugs). But I believe, that creativity of a software engineer is essential to write beautifully crafted code, that works well and at the same time is easy to understand and maintain for both junior and senior developers. In order to achieve this, you will address problems directly related to proper software design and there are no ready-made answers online in this area for your specific cases - just suggestions and inspirations. This is where your creativity and thinking outside the box will be most valuable!
Most of the software companies allow you to have up to 3 days of remote work per week. In healthy organizations, taking vacations is never something managers look at with contempt. Additionally, working hours are always flexible and the focus is not put on being mindlessly chained to your computer 8 hours a day, but rather on delivering real results.
The IT community is active and helpful both online and offline. Stack Overflow is incredible website, where developers help to solve common problems, that others stumble upon. Medium is a platform, where many talented engineers blog about their software solutions or create tutorials for state-of-the-art tools. Not to mention a huge variety of subreddits, YouTube videos, courses, forums or Facebook groups. To meet people, who are fond of the same programming language or technology in real life, I recommend searching for an event on Meetup. Remember that networking (meeting new people from the industry) is immensely important as it can lead to new job opportunities now or in the future.
I’ve seen many lines of code produced by:
- people, who never attended university,
- college dropouts,
- Computer Science graduates,
- non-technical graduates,
- graduates of top universities,
- graduates of universities I didn’t even know existed,
- students with bad grades,
- students with top grades.
I also talked with many representatives of these groups. Some of them were my coworkers. And you know what? Based on my experience, I can confidently say, that college degree is NOT a good predictor of employee success in the IT industry. No matter if you choose to go to university or not, I have good news. There are so many programming courses online, that you will surely find something for yourself! Recently, I have even created one! If you would like to go from absolute beginner to having a complex programming project, which you’ll be able to code by yourself, then read more about my course here.
If this blog post convinced you to start learning programming or kept you motivated when you felt stuck, then maybe it can also help someone else, who’s in similar situation? If you know somebody, who can benefit from reading it, please share it!