"How can I become a programmer?" is one of the most asked questions I have seen being asked around me, in programming subs and groups of all kinds.
As a very newbie question that has been asked probably millions of times, it has become a reflex for many IT people to sigh and ignore them, and sometimes even make fun of those who ask. It is not that the question is bad, it is just that we hear it way too often, and some might argue that just asking it shows that you don't have what it takes to become a developer.
I wanted to give my own input in a way that would be useful to the greater public.
Why then, would developers want to make fun of people asking such a question? The answer is that programming, software development, and even engineering are first and foremost a profession about solving problems. Just like toddlers, many of us have an innate curiosity about how the world around us works, and we enjoy being presented with problems that we seek to analyze, comprehend, and take pride in being able to solve, especially without involvement from others.
When we hear someone say “How can I become a programmer” what we are hearing in fact is “hey, I have this problem where I want to become a programmer, can you create a solution and give it to me? ”. This is the way a client would speak, and this way of thinking is the antithesis of what being a programmer is about.
So as a rule of thumb, whenever you have a question, your first reflex should be to search for a solution by yourself. Yes, it takes time and effort to search through countless pages, to summarize all the information and transform it into an action plan that you can execute. But this is the only true way to get an answer, as asking other people will give you an incomplete, subjective view of what being a programmer is about. Even this small post, which has the explicit aim of answering this very question, should be tempered and compared with other similar articles.
Then that's fine too. Another thing I see about people trying to enter this profession is that they have a completely unrealistic view of it. Most people think that sitting in front of a computer and getting paid 6 figures for it is both extremely easy and lucrative. But that really depends on who you are, it depends on your tastes and your personality.
I have seen many developers who, after months or years of easy, lucrative work, decide to give up on everything and radically change careers. Some of them become farmers, personal trainers, ski instructors, psychologists, or anything that would get them away from a screen and closer to nature or other people.
We are not all made alike, and what would be paradise for some of us would very likely become torture for others. Sitting in front of a computer all day can be depressing. Fixing problems can be stressful. Isolating yourself from other human beings in order to make little lights change on a computer screen can become a fate worse than death. So the first thing to think about is not about the money, but rather, how well you see yourself sitting in a damp basement for years and being ostracized from society.
If you are naturally introverted or shy, such a scene might seem like a perk. But if you are the outgoing type, who loves being the life of the party, it is very likely that you will never be able to adapt. Of course, it is not a white or black scenario: Extroverts who enjoy mental challenges might be able to thrive in this profession before becoming managers. But you must ask yourself “What type of life do I want to have for 8 hours a day, for almost every remaining day of my life?”. If you don't see yourself sitting in front of a computer screen, then congratulations! You have just avoided jumping into a profession that would have become literal hell for you.
If you are really, really sure about yourself, then the next step is to know that working in IT involves many, many roles. A developer that works with microprocessors and one that works with web development are 2 totally different careers. Just like you wouldn't ask your proctologist for an eye exam, or god forbid, your ophthalmologist for a colon exam, you shouldn't expect one type of developer to have any knowledge whatsoever about another developer's domain.
So the first thing is to determine what you want to specialize in. There are many types of development positions, depending on languages used, the hardware used, and also many non-development roles that are needed in IT, such as QA, product manager, scrum master, etc.
The criteria that you would use is that you must learn more about every different role, and choose one according to what you would enjoy most doing. You can obviously take into account the salaries they make, but keep in mind that a good professional will almost always make good money. So you want something you know you can be good at.
Then, as we say in our profession, “Google is your friend”. Go on a website such as https://giybf.com/ and ask your next question. My personal advice would be to learn more and more about the profession, and look for online tutorials on how to obtain the basic skills needed for your future profession. You can also visit websites such as https://roadmap.sh/, which would help you to visualize the skills you need to acquire. If, after that, you come across more detailed questions whose answers are much more difficult to find online, then you are allowed to ask other people.
Just make sure you've done your due diligence in searching for the answer, or you will be giving others prime material to laugh at your expense.