How to become a self-taught programmer

author avatar

Đorđe Stanišić

July 4, 2022

7 min read

A lot of people these days consider a career in tech. A good salary, substantial job opportunities, a relatively low barrier to entry, and the possibility of remote work attract many people.

I know it looks scary to get into coding if you don’t have any knowledge and experience, but in reality, you need 3 to 6 months to become a “job-ready” programmer. You need almost no investment, except for your time and a few tools – a computer and a smartphone.

The first problem is deciding what career path to take. Should you get into web, mobile, frontend, backend, game development, machine learning, or blockchain? It’s hard to choose when you don’t have any knowledge. It is precisely for this reason that I wrote this article, to help you find your way and facilitate your path to success.

Where to start?

First, you should decide what technology interests you the most. It can be a couple of different technologies, and in the end, you can choose only one. If you don’t know what technology interests you, you can experiment. For example, you can try something out for a week or two and see if it looks interesting to you.

When I wanted to get into coding my interests were around the web and mobile development because I had ideas for websites and mobile apps. These ideas are going to keep you learning, they are going to give you motivation and purpose, and they are going to be the “finish line” (of your first race). Without this, you may find yourself wandering without a goal, and you can lose motivation quickly.

The second most important thing is to check for the market. You need to check if there are open job positions for the technology you want to learn. If you want to learn web or mobile development, you won’t have this problem, but if you are interested in some other technologies situation may be different.

The third thing is the size of the salary. Programmer salaries are above average, but some technologies are better paid than others.

In my situation, I have chosen mobile development (android) over web development because of three reasons:

  1. More jobs

    There are more jobs for android developers since the market is less saturated with mobile developers than web developers. You can still get a job as a web developer without a problem, but mobile developers are more in demand.

  2. More money

    Because of this scarcity of mobile developers, the salary size is much larger. Mobile developer salary is one of the bigger ones on the market, with around 50%-60% higher on average compared to web developer salary in the US.

  3. You can make a finished product

    As a mobile developer, you can make a fully functional app by yourself, front and backend, meaning that you can make a fully finished product and sell it on the market. With frontend web development you don’t have a finished product. You will either need to learn the backend and become a full stack developer, which can take a lot of time, or find someone to do the backend.


Using similar logic, you can find what suits you best.

The learning process

When you have found your desired technology, it is time to start with the learning process, which is the hardest part, because you will need around six months of learning to become a job-ready developer, and while learning, you will get no reward (pay). That‘s why many people are struggling with the motivation to learn.

Remember this: “Learning is not attained by chance, it must be sought for with ardor and attended to with diligence.”

You can only become a good developer if you learn consistently for 2-4 hours daily. It is ok to take a day or two of rest sometimes, but try to code every day if you want to get a job ASAP.

I made these four steps to follow in the learning phase that will help you become a better self-taught programmer:

  1. Start with the basics

    Learn the basics of chosen programming language, the programming paradigm used for your desired technology, design patterns, and good programming practices.

    The worst thing you can do is start working on projects without understanding these rules and principles by following a tutorial on the internet. In this case, you will end up with spaghetti code, unable to understand your code.

    In my case, for android development, I started with Java and OOP (Object Oriented Programming). I didn’t begin with android development right away. Instead, I focused on the basics of programming for the first two months.

  2. Acquire tech-specific knowledge

    When you understand the basics of a programming language and a programming paradigm, you can start learning more about the technology/niche in which you are interested.

    In this phase, I started with the basics of android development.

  3. Don’t overdo it.

    Don’t start learning for eight hours every day because you will experience burnout. Programmer burnout is emotional and mental tiredness in doing computer programming caused due to excess programming/learning.

    Do not study for more than a maximum of 4 hours a day. Even that is a lot for some people. Consistency is the key. Learn as much as you can and stay healthy, psychologically and physically.

  4. Find a mentor.

    Finding a good mentor can make learning much easier and more enjoyable. A good mentor will give you study guidelines so you don’t wander off while learning, allowing you to focus on the crucial things.

Preparing for job application

Before applying for a job you will need to be well prepared. You need to be different and noticeable to have the best chances of getting hired. These four things will be crucial:

  1. Build real-world projects that people can use.

    Many tutorials teach you how to make many useless projects instead of building a couple of useful ones. For example, if you are into web development, try to make a fully functional online store that people can potentially use.

    Tutorials from which I learned taught about making a tic-tac-toe game, weather app, quiz game, etc. These projects are ok for learning the basics but before applying for a job position, build an app that people can download on Google Play Store and use in real life. It’s better to have one app that implements a couple of libraries and has a clean architecture that is useful than to have many simple apps that are useless.

    I applied for a job with one app on the Google Play Store with MVVM architecture, SQLite database with Room persistence library, Firebase for user log-in authentication, and four basic operations of persistent storage – create, read, update, and delete (CRUD). Apart from that, I had two basic apps that showed I could use Google Maps API and a weather app that showed I could work with JSON.

  2. Make a CV that stands out.

    If your CV sucks, even though you are an “awesome” programmer, you will not get almost any interviews.

    Find tips on how to write a good CV that stands out. I suggest you also check out CV-making platforms like resume.io.

  3. Make a personal portfolio website.

    I recommend checking out GitHub Pages. Here you can host a website for free.

  4. Optimize LinkedIn profile

    And last but not least, make an optimized LinkedIn profile. You can find tips on how to make a good LinkedIn profile online.

    This is important since you will also apply for jobs on this platform. Also, recruiters can find you here and contact you even before you apply for a job, and a professional-looking profile will show that you are serious and active.

Applying for a job

When you are finally ready, you can start applying. You will probably still think you are not good enough, but if you managed to finish all previous tasks, you are ready. You are applying for a junior developer position without work experience, no one is expecting you to know everything. You must have a solid foundational understanding of programming in general and your specific technology. The learning process will begin when you start working on large-scale projects in a team at your first job.

You will probably feel anxiety when you get your first interview. But trust me, there is nothing to be afraid of. Try to learn from your interviews, and don’t give up until you get a job, even if it takes a lot of failed interviews.

Here are some tips to help you get a job:

1. Apply to all job postings (for your tech niche).

If there are 50, 100, 200, or even more job postings, apply to all of them, and remember to make a list of companies you applied to. Many companies will not respond to your application at all, and some will respond to you after several days, weeks, or months.

I applied to around 50 different job postings and got around 15 interviews.


2. Again, apply to all job postings.

Even if you are a junior developer, you should apply to job postings for mid and senior-level developers.

Some companies responded to my application after some time saying that they have an open junior developer position.


3. Be communicative and confident, and express your ideas during interviews.

Feeling confident – or pretending that you feel confident – is necessary to reach for opportunities. It’s a cliché, but opportunities are rarely offered; they’re seized. – Sheryl Sandberg, Chief Operating Officer of Facebook

You may think that interviewers will mainly value your coding skills. But they are looking for a person that is ready to grow and learn, can work in a team, and can contribute with their ideas.

4. Failure is not an option

Don’t give up if the first couple of interviews doesn’t go well. Use failure to identify where you could use some improvement. Do whatever it takes to get your first job. Improvise. Adapt. Overcome.

Reaching your goal or just starting an adventure.

You might think you’ve reached your goal when you get your first job. But the truth is that getting a job is just your first step.

Try to enjoy this neverending growing process and use your newly acquired skills to improve your life and make the world a better place for everyone.

“Also, don’t forget that some of the most successful people in the world are self-taught programmers. Steve Wozniak, the founder of Apple, is a self-taught programmer. So is Margaret Hamilton, who received the Presidential Medal of Freedom for her work on NASA’s Apollo Moon missions; David Karp, founder of Tumblr; Jack Dorsey, founder of Twitter; and Kevin Systrom, founder of Instagram.”
― Cory Althoff, The Self-Taught Programmer: The Definitive Guide to Programming Professionally

Care to share?


Custom bar chart for android – tutorial

Android

Custom bar chart for android – tutorial

In our Skenit app, used for gym management, we wanted to improve user experience by providing them with statistics that show monthly users per gym, the number of users per training type, financial reports for every month, etc. By doing this we would give our users more insight into the gyms they own, their employees, […]

Front-end vs. Back-end: What is the difference

All

Front-end vs. Back-end: What is the difference

Terms like front-end and back-end development may be confusing to someone who is new to the world of coding and software engineering. Let’s clear up some of the ambiguity around some of these technical phrases. We’ll explain the differences between the front-end and back-end. Today, we’re addressing the following issues and demystifying the distinctions between […]