Profile picture

Mid-level Engineer Career Development Videos, Forum, and Q&A

How A Mid-level Engineer Can Grow Their Career

Mid-level engineers have very strong technical proficiency, able to execute on small to medium-sized projects with minimal hand-holding, leveling up from junior engineers.

Is there a way to "grind" system design or soft skills?

Mid-Level Software Engineer at Twitch profile pic
Mid-Level Software Engineer at Twitch

I'm not sure exactly how to phrase this, but to give an analogy, I love card games (ex: Legends of Runeterra, Race for the Galaxy, Hearthstone, etc). There are a fixed set of rules and a fixed set of cards. I can "grind" games and get better by noticing patterns, picking up new strategies or tactics by playing against a diverse set of players. The outcome of an interaction is usually idempotent (i.e. card 1 interaction with card 2).

In real life, things are quite complicated. Asking a certain question in a certain way to person 1 and person 2 may give wildly different responses, and may even depend on your mood, their mood, your tone, time of day, etc. It's super messy and unpredictable.

I also feel a similar way about system design. The nearly infinite possibility of inputs, outputs, TPS, throughput, scenarios make it difficult to reapply the same set of rules to different scenarios. This is just talking about one component, when we bring in N components, the interaction gets very complicated and the "rules" change" case by case. I'm sure it gets better with practice, but I also feel I have a limited opportunity to learn or practice these on the job.

Has anyone found a way to structure these learnings in terms of a repeated "grind", because oftentimes I feel overwhelmed and don't know where to start. This is a complicated question, so answers regarding either a) soft skills or b) system design separately I will treat as valid answers.

Show more
2.1K Views
5 Comments

How to be more productive working from home?

Mid-Level Software Engineer at Grab profile pic
Mid-Level Software Engineer at Grab

I have been working from home since 2020. From 2020-2021, I used to work in a healthcare startup with lots of responsibility, tons of work, crazy deadlines and needed to firefight incidents on a daily basis. The managers used to keep us on our toes and everyone was expected to put in more hours than the standard 40 hours/week. I was pretty much working most of my waking hours so productivity was not my concern. I did learn a lot but eventually burnt out.

I took a year off to do my masters and joined my present company in June 2022. It's a much bigger company with amazing culture, clear processes and I have very supportive and brilliant teammates. No one micromanages me. There is still good amount of responsibility and tons of work. In this environment I also want to give my best. While my productivity is great when in office, I do feel I am at 70-80% productivity level when working from home. We follow a hybrid model where we go to office twice a week.

Being in rent crazy Singapore, I do not have the luxury of having a separate office space at home. I do have a proper desk setup and enough things going on to be productive.

I want to be more productive in days I am WFH.

Have tried keeping up a schedule, wearing noise cancelling headphones, listening to binaural beats.

But nevertheless I do find myself on my bed after a couple of hours of work and it becomes difficult to resume work again. Also I tend to be hard on myself for taking that rest and the day just spirals from there.

I have tried working from cafes and even going to office every day. But along with going to gym, commutting and cooking healthy food I am too tired at the end of the day.

I really want to be more productive when WFH so that I can also manage the other parts of my life well. My team doesn't care where I work as long as the work is done.

Would like some tips on how to be a better remote worker and manage the entire day better.

Show more
723 Views
5 Comments

Learn About Mid-level Engineer

A mid-level software engineer has all of the foundational technical skills, industry knowledge, and practical experience that allows them to contribute to software projects. They can collaborate with cross-functional teams, handle complex tasks, and demonstrate a deep understanding of the technologies they work with.
A mid-level software engineer can demonstrate a certain level of technical proficiency and independence. They should be able to handle most bugs without needing constant guidance. They should also be able to independently implement features with medium complexity. It is the level where one becomes less reactive and more proactive. Proactivity means anticipating where bugs may show up as well as suggesting improvements in the codebase. They should have a high standard of code quality and high velocity of code velocity.
The journey from a junior to a mid-level engineer is a significant step in one’s career. It’s important to focus on developing the skills necessary for the next level. This shift involves being able to write code to being able to write better code faster. One should be able to understand systems, plan out projects, meet deadlines, and occasionally function as a lead to make the transition. They should also be improving their communication skills during this period and seek feedback on their work from more experienced software engineers.
The transition from a mid-level engineer to a senior engineer involves a deeper mastery of technical skills, leadership capabilities, and a complete understanding of the software development lifecycle. Senior engineers are responsible for making high-level architectural decisions, guide the technical direction of a project, and mentor junior and mid-level team members. Collaborate with your manager to develop a formal growth plan. Take the initiative to write the document yourself and discuss it with your manager. One should be able to recognize gaps that a mid-level engineer has so they can improve them: writing more code rather than reviewing code, not being available to help out during big incidents, or only dealing with one’s own code. By focusing on these issues, you will be able to exert your influence more broadly across your team and company. You should also consider mentoring some of the more junior members on your team to help them grow and develop their skills.
The journey from a junior engineer to a mid-level engineer or a mid-level engineer to a senior engineer involves a continuous process of learning and refining one’s technical, communication, and leadership abilities. One should strive to have more and more impact and influence across their company to have a successful career progression.
Show more