March 17th, 2020 · 18 min read
There are so many articles about how to get your first job as a software developer, but once you’re there, what do you do next? Everyone dreams about a successful career, but how can you progress?
Recently I heard about a person that worked as a Junior Software Developer for 7 years. Then, he gave up this career. In the meantime, I managed to get a job as an Intermediate Software Developer, despite having a full-time job for only 7 months. So I thought about what I have done to be in this position and decided to share with you the most important 7 parts of this process.
The information I will share with you is relatable for any Software Development position, but I will give concrete examples about Frontend Development, because… I am a Frontend Developer. Makes sense, right?
Now you might be asking: “Oh-oh, what are you doing here? I thought it was an article about how to get a great second job, I can’t turn time around.” You can’t, but you can reflect on the skills you had when you got your first job. Maybe you were already halfway to being an intermediate developer!
One thing people tend to underestimate is their previous background and how it can improve their value. Sure, employers look first at job experience in the current working field. But they DO look for your other experiences. Just because you are working as a full-time frontend developer for 7 months, this doesn’t mean that you only have 7 months of experience.
So, when you start your first job in a domain, you certainly have some other qualities you should know how to value. Let me give you an example: I recently spoke with an HR person that was recruiting a Frontend Developer for a warehouse related project. She showed me a candidate profile and told me that she also noticed that the candidate had previously worked in a warehouse and thought he would understand the business better. So if you make a professional reconversion, don’t just throw away all your past experience. Think about how to get the best out of it for your future job!
As a personal example, when I got my first job as a Frontend Developer, I had already worked as an SQL Instructor for a year and participated in a 6-month internship in a Business Intelligence Department. Were they frontend specific? No, but the fact that I already had some work experience and I had the ability to teach others surely had an importance on the final offer. Also, I had a Computer Science Degree, with a diploma project consisting of a Full Stack Web App, so obviously, I turned this into my advantage.
The projects you build during college increase your value for the job, but they aren’t the only ones. Maybe you have taken online courses or coding boot camps, those are experiences that add to your knowledge, and knowledge adds to your salary. For me, Complete Web Developer in 2020: Zero to Mastery was even more important for getting my first frontend job than my college degree, and I am pretty sure I had more knowledge than most junior frontend developers, even before starting a job.
The takeaway from this section is the following: think about what experiences you had before your first job in your current domain. Do not underestimate them, they add to your value!
No matter if it’s the first or the fifth one, you will work for this job tens of hours a week. That’s a lot of time, so you definitely want to use it wisely. A colleague told me a great question he was asked once by a manager:
“Do you have 5 years of experience, or the same year of experience, repeated 5 times?”
Think about it. For example: in your first year, you work on building an e-commerce platform. Then you change your job, and for the next two years, you build a similar e-commerce platform, with the same technology. Is this a good career choice? Sure, you feel very comfortable doing the same thing, because you have experience with it. But the situations that move us out of the comfort zone make us progress, and to learn more, you have to work on different scenarios.
Choose jobs that challenge you. Apply to jobs for which you have solid knowledge, but you still find something new to learn. For example, I chose my second job not only because the main technologies were React and Redux, which I had good knowledge of, but also because the company used automated testing, Typescript, CSS-in-JSS and some other topics I barely touched but had great interest to learn.
Also, do not go JUST for the money. Choose jobs where you have people who you can learn from, where you have a good development environment. Search for companies that care about their code, have code reviews, refactoring and other things that will make you a better developer.
When I finished my 3rd college year I had to apply to jobs as I was forced to practice my computer science skills for at least 3 months. It was a nightmare. I realized that I didn’t know too much about anything. I knew some C, some Java, some Python… but there were so many students out there way better than me! How could any employer want me? When I got my first offer I accepted it immediately, despite the salary being less than attractive.
Fundamentals of a language are not that hard to learn and sometimes they are enough to get the first job. But then? How do you stand out from the other developers? The answer is to not stop learning! Go a layer deeper into learning a programming language, its best practices, and its ecosystem. Do not continue just with your day-to-day uses, go more in-depth. Do you know all the syntaxes and functionalities your programming language offers? Is your coding style appropriate?
What is the benefit of mastering a programming language? Not only that you’ll rock your interviews, but you’ll also be more productive at work because you’ll have a better understanding of the code written by others.
But hey, the more you know, the more valuable you are, right? It is true, but it depends on how your knowledge can help the business you’re working on. I have already mentioned above that you should master one programming language. But then what? How do you continue to add more value?
To be even more explicit: learn technologies that link to each other. Do not learn 5 different frameworks that do exactly the same thing. Use your time efficiently and match your learning to what you want the next step in your career to be. Luckily for you, if you are interested in web development, there is an amazing GitHub repo: developer-roadmap, which presents you the whole Web Developer Roadmap, in a nice graphic way.
Also, another reason why I have chosen to follow Complete Web Developer in 2020: Zero to Mastery at the beginning of my Web Developer career was that it had a continuation: The Complete Junior to Senior Web Developer Roadmap. Short terms objectives are great but having a long-term vision is even more important. You should continually ask yourself questions like “What am I planning to learn this year?” and “Where do I want to be with my career in 2 years?”. Once you figure out the answers, find the best learning resources and start working in that direction.
I remember when one of my top college classmates told me he received some interview rejections because he had no personal projects. He had always done all the assigned homework and was skillful in a lot of programming languages. Were personal projects that important?
Let’s analyze this a bit further. Two developers with the same years of experience go to an interview and they both answer all the questions. How do you decide between them? Sure, attitude is extremely important, and we’ll talk about it at point 7, but there is another important part (you probably guessed again): personal projects.
Why are personal projects so important? First, they show that you have passion and desire for improvement. Everybody wants a developer that is continually learning and evolving. Second, how can you show an employer that you can write quality code and you know the technologies you list in your resume? Sure, they can ask you at the interview to write a mini-project, or ask you a lot of theoretical questions. But having a decent GitHub account where people can see the projects you've built and the code you write can make things more clear.
But what personal projects can you build? How to be relevant? A good start would be to choose online courses that teach you concepts while also building real projects. For example, in Complete React Developer in 2020 (w/ Redux, Hooks, GraphQL) you learn how to build a complex e-commerce platform from scratch. But wait, is it ok to put the projects built by others in your personal portfolio? As long as you were able to completely write them by yourself, you fully understand your code and you are able to explain it, it is totally fine. Never put things in your resume/portfolio that you do not really know!
When you feel comfortable enough, start building projects that could be used by real people, like a simple presentation site for a business, or a portfolio template to help the community. If you can get paid for your personal projects, that's great, but if not, try to help others. The main goal is to build things that challenge you and improve your skills and value. You might not be paid immediately, but if these projects increase your knowledge, be sure that the next employer will increase your salary!
Oh boy, my college nightmare… I failed my algorithms exam 4 times. Without the help of my classmates, I wouldn’t have even made the exam! If I hated something during college, it was algorithms.
But hey, you said you are a Frontend Developer, do you need algorithms and data structures in those jobs? To be 100% honest, during my junior developer interviews I didn’t encounter them. At my first job, I didn’t use them. However, at intermediate/senior interviews, chances are very high you'll encounter them. Especially when we talk about companies with smart developers, good development environments and high salaries. Also, algorithms and data structures apply to all software developer positions, so if you want to be a top developer, you have to learn them! Why are they important? When we talk about algorithms and data structures, we're talking about complexity and the efficiency of the code we write. Big companies want their code to be fast, to be performant. They are also great for testing your problem-solving skills, which are essential in your day to day activity, especially when becoming an intermediate and senior developer.
Yihua Zhang, the instructor of Complete React Developer in 2020 did an AMA on YouTube from the most upvoted questions from Zero To Mastery students about getting hired and succeeding in your first year where he talks about this topic as well.
After you have all the knowledge, you need more practice. There are so many coding interview videos on youtube, challenge yourself: can you solve them? Another good way to test yourself is by solving challenges on algorithm platforms. Leetcode is a great example. You can code in whatever programming languages you like, they provide test cases and you can compare your time and space complexity to others.
I might have failed my college exam 4 times but I’ve passed my most important algorithm exam by now: the interview. You can do it too!
This is my favorite one. So underrated by many developers, but so important to many team leads and managers.
I know managers that sometimes end their interview after only 5 minutes. Do you know why they do that? Because an interviewee didn’t know how to answer a technical question? No, because the interviewee is arrogant or disrespectful.
Recently, I was chatting with a friend about an interview and he told me he was being asked the “classical stupid behavioral questions”. Do not underestimate the importance of those questions. For my new position, I received one hour and a half of behavioral questions, not from HR people, but from my future colleagues. And you know why this happens? Developers with good behavior and mentality are really hard to find! Master the Coding Interview: Data Structures + Algorithms has a dedicated section for non-technical questions and how to tackle them. I suggest preparing behavioral questions before the interview, introspecting yourself a bit to realize your biggest achievements and weaknesses, it will certainly boost your confidence.
I once saw a post on Facebook by a developer: “I hate working in a team, the others just slow me down. Leave me alone and I can do my job better”. Another friend recently told me about a work colleague that refuses to help him when he has a problem. Do not be that type of person! Do you think Facebook, Youtube or Amazon could be built by only one person? Software development is about teamwork, collaboration, and information sharing. Do not forget that there was a time when you had no idea how to code either. If others had not shared their knowledge, how would you have learned?
There is another terrible mentality that I keep seeing by developers: “I do not have any tasks allocated, so I’ll just waste my time until I receive one”. This is crazy! Don’t you have anything new to learn? No skill to improve? I had an interview at a company that allowed the employers one full working day per month just for individual study, to keep up with the latest technologies. Don't have this attitude; keep improving and use your time efficiently. Have you finished your tasks earlier than expected? Amazing, ask if there is something else you can help with, do some online courses, improve your skills, solve some algorithms, there are so many ways to improve as a developer.
One last thing: do not underestimate yourself! Do you have the word “junior” in your headline on LinkedIn? Why? Let your employer decide your seniority level, it is not only about years of experience! Learn how to value yourself and to highlight your skills.
Congratulations, you made it till the end! Growing in your career is not easy and is not always linear. Sometimes you make progress quickly, sometimes you struggle, this is normal. To be sure you are heading in the right direction ask yourself weekly: “What have I learned this week?”. Even if it’s a small thing, be proud, you are making progress. Just make sure the pieces of information you learn can be linked together at a point. This picture is quite eloquent, making a small progress every day will have a substantial impact within time:
Get out of your comfort zone, stay informed and keep a positive attitude.
If you are interested in web development (and other software development areas), you can check all the online courses I’ve mentioned above at the ZTM Academy. There are so many resources from where you can get your information these days, but you don’t have infinite time. The ZTM Academy courses have massively helped my career move forward, so I can recommend them to you with no hesitation. Andrei Neagoie is an amazing instructor and I can’t be thankful enough for what he’s done for me.
If you have any additional questions or messages, feel free to send me (Razvan) an email at email@example.com. I might not answer immediately, but I’ll definitely do my best to give a useful reply. Also, tell me: what would you like my next article to be about? I would love to hear that!
I really hope you enjoyed this article and that it will inspire your career. If it did, sharing it will definitely boost the chances to inspire even more careers!
Thanks to Razvan for contributing such a fantastic article! If you enjoyed this post and want to get more like it in the future, you can join thousands of developers by subscribing below.