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.

Interesting Dilemma: Working in a Legacy team can be good if there’s room for ambiguity.

Mid-Level Software Engineer at Taro Community profile pic
Mid-Level Software Engineer at Taro Community

I keep on getting comments to move to the latest technology and I’m a little annoyed because based on taro blogs what I hear on here is that whoever is saying this is saying prioritize teams with scope and latest tech can be and seems to be a easy way to get scope. Even with the AI wave for example LLM apps are really business impact driven but it’s not gonna make me outdated as a backend dev.

More context in my team as a case study:

My teams goal is to make most of the users migrate to our new ui hosted on cloud but the legacy ui both our third party legacy and the legacy ui that the rest of the company makes more money is cumbersome.

Theres effort to change it due to a lot of tried and true working proof of concepts for our team since our team didn’t have the baggage of working with that legacy system that the rest of the company works on as an acquisition team. We have some other legacy offering we got acquired with that has some other strategic value to modernizing the company wide legacy. We are migrating both sets of users.

The dilemma I have is that I speak to these in office folks who work on the legacy system that’s honestly spaghetti and I can’t help but think I should want to work there cuz it will teach me fundamental skills. And I need to not get hung up on the fact that it is legacy and old technology.

The concepts are so proprietary not transferable but I have a strong feeling I could get in there create impact and when I switch jobs add the keywords to the resume and explain how I problem solved and handled ambiguity in the interview to show I am employable in a tech stack that’s more common going forward.

I am even looking at our tech stack as a whole and I am starting to think yes what we will do will solve a lot of the problems about this legacy system both the third party legacy that we own and the company wide legacy that makes the company money. But I just can’t help but think okay modernization into the cloud can be good but it must be for good reason. I’ve heard stories of this getting screwed up before because of bad system design.

Idk is this a sign I’m starting to develop mindset shifts? Idk it’s obvious to me after reading all the taro blogs that whether you’re in the latest tech or not does not matter. What matters seems to be that the tech should have scope for ambiguity. Only then In the context of career growth you’re set. Is this a correct understanding?

Show more
Posted 15 hours ago
14 Views
1 Comment

Should I join Google for a higher-paying job but less interested in?

Mid-Level Software Engineer at Taro Community profile pic
Mid-Level Software Engineer at Taro Community

I’m currently working as an L4 Machine Learning Engineer at a mid-sized public company, and I’ve recently finished L5 SWE interview with Google and am now in the hiring committee stage. The recruiter told me that my interview performance was mixed, so the chances for L5 are small, but L4 is possible. According to , I’m expecting around a 20% salary increase (and, of course, Google’s other benefits are much better than those at my current company). However, the new position is for a SWE role working on hardware products, which involves writing C++, a completely new technology and field for me.

Reasons for wanting to stay:

  1. I have a good relationship with my manager and teammates, and the work is more interesting and aligned with my strengths. If possible, I still want to continue working as a Machine Learning Engineer in the future.
  2. I’m working on software side projects and writing a blog, and I’m worried that after joining Google, these external projects might be restricted.

Reasons for wanting to leave:

  1. Better salary and benefits, and a higher salary ceiling (it’s almost impossible to reach FAANG L5-level salary in my current job).
  2. I was previously a Googler, so I’m familiar with Google’s culture (though I was laid off in 2023).
  3. I have a poor relationship with my current skip manager. We have many technical disagreements, I don’t adapt well to his management style, and he has a negative impression of me.

This position is not in the U.S., so the chances of being laid off again should be lower (but who knows).

How should I evaluate these two options?

And, since my skip manager has a negative impression of me, should I actively look for other jobs, even if it's not Google?

Show more
Posted 2 days ago
23 Views
2 Comments

How to get unstuck in choosing companies to work?

Entry-Level Software Engineer at Taro Community profile pic
Entry-Level Software Engineer at Taro Community

I am trying to change my job to a midlevel-senior engineer position and not wait for promotion (which is hard to come by, in my case) and grow in my career, compensation and find a better environment with a better work life balance. My ethics play an important role in my life. In the past month, I have gotten 3 offers- 2 from start ups and 1 from a big tech acquired startup. I rejected all the three. The startups because i felt the chaotic and high stress environment might not be good for my mental health. And the big tech startup one which paid the best and had a great work life balance, with a great environment- everything i could ask for, but it was in the business of something i do not condone due to my value system. Hence i felt conflicted with many second thoughts, hence i rejected. Now, I have 2 upcoming interviews with big tech companies which are famous for having difficult work life balance. But i am determined, if i get any of them, I will accept. I am also open to midsized who will sponsor my visa, but those kinds are hard to convince for the visa. I have 5 months after which i will be financially and reputation-wise desperate to have a job. The problem is that i feel terrible for rejecting the offers. I feel i have taken a big risk. People tell me i should have accepted the best offer but all of them mostly came with a monetary commitment to join and work for at least a year due to high visa fees. So i could not just accept and take the next best opportunity. How do i work with this situation emotionally and strategically?
Context-
SDE1 at Amazon (on focus which i am failing purposely since i don't want to continue there)
Trying to change countries. Offers from the country i want to move to.

Show more
Posted 7 days ago
39 Views
2 Comments

Tradeoff between clarity and technical performance in live coding sessions

Mid-Level Software Engineer at Series B Startup profile pic
Mid-Level Software Engineer at Series B Startup

When I code, I have a few habits that make it difficult for someone to follow:

  1. I frequently jump between functions and files, even if the one I wrote isn't finished.
  2. When working through my code, I often find it better to run the code to find and fix syntax issues instead of diligently reading line by line.
  3. I often use a random variable (could be the correct one or wrong one) as a placeholder while I type out the logic for some snippets and then update the variable to be the correct one after.

Although disorganized, I find this method makes me the most productive. I am detail-oriented, write test cases, and often refactor so although my methods are disorganized, my code is not. You may disagree, but for this question let's assume the tradeoff is: ease to follow vs output

This behaviour has negative consequences when someone watches me code. During pair programming I don't mind slowing down since high output isn't the objective and my abilities aren't being judged, but I struggle with deciding how much to slow down in live coding interviews. If I code in a more organized way and slow down to make my coding easier to follow, I would have less output. In a white-boarding interview it could mean the difference between a working solution and non-working solution. In a live coding exercise it could mean the difference between getting through all the iterations of a question/task or not.

I am looking for input from interviewers, or scatter-brained devs like myself, on tips on the habits and tradeoffs to make when coding live.

Examples of things I am thinking about

  1. Is there negative signal from frequently debugging over proof-reading code, and if so is there some threshold?
  2. If you're someone who has interviewed others, do you think there is a way for a candidate to be more disorganized but still clear. For example, if someones goes over the high level approach and says "I am now going to code out the rough happy path, it will take me a few minutes as iron out the syntax and refactor as I go", then I plug away, and afterwards, do a quick walkthrough of the completed code?
  3. Which would generally get a better score in a live coding interview? Fully implemented and hard to follow, or easy to follow but not finished?

Thanks!

Show more
Posted 8 days ago
17 Views
1 Comment

I have terrible attention to detail - how can I fix this?

Entry-Level Software Engineer at Taro Community profile pic
Entry-Level Software Engineer at Taro Community

I am a mid-level engineer at an HFT company. I've been with my current company for around 7 months and another similar one for 2.5 years previously. My biggest career issue so far has been poor attention to detail, which leads to me to always miss small mistakes I make.

For instance, I always review my own PRs myself before sending to reviewers, and clean up plenty of issues I notice myself. But then my reviewer will point out some kind of bug, or something I forgot to do, and in retrospect it will be immediately obvious to me. Alex often mentions the importance of being able to get most of your PRs accepted in one attempt, but for anything > 30 lines this simply feels like a pipe dream because I am so terrible at noticing things until it's too late.

(For the record, I'm very thorough with test coverage, but when I simply forget to implement something, I of course forget to test it too).

Another more specific example is that our process of verifying features in production is sometimes a bit involved, and requires changing config in several places. I knew what to change, did so and tested everything, then told my manager the feature had been verified. Later on he was looking at the configs (not sure whether he did it to check my work or for some unrelated reason) and pointed out that I did not actually set everything as I intended to, and therefore the feature wasn't verified correctly. I realized mistake I made (ran a command to change a bunch of files in the wrong directory) but only after the fact, and it cost me embarrassment and extra work.

I think I'm quite good at the other aspects of software engineering: coming up with impactful ideas and executing on them independently, picking up domain knowledge and areas of the codebase quickly, fixing bugs (my own or others'), presenting on my work, etc. So I've been able to eke out "meets" and even "exceeds" reviews at my first job because I had significant impact despite blundering all over the place.

But my deficiencies in this area make me fearful for my career, as I am always worried about making just enough mistakes to get PIP'd or fired. Furthermore, we don't have levels here, but I doubt I can make it to the equivalent of Staff or even the senior level with this kind of defect.

Does anyone have advice on how I can "train my brain", as it were, to improve at this ASAP and make sure I don't go down the wrong trajectory? Thanks!

Show more
Posted 12 days ago
139 Views
6 Comments

Thoughts on cursor.ai IDE

Mid-Level SWE at Taro Community profile pic
Mid-Level SWE at Taro Community

Cursor is an AI first IDE that's been blowing up on twitter recently. I've found it incredibly helpful in increasing the speed of coding especially because it's autocomplete is genuinely one of the better ones ive seen. It's not exactly implementing logic but it's basically autocomplete on steroids

If you edit a variable name it automatically prompts you to hit tab to do edit the names of the other variables of if you do something like change a list to a concatenated string it'll start prompting you to edit references to that variable to instead work with string based logic

It not only adds code it also knows how to delete code, so if you delete a variable it can prompt you to delete other lines of code using that logic. It also seems to follow context from other files so it can remember your past edits and use it to make future edits. The best way to describe it is just feels like it reads my mind 80% of the time

After seeing Ryan Peterman (who I have immense respect for, truly cracked engineer) also talking about it, I'm curious to know people's thoughts on it

Also hearing people talk about how the new o1 model is already being a lot better at coding, the direction things are headed I would assume in 1-2 years there's gonna be cheaper lightweight versions of o1 that can help us with more nuanced coding tasks

After trying Cursor, I realize the value of 80% of my technical skills dropped to zero. The leverage for the remaining 20% of skills went up by at least 10x.

Show more
Posted 16 days ago
42 Views
1 Comment

Communicating and Asking Questions with Seniors Who Lack Strong Technical Skills

Mid-Level Software Engineer [E4] at Meta profile pic
Mid-Level Software Engineer [E4] at Meta

I’ve gone through Taro's courses on communication and asking questions, which were insightful, especially in showing how juniors can learn from senior engineers with deep expertise. However, as an MLE, I face different challenges and would appreciate some insights or thoughts from Alex or Rahul.

For context, I majored in math and hold an MS in ML from a top 3 university, so I'd say I have a solid grasp of both the mathematical and practical aspects of ML. Machine Learning can be deeply mathematical, often requiring formal training to fully get it. Some SWEs who transition into MLE roles may lack this foundation, and while they might have been excellent SWEs, the gap in math knowledge can hinder their abilities as MLEs.

Here are a few challenges I face with some SWE-to-MLE seniors:

  1. Sometimes, my tech lead asks questions that suggest a lack of understanding of ML basics. While directly correcting them doesn’t seem right, what’s the best way to handle this?
  2. This becomes a bigger issue when they set project goals that are mathematically infeasible. Without a strong math background, they rely on intuition, making it hard to guide them away from misguided directions.
  3. Their informal grasp of ML can also complicate design documents by introducing unnecessary features that don’t align with the project’s objectives.
  4. As seniors, they can get defensive and dismiss alternative ideas, which is frustrating, especially when I would need to work on a project with a high risk of failing.
Show more
Posted a month ago
74 Views
1 Comment

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