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.

What kind of organisations should a person join at different points in their career?

Senior Software Engineer at Grab profile pic
Senior Software Engineer at Grab

Part 1: Before Joining an organisation

  1. How can one identify the best kind of organisation to join at different point in one's career? I understand that the advice to this question may not be a prescription for all, but how can one identify places that would help them to maximize their learning and growth. For several other people, different parameters may be important for them as well such as work-life balance. Personally, I feel that WLB is dependent on a person more than that on the organisation. Thoughts?
  2. Quite often we feel that growth may be fast paced at startups, but there can be startups that do and don't promote the growth of a person. Given that there is no list out there to check, how can one make the best suited decisions for their career, not landing at a place they should not be at? What kind of research can a person do before joining an organisation?

Part 2: After joining an organisation

  1. Given that a person has joined an organisation, what are the kind of signals that they can identify to see whether the organisation is supportive of their career growth and is indeed the right place to be, for them?
  2. On several anonymous portals, there are people from the organisation that will talk poorly about an organisation when things are not going good for them. Managers can quite often paint a really rosy picture about the place. How do you identify the honest signal from the noise all around?
  3. If you find an organisation not good for you after you join there, how quick is it too quick to leave? How much time should you spend there before you can make a judgement about the same?
Show more
Posted 3 years ago
230 Views
6 Comments

How to write wiki type documents effectively?

Mid-Level Software Engineer [SDE 2] at Amazon profile pic
Mid-Level Software Engineer [SDE 2] at Amazon

Background:

Being pressured to deliver at high speed all the time, my team doesn't seem to value wiki type documentation a lot.

When starting a project/feature, we often have a high level design doc & design meeting to talk about high level infrastructure, and we make key trade-off decisions together as a team. If we are lucky, we get another low level design doc & meeting focused on sequencing of actions & interaction between class level objects.

We rarely seem to go back to our initial design doc after initial design phase of a project to update them and explain the actual final product we built and maybe some additional design decisions we made during implementation.

As a result, documentations are kind of dead after facilitating the initial design review. For legacy projects, high quality docs are extremely hard to come by and most just rely on reading large amount of code to understand how things work (nothing wrong with this but I think high quality documentation can save lots of time here).

I understand we don't want to boil the ocean and write everything in painstaking details, but we should at least have enough to help people understand responsibility of services and contract between them.

Questions:

  • Could you share your view on this topic and how you find your balance?
  • Do you believe it's always worth it to go back to documenting after finishing a project/feature and update it as if you are explaining it to someone new to the team/project?
  • Could you share any resources we might already have on this topic as well?
Show more
Posted a year ago
217 Views
3 Comments

What to do when hired as a SWE2 with 15 years of experience?

Senior Software Engineer at Taro Community profile pic
Senior Software Engineer at Taro Community

I am a 15 year experienced software professional holding H1B. In my last 3 companies, I was a Senior Software Engineer. In my penultimate company, I was due for Staff promotion. Fast Forwarding, I was impacted by layoffs in Jan this year. I had 3 months to find a job in this market. I was applying and passing on my resume through all my network. Most of my applications got rejected quoting they picked another candidate. Some of my applications materialized into interviews , but I ended up not clearing (was in bad form and stress and also didn't get ample time to prepare thoroughly).

Finally, I got my application picked at a company through a referral, but they only considered me for SWE2. I explained them my experience and requested to consider me for SSE level, they said the panel will be open to it. But in the end, they ended up offering me SWE2. I took the offer as I had no choice. I was running out of time and did'nt want to risk rejecting this offer and waiting for a better offer. I took up the offer and joined, but I don't feel happy. I wish I had more time to really choose what I wanted.

I would like your thoughts on how "wise" is it to be SWE2 with 15 years experience. Would my age become a factor for further career progressions as they would prefer younger people? I am confused if I should stick to this, be patient, work smart and work my way up inside, or would it make more sense to keep interviewing and find something that I feel happy about. Look forward to helpful replies or referrals for SSE :)

Show more
Posted a year ago
215 Views
2 Comments

Does coding language matter in interviews?

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

Just curious about opinions here. My main language is JavaScript, and I know people probably assume I am a front-end developer / full-stack (reasonable biases). In reality, I've been primarily backend for several years now. Throughout my experience at Microsoft and Twitch, I've used a fair amount of Node.JS / vanilla JS, then a bit more TypeScript for the CDK constructs we all know at Twitch (our team was primarily responsible for building and debugging Amazon Builder Tools things). I've done the majority of my interviews in JavaScript and it has been mostly OK, since I've used it for so long, but just wondering if it matters.

I used to do my interviews in C++, but then I got burned during a Google interview when my interviewer talked about the inefficiencies of emplace_back vs push_back (I had no idea). After that point, I just decided to do JS because I was reasonably proficient at it, and it is actually faster to write than C++ in a lot of cases (less boilerplate).

The top LeetCode answers / YouTube explanations and such are usually in Java or Python, so sometimes it's also hard to find a good JS answer. I'm leaning towards Python, because it is more like JS and with less boiler-plate like Java, but I'm worried about something throwing out some random trivia about Python that I have no idea about, because honestly I haven't used it much in my career thus far.

Show more
Posted 2 years ago
197 Views
3 Comments

Choosing between a team with interesting work vs team with more potential

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

Hey, I work at a large IT firm (can be compared to Big Tech in the west, similar culture, similar scale of work), currently in the process of switching teams, interviewed with a bunch, ended up with a choice of 2.

The first team has great growth potential (they are young and intensively hiring), and it directly works with money, so it seems like a good place for an SWE to do projects that are meaningful on the scale of a company & to have an opportunity to grow as a manager (more opportunities to pick up an intern, as they hire - to become a mentor of new hires and lead projects with them as a part of my virtual team). They have an analytics team which prospects the important tasks, and when the tasks are done, the results are measured to calculate the profits.

The second team is special in that it deals with the subject area that interests me the most - they develop an analogue of Facebook Games (or ), and it hits home, as I got into SWEing to be a game dev (before I found out they get paid pennies ). This team has less potential for growth, to the point them may have no headcount for an intern, and the hiring of new members will be slower. Also, they do not work with money directly, rather with target metrics defined by business. But they also have an analytics team which proposes the tasks based on the projected metrics growth & they measure profits on task completion, so the aspect of delivering the measurable profits is present here as well.

I'm trying to choose the best team for my career goals - long-term growth from L4 -> L6. As far as I understand, that may be done through team-leading of through tech-leading. I fully understand I'm not going to develop any games myself in team #2, but the fact that the subject area is the one I understand makes me feel like I'll have some morale boost in that I'll have an understanding of usefulness of the tasks i'm doing, as well as I'm seriously considering overworking for the next 1-1.5 years to perform better than peers & grow from L4 to L5, and it just feels like if I have more connection to the area of work, it'll be easier to pour extra effort, opposite to the area which I have little emotional connection with.

But this point about the "morale boost" might just be me wearing the rose-colored glasses, and I may be making a mistake trading a team with better potential for the one with seemingly more interesting scope.

In your experience which is better long-term - the team where work is work, but it's better for career goals, or the team where the work seems interesting, there's less direct career opportunities, but you feel like you are more likely to make your own via being more involved into the project you work on?

Show more
Posted 2 years ago
194 Views
2 Comments

Built a tool to help with interview studying - How can I improve it?

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

It's a combination of spaced repetition learning and interview preparation.

The basic premise is that the better you perform on a challenge, the longer it will be before you reencounter it. If you forget, you will see it sooner.

Users can create and manage a table of questions, track their mastery, and schedule review sessions based on a space repetition algorithm.

Check it out:

  • The features
    • The Grow Table:
      • An editable and filterable table
      • Each record has:
        • Topic.
        • Question.
        • Confidence.
        • Last reviewed date.
        • Next review date (based on space-repetition algorithm).
        • Review count.
      • Clicking on a record gives a more detailed view of the exercise you’re working on.
      • You can rate your confidence, which creates a new review note.
        • It also updates the next review date based on confidence.
        • You can see all of your past review notes, and you can create new review notes.
    • Adjust the space-repetition algorithm based on how long you have for an interview.
      • 1 week
      • 1 month
      • 3 months
      • Custom
  • The use case it was meant to help with:
    • The goal is to help you pass your technical interviews by using spaced repetition to focus on exercises that are difficult for you.
  • Tech stack:
    • NextJS
    • Shadcn/UI(radix UI + tailwind CSS)
    • Supabase for backend

I have more features in mind, but for speed, this is the initial feature set that I plan to release the application with.

Show more
Posted 2 years ago
192 Views
8 Comments

Assigned too difficult work, what can I do?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

I'm mid level, new to the company.

I got assigned a chunk of a bigger project owned by a staff level engineer, let's call him X, who has worked on the product for a long time and has a lot of context.

Things that were new to me: the language, the tool chain, product context. The codebase is several years old.

My skip level manager (1 level above my direct manager) once encouraged that I should aim to finish my work in less than 2x the amount of time it would take X to do it (but besides this I received no pressure, or reminder to push for this target from managers).

This was overly ambitious. I worked longer hours and harder than anyone around, including weekends but still could not finish it in 3x the amount of time initially estimated.

The staff engineer overestimated what I can do too. He's very willing to explain but I had a hard time mapping his high level explanation to what happens at the code level.

I could not tell if the standard here is high or the task is too hard. So I leaned towards putting in more effort rather than voicing my concern.

I also did not have a good sense of "are these unknown parts of the code base grok-able with a little bit of time or do they require a lot of time?" to estimate time spent up front.

In the end I got some barebone thing out and he took over. Still took him a couple more weeks to get the thing finished. Along the way he solved some problems I'm sure I have no chance of solving in that timespan.

With this evidence I was sure the task was legitimately too hard for me and was comfortable letting my manager know my opinion.

Back up a little bit, when I started working on the project, my manager knew I could not stick to the original timeline set by the engineer and encouraged me to take my time to learn the codebase. What is puzzling is my manager did not tell the engineer about this unrealistic estimate. The engineer reports to a different manager and has been around way longer than my manager.

Maybe there is some politics going on that I'm not aware of.

Anyway this has been a very stressful experience.

What could I do better? What should I do to mitigate any harm done through this experience?

Show more
Posted 2 years ago
189 Views
2 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