When I decided to choose programming as my career back in 2018, I didn’t had any Computer Science degree or connections that can clearly guide me in this path. All I knew at that moment was the feeling of choosing the right thing for myself - thankfully, I still feel in same way today.
First thing I did was some googling to get some ground on the local options on how to learn programming. Majority of results was based on university educations and paid courses held by private companies. I have also asked some people I know, people that they know to collect enough pieces to form a bigger picture for the roadmap.
I won’t be specifying any names that I have discussed with here, but less or more those were the answers I got at my first iteration:
“You have to go to university, otherwise you can’t do it.”
“Why don’t you choose to become an IT support instead, education part is easier. By the way you also have to go to school to get certified.”
First and foremost, I am not against university education. From time to time I see people arguing and taking sides about having university degree and being self taught. I think it is pointless to looking down on someone just because they don’t have a degree - or underestimating university education. At the end of the day, I believe essence of having a job agreement in this area is proving the fact you are able to add value to the company.
Now back to the research - do I think those people intentionally gave me bad advice? Of course not. How I see is they gave me the best advice that “they think” it was.
“Don’t be against taking advices - but never follow them blindly”
Because by nature humans don’t like uncertainty, it is a lot easier to just follow one advice to get rid of that feeling. Thankfully, I didn’t settle down and continued my research. If it was possible for me to follow university path at that point of time, I would probably go with that route.
But it was not the best choice for me - I didn’t had time or possibility to invest 4 years before even coming into job market. If I have listened to those advices, I would be still struggling to keep up while studying - instead of having one year of real work experience and still keep growing every weekday right now.
Even I didn’t choose the university path, I still needed to study to become employable enough. I find out one of the universities in my area was opening a course for learning programming. It was primarily focused on preparation for job market and taking 50 weeks. Class could only take limited number of applicants - you needed to be successful on the test to be part of it. So I could be ready in 50 weeks instead of 4 years? I got really excited, felt like I finally found the right opportunity. Applied in the same day I heard about it, then unpatiently waited for the reply.
Then I got a mail about I was selected for the next step and invitation to a test. I had no idea about what kind of questions I was going to be tested with, as I was told there was going to be very general questions and not possible to prepare for them. Even though, I just kept googling and researching to learn about programming concepts as much as I can.
Time flied quickly then I find myself at the university building, going into a test with more than 300 people in same room. Final class was going to be 30 - 40 people at the end, so I said to myself you should to be in the top 10 percent. I remember being very stressed first time seeing math topics in some questions - naturally. Because last time I have studied math concepts was a decade ago. Still, I tried my best at that point of time. Shortly after test, I received an answer about I didn’t make it to top 10 percent, unfortunately I got disqualified.
I still remember the frustration like it happened yesterday. All my hopes and excitement for this course was crushed into a thousand pieces. I literally didn’t know what to do for a week. But still I didn’t take this as a sign that programming was not for me. Because deep down inside I still knew this is the right path for me.
I have recieved another mail from university, got excited again when I got the notification. Maybe someone else jumped off the course and there was a place for me? It wasn’t. Since I was very interested in programming, they referred me to an initiative as an alternative: a Bootcamp like free course about Fullstack Web Development that takes 6 months. I didn’t hesitated for a second and applied rightaway.
Even the lesson I have learned here may sound like a cheesy motivational quote, this is something I remind myself whenever I feel stucked:
“As long as you don’t give up, there is always another way to be found”
This bootcamp also had a qualification process, but it was a funnier one. We needed to make an assignment, a simple game using Scratch engine to show our abilities. I love games a lot, and same time I was 100% dedicated to not miss another opportunity for learning programming. I wanted to make something unique and having fun while doing it.
I decided to make a game about IKEA (called it KEIA in the game) - it is called “Vikingbullar”. Plot was about a hungry Viking getting hit by lightning, suddenly finding himself next to KEIA through time travel. When he gets the smell of delicious meatballs, he goes straight into the KEIA building. You as a player taking the lead at that point to help him eating meatballs while fighting your way through the furnitures.
A sample visual from gameplay:
It took me one week to:
- Make sprites for the character + items + monsters (monsters are top 5 selling IKEA products)
- Compose game music
- Implement game logic & wrap everything together
I had a lot of fun while working with it. If you want to play, game is still alive at this link (you will need a desktop web browser to be able to play):
Thankfully, I got accepted to the course with this assignment and my education started at the beginning of September 2018. Majority of course was consisted by homeworks, except classes held once a week by volunteer teachers that actually worked as a developer in different companies. I am really thankful to those people invested their free time to teach us voluntarily.
It is not surprising to have an extremely intense course program, when the goal is to learn Fullstack Web Development in just 6 months. Looking back today, I understand the purpose of those 6 months clearly: it was aimed to give us a solid ground on how things work together. Getting expertise on those areas takes a lot longer time as I have figured out.
We got to learn the basics of:
- As final, a Todo app (absolute classic, isn’t it?) to use everything we learned + Final project with the class.
How did I hold up all with these? Amount of information was pouring down like rain, completely overwhelming. I had a lot moments feeling lost and didn’t know what I was doing. Even finding out how to correctly center a div was taking hours at the beginning. By the time I started to handle more and more complex paradigms and built a couple simple single page applications. As I get better, complexity was not disappearing - but rather it was moving to another level. Then I started to realize - dealing with complexity is one of the core pieces of programmers life. It will always be there in every level.
“Dealing with complexity will be always there - embrace this fact and become better on how to deal with it”
As the time was getting closer to the end of course, I decided to focus on building a better portfolio on the side to get a better advantage when searching entry level jobs. If I only follow the course materials, I would not have much to show other than a simple Todo app. Which is probably the most popular project that tech recruiters keeps getting in beginners CVs over and over again. If I wanted to differentiate my CV from others, I had to do something different. My knowledge with React was still at a very basic level, I needed a deeper knowledge for building cooler portfolio projects. That’s exactly when tutorials came into my life.
There are enormous amount of programming tutorials out there. When I was browsing Youtube and listening to different instructors, I couldn’t follow along with every video. I believe this is something very unique person to person. Remember your schooldays: I bet there was a teacher some of your classmates could follow along easily, but it was not the same for you. I find this to be same with programming tutorials. After a long search, I found Mosh Hamedani as the best instructor I could listen to. If you ever read here Mosh, I am thankful for your amazing teaching style. It made a remarkable difference on my understanding of programming.
Then I started with his React course:
Shortly after, I figured out his Node.js course was complementary with the React course he had, where you build the backend part for the example React project. This was perfect for me to follow along to build a full stack project while learning Node part:
It took 1,5 months to follow along, take notes and code along with all those courses. After finishing the tutorial, I had to decide if I should take another tutorial on a topic like Redux - or solidify my fresh knowledge. At first sight, taking another tutorial is always more comfortable - you have someone guiding you from start till the end. I choose the second option, but I was still not at a level of building something completely from scratch.
Best solution I found was to test my knowledge by customizing and extending the course the project I got familiar with. This would gave me the best of both worlds: uncomfortableness of trying something new while repeating the fresh knowledge. I have added extra features like adding a new role based authorization entity and it’s handlers, improved admin options, modals, responsive views, and so on.
Project live preview: Medialender
Source code: Medialender github repo
“Whenever you follow a tutorial to learn something new, make sure to do something on your own right after to solidify the knowledge.”
I kept following this simple formula on every tutorial I took since first one - and it is still my key to survive tutorial hell.
As soon as I graduated from the course, my job search adventure started. I had some portfolio projects on my belt, polished my CV as much as possible - I naively imagined it would not take too long for me to get an entry level job. I started to send CVs, e-mails, apply to job ads, attend job fairs. I even kept an excel file to keep track of my job applications. Shortly after, I started to realize it was not easy as I imagined to find a job as a developer with no experience:
Most of the companies didn’t even respond to my job applications.
Some of them stopped communicating after sending my CV.
It felt bad, almost like getting insulted. After some critical thinking, I came up to the conclusion I should stop bothering myself with how some companies deal with their job applicants. It is something that I have no control over. I focused on the things that I can control instead: my skills, portfolio and getting better at job searching.
I kept searching jobs while building my portfolio with personal projects, learning new skills, updated my CV and personal letter every 2 weeks if my results were not better than previous 2 weeks. Then shortly after I landed my first ever interview - it was exciting.
When I came to the interview, I had a mix of excitement and nervousness. But nervousness disappeared shortly after we started to discuss, it felt like a natural conversation and pleasant experience. When I went out from the door I had good feelings. Last thing we talked about was to letting them know when I came back from my holiday - so we could proceed with the next step, which is technical interview. I sent an e-mail as soon as I came back - surprise. I haven’t recieved any answer.
This is when I learned the meaning of term getting ghosted:
noun: the practice of ending a personal relationship with someone by suddenly and without explanation withdrawing from all communication.
It felt uncomfortable. I couldn’t wrap my head around it, since there was nothing unusual or anything near to it during the interview. I couldn’t find any reason that made sense to me. Since I faced ghosting with e-mail only applications up to this point - I didn’t expected being ghosted after having a face to face interview. At the end, when I got to know this is also something common that can happen during hiring processes, it ended up being in same class with the things I had no control over. I simply moved on.
After a month or two, I have landed my second interview with a big company. This time I have passed the screening interview, then invited to have technical onsite interview. I had no idea about what was awaiting for me there. Some people I knew somehow familiar with the company told me I was having high chance to get the job and should not worry with the portfolio I have.
I had the mix of excitement and nervousness at a better level this time. We had a nice introductory chat with HR person and the Tech manager over a cup of coffee, then they told me now it is time to have a technical interview. They showed me the way, suddenly I find myself in a completely white little room with one white table & chairs, and a big whiteboard. Technical interviewer was sitting and waiting for me with a laptop open.
Interviewer: “Show me what you can do, are you ready?”
Interviewer: “Can you swipe two variables?”
I looked around and said: “I don’t have my laptop with me, can I use yours?”
Interviewer: “No, we will only use the whiteboard.”
That was the moment I realized my portfolio was out of discussion and I would be having the test on a whiteboard. It was disturbing to figure this out at that moment. I wasn’t prepared! But I picked myself up to proceed with writing a function to swipe variables
Interviewer: “No, don’t use function. Do it with only variables”
Atmosphere in the room was hanging nervous and I started to sweat. I swiped the 2 variables by using help of a 3rd variable.
Interviewer: “This is not the best way to do it. Solve without using a third variable”
Interviewer: “Didn’t you study math?”
Then he showed me a math trick to do it. I tried to soften the atmosphere: “Thanks for showing, I learned something interesting”
Interviewer: “Okay, can you output a Fibonacci sequence?”
Then he asked: “Do you know how to reverse a linked list?”
I answered like: “I am not sure, is it like array of objects?” to try making him explain and soften the discussion. He just shaked his head.
I asked again: “Sorry, but is this the type of questions and level being asked to Junior level engineers? Right now I don’t know some concepts you have asked me, but I can make sure that I learn them.”
Interviewer: “Yes we ask them. But if they don’t know those basics we can’t teach them. I think we are done now.”
After a day, I have recieved an e-mail about they were sorry to proceed with another candidate, I could apply again when I got a little bit more experience. I have replied the mail with asking what “little bit more experience” means, so I could get it until the next application. Again - haven’t recieved an answer and found myself ghosted.
This was the most frustrating experience I ever had since start. No one even mentioned about I was going to have an interview, where I was expected to solve data structure and algorithm problems on a whiteboard. My frustration became even more intense when I heard some people at my level didn’t even recieve a single algorithm question and passed the test with general questions, ending up being employed. I was happy for them - and I mean it. But this was clearly indicating that something went wrong with my experience.
I gave some critical thinking onto this. It would be absurd to think about that big company was treating me unfairly on purpose. Most likely the reason that makes sense to me is, somehow I have been wrongly placed in the recruiting pipeline, ended up with an interviewer who deals with senior level developers.
“You can’t control how companies deal with their job applicants. You may not get an answer, no feedback or even ghosted in the middle of process. Focus on what you can control instead: getting better.”
“Make sure to establish a better communication with HR to get clarity on hiring process. Always ask what type of technical test you are going to have. ”
Recovering after all this took longer time, but I picked myself up again to continue from where I left: build projects, learn more skills and search more jobs.
After a month or two, I visited the place where I went to course for learning web development. I had a casual discussion with a senior web developer, who was a volunteer teacher at that time. I have shared my story, showed some of my personal projects, told him that I was searching job and asked for some advice.
He said “I just want you to meet someone” and left, then came back with that person - we introduced ourselves. But I had no idea about the person I was handshaking with would be my current boss today.
That time I presented myself in a better way. Because I was aware of what I can do and cannot do at that point of time. Even told them if they wanted to test me on a whiteboard, I would need some extra time to prepare. But it turned out to be a test closely related to what I will be doing during working hours - and I was glad to be able to show my abilities this way.
Now, this sounded like being lucky, right? Probably.
Do you think I could be able to do something with the luck if I was not ready for it? Probably not.
If you are still learning or searching your first developer job, continue crafting your skills. You may not be ready to work with some companies, but for some of them your level might be the best fit. You cannot know without knocking the doors. At the end of the day, you only need to find one company that will say “Yes” to start your developer career.
This was my story of becoming a web developer.
Thanks for reading!