I’ve been working in the programming world since 2011. Before then, I spent about 6 years searching my own life path. When I was starting this adventure, my goal was completely different. I wanted to be a math teacher. During those 6 years, in most cases, I didn’t know what I was doing. Where should I spent my time? On what should I focus? I studied hard, but to be honest, I didn’t know where all this will end. Especially when some of my plans failed. I put more details about my journey in about me section, check it out if you want to know more about me. Right now I’m programmer and I teach people what I already know. I share my knowledge in many different ways. I do workshops for women like Rails Girls. I teach children on CoderDojo. I write Woman On Rails blog. I met lots of people who want to change their life. They want to be programmers or testers or even start something which need more programming skills. I’m helping them change their career path. And I’m proud of them, because this change is hard and need some sacrifices. During that process, I get lots of questions about How to start in programming? Today I would like to answer those questions in public.
Disclaimer about programming world
Before we start, I would like to mention one very important thing. There is a lot of information on media, saying that programming is trendy. Everyone should learn programming skills. And that programming is full of money and easy to do. That’s not true. Maybe yes, it’s trendy right now. There is a lot of going on in the IT world. Companies search for employees, but they look for good programmers. They need someone with passion, good skills and knowledge. The same case is with doctors. You will go to the best specialist you can afford. I’m not saying here that there is no place for people with junior skills. I’m saying, they will earn less money in the beginning, like in other jobs. That’s normal. People pay for work, not for being a programmer. This isn’t how the world works. You can have a different opinion about programmers, but this is the truth. Programming is like other jobs. You have your responsibilities and tasks to do and you are paid for what you do. In a long term no one will pay you for playing games through the whole the work day (unless you are game tester ;) ). When you hear from me, that this is normal job you can be surprised. By normal job I mean, that you take care of your responsibilities, but you also have a passion to do that. No one can do the job as well as the person who has passion.
I think everyone should try programming, but programming is not for everyone. You will know that, when you try it. You need to check if you like it or not. Listen to your heart. I don’t want to be a math teacher in the school anymore. Why? Because I tried it and I don’t like it! The same is with programming. You can earn thousands of dollars by doing something you don’t like, because it’s trendy, but you will never be happy. And you also will hurt people around you. I saw that situation so many times, that someone came into the programming world, because of the wrong reasons. Money and others benefits like remote work are not enough, to be happy in a long term. This kind of a person didn’t like to learn a single new thing, new concepts. He didn’t want to do good practice and he wasn’t interested in workshops, presentations, conferences. This is like building your house from straw and clay, when around you are better materials to use. This is like staying in Middle Ages. So please try programming, but keep in mind that’s hard and demanding work.
OK, back to main topic. Let’s start answering questions.
Is programming for me?
If you think only about money, which you earn. - Programming isn’t for you. If you think, that this is easy and you can do nothing almost all the day. - Programming isn’t for you. If you think you learn something and your knowledge stays the same for next 10 years. - Programming isn’t for you.
When I was organizing Rails Girls workshops in Cieszyn for 24 participants, only 5 of them were interested in continuing learning. After first classes only 2 of them staid. Only 2 of them took their time, energy and engagement to learn programming with me. And only one (as far as I know) changed her life and she is now programmer. What I would like to say by that example is that…
Programming is hard work. I’m really honest with you. It will take a lot of your time. You will learn new things, improve your skill and knowledge till end of your life. You will have doubts and moments of break downs. You will be bored sometimes or angry that something is not working, but if you still want to try and you feel deep in your heart, this is for you. You will also have moments of victory. You will be proud of yourself and your code. You will be happy to learn new things. This job will bring you satisfaction.
You can think “I’m too young or too old”. Look around. Check our CoderDojo workshops participants. They started with programming in very young age. We teach even 3-4 year old kids. Look at this old woman who uses computer in age of 80. My friend Ula stared working as a tester in her 40s. Those people didn’t think one minute about their age. They just do what they love! That’s all.
You can also say: I’m not enough. I’m too stupid for that. I have no knowledge, I do not have enough experience. If you feel that this is your passion, no matter if you are men or woman, no matter you are skinny or plump, or young or old. Put your all doubts away and just go with your dream. Don’t allow for this or other some other reasons stop you from doing what you truly love.
When is the best time to start working in IT?
The best time is now! If you are sure, that this is the path for you, don’t spend your time on something else. Just start doing it right now! You cannot go back and change your decisions. Don’t spend your time on regretting, that you didn’t start earlier. Your past isn’t under your control. Your future isn’t under your control too. You don’t know what will happen in the future, but you can take action now. Do not procrastinate. Start small, start now. Prepare your action plan and do the work!
What are the possibilities?
It depends on you, what you will choose. Please do me a favor, do not allow those possibilities to bring you down. If you are not sure frontend or backend just try and check. This is as simple as that. Do not afraid of mistakes. There is no such thing like a mistake. There is new knowledge, new experience and a new lesson. Try to think about this as a process, which you need to discover. If you still don’t know where to start go to question Where should I start? or What language I should choose?.
What language I should choose?
So, how should you choose? To be honest, it is not so important in the beginning, like you think. You need to choose A language, not THE language. When you are starting, you need to learn how to write code. How to be understood by computers. You’ll learn logic conditions, loops and other programming concepts which are needed in all languages. If you want to be a good programmer, you will learn a couple different languages.
What I can suggest you, when you learn try to choose languages from different categories. For example, if you know already C++ which is compiled, static typed and object-oriented language you can learn Elixir which is interpreted, dynamic typed and functional-oriented language. This will give you much more knowledge about programming concepts than if you will learn C#. I’m not saying that C# is bad. I’m just saying that it is similar to C++. This is like with normal languages. Some of them are similar. For example, I more or less understand Czech (especially near the Polish border), because it is more similar to Polish than Spanish. I don’t need to put too much effort to understand Czech. The situation looks completely different with Spanish. I need to learn new words and new grammar concepts to be able to use that language.
Where should I start? What steps I should take to be a programmer?
Check if coding is for you. - I really recommend that as a first step. Search for workshops for the beginners. You don’t need to pay for them. There are lots of free events like Rails Girls, where you can try programming without any obligations. You didn’t like it? Fine, you only spent a couple of hours to try it. It is the best step before you quit your job or something like that.
Did you like it? Yes, then you can start changing your life. There are many ways to do so. You can read books, listen or watch conferences and talks. You can buy online courses or do some full time course. Anyone who starts programming have a different story to tell. Some people go to study and some people learn by themselves. Everything depends on your current state in your life. I can say one thing. No matter what you decide you need to choose programming language to learn.
When you have already chosen the programming language, start a project using it. In the beginning you can resolve some simple math problems, like you can find on Project Euler page, but sooner or later you need to start your own project. It is even better to start sooner. It doesn’t matter, what you will do. You can try to copy an existing application. What I mean by that - Do not steal their code, just look on their functionality and try to do similar things in your project with language you choose. You can also have your own idea, which you can bring to life.
When you start, you will have problems. You will search for help. This is how it should be. You need to learn how to find solutions, how to ask for help. You need to show that you will not give up. And you need to show your work to the world. This will be your portfolio. Put it on any public repository. Github, Gitlab, Bitbucket. It doesn’t matter. And improve, change, add new functionality.
You will work every day. Based on problems which you have in your project, you will search for specific help. This project will focus your attention on things that matter the most to you right now. For sure, you will use for that many different resources, even online courses. I will do a separate article about them soon.
If you think about full-time course in programming school, that’s fine. I also do this kind of courses. You can check my courses here. I want to you to remember one thing. Programming school can be helpful and can speed up your learning process, but you need to start creating your own project no matter what. Often in courses you will get homework to do. This is good for a start, but your own project is something you can put in your portfolio.
I don’t say that you cannot be a programmer without your own project. You can, but your own project can give you more chance to get a job. And also you will learn much more, than ever. You will have more confident that you can overcome problems and you can also talk about this project during your interviews.
This is the hardest step. Start looking for a job. When you are in the learning mode, you can always say I’m not ready to start searching for a job. I don’t know many of requirements on the job offer. I don’t have a chance. This is the wrong approach. You need to set a deadline, after which you will search for a job. This is not an easy task. You will send 100 resumes and 10 people reach to you. Only one person will invite you to an interview. This is only an example, but be prepared for that. In your case it can be faster or slower. The most important is keep trying. If you fail, you can always ask, why you didn’t get a job. This will help you improve your skill in good direction. Do not wait too long. The only thing which people regret after reaching their goal is that they didn’t do it earlier. Go out of your comfort zone and search for a job.
What can help me with the learning process?
There are many different ways to learn. Some people like to read, some people like to listen. For others is better go by example. You know yourself the best. You know what is working for you and what is not. There are also books about ways to effective learning. You can try it. From my experience I can encourage you to use these tips:
- If you learn something, try to explain it to someone else. - Your friend, your mum, even your dog. If you have a problem with that, you probably don’t understand this problem fully. People who can explain complex problems with simple words, really understand the problem.
- Surround with people from programming world. - If you want to be a programmer, you should find people who are already there. Check local Meetups groups. Use their example to get, where you want to be. You will have new friends and someone who can help you with needs. They can show you important topics, discuss the newest concepts, tell you how it is working as a programmer or even tell you about job opportunities. And you will be not alone in this journey.
- Find a mentor. - This is similar to one before. It is much harder to do everything alone. If you have someone with the experience close to you, it is easier to learn, get answers or look for good practices. Even more, your mentor can be your support in hard moments. He or she can give you advice or show the best way to achieve your goal.
- Work with code. - You can read all the books. You can watch all the courses online, but if you don’t write code, you will stay in the same place. Coding is not only about definitions and lots of stuff to remember. It is about practice. To fully understand something you need to try it in practice. I don’t know a person who learned bicycling by reading books. You need to take a bike and try. You will fall, but after some practice you will start bicycling.
- Work on a project with real problems. - Even it has been so often used as an example, like a shop with some products, cart and payments. Try to resolve those problems and show your solution to the word. Ask for advice and improve your code. And do that daily. You don’t have much time? Fine, add one line of code, create one more test.
What problems I can find during the learning process?
You can have many problems. Probably I’m not able to count them all, but I will try to describe some of them.
What I should learn? - The answer is simple. It’s depends. First, you need to decide which specialization is interesting for you. Some of the possibilities you can find in answer to question What are the possibilities?. If you decide to be a programmer more interesting for you will be questioned What language I should choose? and Where should I start?.
I don’t know what I should know. - Probably you know nothing or a little. That’s OK. Any knowledge related to the topic you are interested in, will be helpful. Yes, for sure there are more or less effective ways to learn, but to be a good programmer you need to start. Problem with choosing where to start, is not the excuse for doing nothing. If you are interested in a more structured way of learning you can always start programming course. There is lots of them. Ask questions, search for opinion and choose one.
I don’t understand programming words. There are so many new concepts. - This is hard, I know. You try to read one article and many words are for you like buzzy words. You don’t understand even big picture of shown concept. First, take a deep breath. Do not give up! It is very hard to start a new thing. Second, go back and start again. Which word was not clear for you? Take this word and search information about it. Search for simple explanation for X. If first answer will not help, try second and third. If this is still unclear, ask questions, for example on programming forum, in article comments, places like Stack overflow. Maybe you know someone who is a programmer, ask him or her. If something is too hard to understand now, mark it and go back in a week or so. The rule is simple, do not give up. If you ask for help, someone will help you. This will be hard work with a lot of doubts, but it is worth it. And remember Wisdom will come with time.
This took me so much time. - Yes, as I said programming is hard. Some problems will be easy and fast to resolve and some of them not. You will spend many hours learning how to code. You need to be patient. Give yourself some space to do failures and mistakes. People study this topic for years (master degree takes 5 years), and they are still at the beginning of programming road. If you are fully committed to this dream you can do it. Give yourself time to do that. This is the only way to reach that goal. There is not short cuts. Remember Progress not perfection.
I will never understand that! - Look, do you remember from your school’s times any topic which was hard for you to understand? Maybe something from math or physic or philosophy? Do you know that topic better now? Probably yes. I had many this kind of topics. Especially from my studies. I didn’t understand them fully when I was young. When I was learning this first time. And now, I am teaching this others. Just keep going. One thing which is complex for you now, will not stop you for being who you want to be. I believe in yourself. I know you can overcome it. Take care of something else for a moment and go back to this hard topic one more time.
I got my first job. What next?
Well, congratulations! That’s awesome news! It is time to celebrate your success! When you give yourself time to rest and relax after your hard work (probably it will be a few days before you start your new job), then you will see more work to do and more thing to learn.
First days in your new programming job can be stressful. Don’t worry, it is stressful for everyone. You don’t have the right environment to start, you don’t know the language of your team, you don’t even know where is the coffee machine. This is a problem related to office, when you work remotely from your home, you know where your kitchen is ;] But back to the topic.
You are new in this programming world, that’s normal you don’t know it yet. Working on your own project at home it completely different than working in a team. You need to know the workflow, processes and company traditions. That’s fine. Probably you will get someone to help you go through all the problems in the beginning. If you have questions, just ask. There are no wrong questions. From my experience new people in a team have very good questions, that I never think of. But try to combine them, put them on some list and ask once to not disturb people in your team over and over again during the day. They will appreciate that.
Keep in mind that you are in learning process constantly. This will never change. Even you will have 10 years of experience you will still learn. For sure at the beginning you will learn faster than later in your work. This is the best practice you can have. Not only in programming world. Constantly learn new thing. You will read articles, listed podcasts, watch tutorials, read books, participate in conferences, workshops and meeting to get more knowledge. And then you will use this knowledge in your projects.
At each step you should be proud of your progress. You can even track what you learned to have evidence of your evolution. This will be your weapon in moments of doubts. And you will have them. A lot of them. Searching for a bug in the code for 3h? Oh yeah! Fighting with new functionality for long hours and then get information from someone in your team, that you can do it in one line? Yes! I’ve been there, everyone else too. Don’t be too hard on yourself. Keep going! It will be easier, trust me.
Then after some time, it can be a long time, the routine will come. You will bored with the same problems. The same solutions. The same behaviors. Please do not be, that person to know everything. Keep this learning mode. Listen to the people and be open for what will come.
Any other questions?
Do you have more questions related to programming topic? Or you have other questions too? Feel free to put them in comments below, and I will try to answer them all. And if you know someone who have those questions, share this article with them.