Home

How I Went Through the Junior Software Engineer Phase

By Taufiq on May 11, 2024
Thumbnail: Children with Laptop. Source: https://pixabay.com/id/photos/anak-anak-menang-kesuksesan-593313/

This is just a story of how I went through the junior software engineer phase. Just a story.

Interview

My first job did not really have an interview process, it was in the early stage of startup, a small team and they just needed someone to help them build the product. I joined them as a freelance software engineer, and everything went well, 3 months later, they offered me a full-time position.

But 9 months later, I tried to find another opportunity as I wanted to learn more about software engineering but also in a different industry. I applied to some companies and got some interviews.

I had interviews from 3 different companies - all of them a startup but in different industries. One of them is Ruangguru - an edtech company, that, I ended up joining as a backend engineer.

The interview I had with Ruangguru was challenging but at the same time, I was kinda lucky, I can go through it very well as the questions they asked me were something that I mostly dealt with in the previous company. It is about system design and some about experience I had before.

Learning by Doing

For the most part, I acquired new knowledge about technologies and software engineering practices by doing. I learned about TDD, CI/CD, microservices, event-driven architecture, and many more by doing it in the project. Even before I joined Ruangguru, I didn’t know about Go and never used it before, but I learned it by doing it in the project.

On some 1:1 I had with random people on the Internet, sometimes they asked me about this thing. Do you need to learn a programming language or a technology before joining a new company? Some might be yes, but in my experience, it is not necessary, as long as you know the fundamentals of software engineering so it is not hard to learn new things. But of course, you need to tell the interviewer that you may need time to learn it.

But also, this is not a reason to not learn new things - you still need to read, watch and learn. It is just that, sometimes, what we learn does not match with company needs.

Proactive

On routine 1:1 with my manager, I always tell them that something can be improved for our development process.

For example, we need to do a code review and someone needs to approve a merge request before they can be merged. That process sometimes becomes a blocker for us, as we need to wait for the review - it is something that I realize, we need to improve this as a team. So I told that to my manager and we discussed the solution that maybe can improve the situation.

Another example, I also love to throw ideas about system design when we discuss new features, even as a junior back then. I am really happy that my colleagues and manager listen to my idea - even though sometimes it is not the best idea… the most important thing is discussion sometimes arises from that.

Another example, I also love to throw myself into a problem or new responsibility. You can read the TDD story here.

Proactive Asking 1:1

There is a routine for 1:1 with the manager, usually once a month. But outside of that, I also ask my colleagues and seniors for 1:1. As a junior, I don’t have many experiences with careers, software engineering practices, etc. So I ask their advice, their experience, their opinion about something related to that.

But something to take note, I usually already build a relationship with them before I ask for 1:1 and I think that is an important thing to do.

Asking for Feedback

On 1:1 with managers or colleagues, usually, the first thing I ask is their feedback about me. It is on 1:1 session, so I think in that time, we can be honest with each other. Especially when you are already building a relationship with them - and again, I think that is important.

Throw Comments on Merge Request

Glad that my company allows every engineer to do code review - not only manager or senior. So I throw comments on merge requests that I think can be improved. But the most important thing is, I am always open to discussion about the comments I throw. I think that is important, as sometimes, I am also wrong and I can learn new things from there.

Asking for Help

I am not afraid to ask for help. I think that is important, especially when you are a junior. I ask for help when I am stuck, when I don’t understand something, when I need advice, etc.

I don’t believe in such a thing called stupid questions and as a junior, I think it is important to ask questions.

For example, I tried to limit my time dealing with bugs or something - maybe in 2-3 hours if I can’t solve it, I always go to my colleagues or seniors to ask for help.

How do I ask? First I tell about the context, then what I have tried, show what I already searched on the Internet, and then the question I have for them. Usually, it is related to a task that I am working on - so in this type of situation, this is very important to ask for help, so you don’t be a blocker for the team.


I think that is all, as far as I remember. Maybe when I remember something, I will update this post.

© Copyright 2024 by Taufiq Septryana | Software Engineer. Built with ♥ by CreativeDesignsGuru.