Your first year as a software engineer
Break out of being a Junior in less than a year.
Congratulations, you got your first software engineering job!
It is time for the real adventure to begin. 🔥
My story 🤝
Let me begin by telling my story summarized as inspiration.
I dropped out of high school back in 2020, landed my first developer job in July 2020, and started out as a Junior Frontend Developer.
I worked hard. After about 6 months of working I started asking and pushing to get to the next level, which was mid-level in my case, just Frontend Developer.
After 10 months of working, finally, I got promoted. I became a Frontend Developer.
I was relieved because I knew I won't be seen as a Junior when I'm looking for my next job. What's even better, my resume looked nice, how quickly I got promoted, being seen as someone who grows quickly and learns fast.
I broke out of being a Junior in less than a year, but I didn't have this article! I made a lot of mistakes, and could have done things much better from the very first day! 😤
Being a Junior developer 🤔
Being a junior developer is normal. It is fine. We all started somewhere. It is nervous and the imposter syndrome strikes quite hard, seeing at work how far everyone is ahead of you, and how others are understanding things during conversations that you have no clue about.
It is tough as fuck. You may feel worried you're not doing a good job, being a pain to your teammates or you didn't deserve the job.
Let me tell you one thing: Don't be worried, your team understands that you're new, and they should be there to help you and answer any questions you have.
I used to tell myself: You may be a Junior now, but very soon you will get promoted and move up like a force the world has never witnessed.
Although, I'm a very ambitious and optimistic individual.
The approach 💪
I know we're all different. We live different lives. Not everyone has time to code and learn outside work i.e. if you're a parent transitioning into tech.
I'm not expecting you to put any time outside work. I want this article to be inclusive, and for anyone to be able to break out of being a Junior in less than a year.
This is the BEST guide you will ever find on becoming a mid-level developer. 🚀
The breakout 😍
Let's break out!
Ask like crazy. If you don't understand something, feel confused or doubt your understanding of something, ask right away, don't wait for a second thinking I will probably learn this later anyways.
This is something will bring up when I talk about the engineering diary, but take notes of the questions you asked. You don't need to write down the answer, do it if you wish, but you should write down the questions you have asked. This will keep you in check how many questions you have asked and let you see what you've learned.
Don't shy away, interrupt if the discussion is moving quickly and ask your team to clarify whatever you didn't understand!
1:1s with your manager 🕺
You want to have weekly 1:1s (one-on-one) with your manager. During this meeting, you can talk to your manager about anything.
Points I recommend y'all to have during this meeting:
- How are you feeling?
- What work did you do over the past week and what challenges did you encounter?
- How much have you collaborated with the other teammates?
- What goals can we set for the next couple of weeks for you to learn or work on?
- Do you understand what you're working on and why it delivers user value?
- Is there anything about the product, domain or our customers that you want to learn? Anything that you're confused about?
It is good to have a document where you and your manager and writing down the things you discuss during this meeting. 1:1s are a great way to track how you're progressing. Use them wisely.
1:1s with teammates 🏄♂️
When you first join the team, it is good to set up a meeting with each team member. Getting to know the members and their stories, how they joined the company and team, and why they are passionate about the mission y'all have.
I strongly advise you not to just chat away, but use this time to learn more about the product and domain!
Questions you can ask each teammate:
- Could you show me a bit of the product? What's your favorite part of the product and why?
- What do you like about this industry? What about it excites you?
- How long have you been at the company and how has your time been here?
- Is there anything you dislike about the product? What change would you want to see in the product?
- What is your favorite thing about this company?
You can ask these questions, and not just get to know your teammates, but increase your knowledge of the domain, product and customers.
This will help you grow quickly and stand out already.
Company values 🧘♂️
Learn about the company's values. Values the company tries to live up to.
Learn about the company's values, ask questions about them and ask for examples! This is also great to do in 1:1s with your managers and teammates.
You want to live up to the company's values, and you want to try bringing them up in conversations as well. This will make you stand out immensely, because it isn't something that is often done, and it is done by you, as a Junior, that will be lit!
Strive to live up to the company's values, show them and bring them up in conversations.
Engineering diary 📖
Keep an engineering diary. Every day 15 minutes or more before the work day ends, write down how things went.
I recommend doing a daily, weekly, and monthly diary. A reflection of the day, week, and month.
This will help you grow like crazy and keep track of your work, which you can also bring up later when pushing for the promotion.
It will help you grow because reflecting on what you've done will help you find gaps and see what you could've done better.
Questions you should answer for yourself:
- What did I like about today?
- What did I not like about today?
- Do I have any questions that have NOT been answered?
- What would I have done differently if I could start the day over?
- How many questions did I ask?
You can do this every day, week and month. You may want to tweak the questions depending on if it is a daily diary, weekly or monthly one.
Use your time ⏲️
You're working 8 hours every day. Use this time wisely. I recommend using your calendar effectively.
For an instance, going back to the engineering diary, block out 20 minutes at the end of each day just to fill out your diary. This way you never forget it nor run out of time to do it if you've an appointment after work.
It is also good to block out time to work focused, and find time when you can pair code with your teammates.
Use your 8 hours at work effectively, don't let them run out.
Pair coding 👥
Pair code a lot, especially with those who are more experienced than you!
This will help you learn so MANY things:
- The codebase
- Working more effectively with the code
- Learn more about the tech you are using
- Learn more about the product
- Learn more about the domain
Don't forget, ask a lot of questions when you're coding with someone else, don't just let time fly just to realize you had a few questions you wanted to ask.
This is the best way to stand out as a junior developer. Learning more about the domain, and using the terminologies within the specific domain in conversations and meetings.
You may wonder like I did, what on earth is a domain?
Domain is just another word for field or industry. For an instance, if you're developing software that doctors will use to interact with their patients, you're in the healthcare field/industry/domain.
When we say domain-knowledge, it means the language and knowledge around that domain.
It makes you stand out greatly by using terminologies your customers are would be using in conversations, but also when you're writing your code, making sure to use these terminologies. If you do find any code you don't understand what it is doing, ask right away and be sure you understand what it does. Sometimes code may not have been well-written, and should be refactored to be expressed in a clearer way.
Let's take the concept of the "car". Depending on the perspective, it can be used or it can be a subject of various activities. What are exemplary contexts?
- Transferring (logistics)
One word can have many meanings.
Reading books 📚
Read books. They will help you acquire knowledge that will accelerate your learning and collecting of experience.
Don't worry about which books you should read, I got you covered!
Over the next 12 months, I want you to read at least 6 books. Feel free to read more. Block out 15 to 30 minutes daily for the reading. Reading 15 minutes every day should be enough to get a book done every other month.
The 6 books I recommend you read over the next 12 months at least in order:
- Clean code
- The Pragmatic Programmer
- The Software Craftsman
- Refactoring: Improving the Design of Existing Code
- A Philosophy of Software Design
- Code Complete: A Practical Handbook of Software Construction
If you've time or want the 7th book, I recommend Extreme Programming.
I've read over 50 books within the software engineering space. Yes, many weren't good. The above books mentioned in my opinion are books containing golden knowledge that will set you so far ahead of many others.
Run after challenges 🏌️♂️
If you want to break out of being a Junior in less than 12 months, you gotta grow. If you want to grow, always run after challenges. Run after the zones where it is uncomfortable, where you don't know what's going on, where you're forced to ask a lot of questions and struggle!
This is my biggest regret. 😭
I could have been promoted sooner I think if I wasn't too scared and always strived to run after challenges. Be hungry and have a strong will for wanting to be uncomfortable.
If you find yourself knowing what you're doing and things are getting too comfortable, that is a sign you gotta hunt for the next thing quickly that will make you grow and learn.
Being uncomfortable means you're in the zone of growth.
Use your 1:1s with your manager wisely, and during those meetings, you should plan the zones of growth you want to be in over the next couple of weeks.
Pushing for mid-level 🤩
After 6 months of working hard, of grinding, you gotta push for mid-level. You can begin by asking your manager:
- What do you think of the past 6 months?
- How have I progressed?
- What is left for me to become a mid-level developer? What do you think is missing?
- What should I work on for the next 3 months?
If you don't take initiative and push to become a mid-level developer, it is gonna take a long fucking time.
But if you push for it, show that you're eager and that you ain't about wasting your time, you will get it! 😁
It is possible to stop being a junior developer in less than a year. It all boils down to how you approach it and use your time during work.
How bad do you want it!? 😈 🔥