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.

Mid-Level Software Engineer [61] at Microsoft profile pic
Mid-Level Software Engineer [61] at MicrosoftPosted January 18, 2025

Is Investing in a High-Cost Android Course Worth It for Career Growth?

I’ve been working as an Android developer for four years and have contributed to two major Microsoft apps with 10M and 1B+ downloads. I also published a small app on the Play Store in just a week and have invested in improving my skills by reading Android-related books and taking courses. With this background, I felt confident about my expertise and began applying for Android roles. However, I faced multiple rejections during interviews. The interviewers focused heavily on the internal workings of Android APIs—details beyond my practical usage, like understanding the mechanics behind coroutines rather than just knowing how to use them. Recently, I came across a course by a highly experienced Android instructor (10+ years) who has transitioned to full-time teaching. His demo session stood out because of its focus on internal details, experiments, and case studies. It resonated with me, and I believe it could help me not only crack interviews but also become part of the top 1% of Android developers globally. The challenge is the cost: ₹40,000 upfront (25% of my monthly salary) and ₹2 lakhs (10% of my annual salary) after securing a new job. It’s a significant investment, and I’m wondering: Is it worth taking this course given my situation and goals? Are there more cost-effective alternatives to achieve the same level of expertise and confidence for interviews?

51 Views
3 Comments
Mid-level Software Engineer at Taro Community profile pic
Mid-level Software Engineer at Taro CommunityPosted April 2, 2024

Thoughts on recent xz open source incident?

Any thoughts/reflections/lessons from the recent incident? TL;DR of the incident (generated by LLM and verified by me) The xz backdoor news refers to a critical security vulnerability discovered in the XZ Utils, a widely used compression utility in many Linux distributions. This vulnerability, identified as CVE-2024-3094, was found in versions 5.6.0 and 5.6.1 of XZ Utils. It allows a malicious actor to bypass SSH authentication and gain unauthorized remote access to Linux systems. The backdoor was introduced by a contributor using the pseudonym Jia Tan, who had been involved with the xz project for two years. The discovery of this backdoor has raised concerns about the potential for other undiscovered backdoors in earlier versions of the library and the implications for the security of Linux systems that rely on this utility. The backdoor was first detected by Andres Freund, a Microsoft engineer, who noticed an unusual delay in his SSH login time, which led him to investigate and uncover the malicious code in the xz utility tarball used in Debian installations. The malicious code was designed to interfere with the authentication process in SSH, a protocol used for secure remote logins, allowing unauthorized access to the system. This vulnerability has prompted urgent responses from the Linux community, with distributions like Fedora, Debian, and openSUSE advising users to update their systems or revert to uncompromised versions of XZ Utils. The incident has highlighted the importance of vigilance and collaboration within the open-source community to identify and mitigate security threats. It also underscores the potential risks associated with upstream supply chain attacks, where malicious code is inserted into widely used software components, affecting numerous downstream users and systems

50 Views
2 Comments
Mid Level SWE at Taro Community profile pic
Mid Level SWE at Taro CommunityPosted January 10, 2025

How to efficiently debug pipelines?

I work a lot in Python with ETL pipelines. A lot of my workflow goes like this: Work in jupyter notebook to prototype a pipeline. pipeline looks like this data = loaddata() a = transform(data) b = transform2(a) c = transform3(b) savetoDB(c) Now in notebooks due to the REPL like interface, I can pause between agg3 and DB save, check data looks good, then continue. sometimes I notice theres a bug in agg3 so then I update the method in agg3 and continue. Each aggr is an expensive operation so i want to minimize the amount of steps done Now here is the issue I need to: convert this to python scripts to integrate into existing workflows/productionize. Clean up the code Now my python workflow looks like this def load(): pull data def transform(data): a=aggr1(data) b=aggr2(a) c=aggr3(b) return c def save(data) updatedb(data) def main(): data = load() data = transform(data) save(data) Note: i am explicitly keeping functions minimum in notebooks. Because if theres a bug in aggr3, I need to run the entire transform function again. This is because if I define a variable b in transform, then once that function executes, I cannot access "b" variable outside that scope. (lmk if i need to clarify more here) Now I sanity check this before pushing to main 2 things I need to verify: run with large amounts of real world data. As always theres a bug when running with large amounts of data at step b=aggr2(a). Sometimes the bug ONLY happens with large amounts of data. When going from notebook prototyping to productizing into real production workflows there is some edge case I forgot to account for But then if I want to verify, I need to run the whole script again which takes a lot of time and compute. How do I avoid this? I want to minimize the amount of time spent running code not needed TL;DR. in python specifically, I am able to protype fast in notebooks due to REPL like interface, but debugging scripts is tough due to inability to go back and forth within a script. I am not talking about just adding breakpoints because you cannot go back Basically: I am having issues isolating certain parts of code in production pipelines where I need to be careful with how much code I run Note: things are obv simplified here. In reality transform might have 15/20 different steps

50 Views
1 Comment
Entry-Level Software Engineer at Taro Community profile pic
Entry-Level Software Engineer at Taro CommunityPosted October 4, 2024

How to get unstuck in choosing companies to work?

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.

49 Views
2 Comments
Mid-Level Software Engineer at Taro Community profile pic
Mid-Level Software Engineer at Taro CommunityPosted December 6, 2024

How Can I Improve My Problem-Solving Skills and Prepare to Thrive in a Mid-Level SWE Role?

I’m an engineer with two years of experience working on a backend team at one of the major US banks. Unfortunately, I feel like I haven’t been learning or growing as much as I’d like in this role. I’ve been primarily tasked with DevOps/infra work and handling observability, which has limited my opportunities to write meaningful code and build my software engineering skills. I’ve tried to move internally to a more development-focused team, but it hasn’t worked out, and I’m feeling frustrated with my current team and manager. Sometimes I worry that my skills are below the level expected of someone with my experience, especially when it comes to writing quality code and solving problems efficiently. For the past three months, I’ve been preparing for interviews and targeting mid-level software engineering roles, including positions at Big Tech and other promising companies. However, I’m nervous about whether I’ll be able to thrive if I land a new role, particularly since metrics like code velocity and code quality are often emphasized at this level. My question is: How can I improve my problem-solving skills as a software engineer while balancing interview preparation? Given that I haven’t had many opportunities to code at work, or tackle problems independently what strategies or resources can I use to ensure I’m ready to succeed in a mid-level role? I’d appreciate any advice, resources, or strategies from others who’ve faced a similar situation or transitioned successfully into a more coding-intensive role.

47 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