Staff engineers are extremely vital to any engineering team, viewing the landscape from the overall team charter level instead of individual projects.
I am 8 months in, and there are only two staff engineers on the team.They are pretty demeaning (I find it almost racial, and sexist) and always try and create a bad perspective of me to management. My manager had no clue what I was working on, and she asked me if I consider myself a senior engineer? (I have been a senior for half my career) Only after I was removed from that toxic person's project, I grew and management trusts me now.
I am not a newbie, I have 11 years of work ex and previously worked at a FAANG, where I got exceptional reviews. I am now in a tier 2 company now, and literally anything I suggest to them is po-pooed.
Something as simple as a suggestion to maintain a on-call log as we are ramping up on releasing a new feature, was vetoed against by these two. Our on-call is dumpster fire, with no one knows what is going on expect these two.
Since these two know the technology well, they can get away with any behavior as managers is under pressure and just want this damn feature to launch. Our team is filled with junior engineers and contractors barring a few Senior engineers and these two.
Every task while planning for JIRA starts with "oh this is verrrryyy easy". But it turns out they don't know sh*t and their estimates and providing context is setting me up for failure. I quickly got hang of it, and figured out how to reach my target in-spite of their mis-doings.
They are rude, degrading (only towards me, I find) and are each other's allies. How do I bring it up to a manager without complaining or sounding emotional (I am a women, so its easy to say, I am overreacting by these two, I DO NOT trust them).
I don't want to run away, but stay strong and prove to them and management my caliber. But this also makes it harder to grow on this team.
I have about 5 YOE and trying to grow from Senior -> Staff engineer but noticing that the path is taking longer than I'd hope.
This is the case whether I try to speak to other companies and ask about interviewing at that level or try to grow within my own company.
Within my own company: Requirements unclear, seems to be more time based (just keep on shipping). Since we're on the smaller side, we don't have a clearly defined structure like FAANG.
Externally: Due to the YOE, usually discussion of Staff isn't even an option even though I think I'm doing Staff level work. In fact, they usually decline the idea before even having a chance to explain what I'm working on.
The projects I'm working on span the entire org (startup), I have multiple mentees, and org-wide impact. I will be honest and say that I don't think the projects I work on are necessarily insanely technically complex (not going out to millions of users, dealing with hyper concurrency issues, or needing to deal with large scalability issues), but they do have a large amount of scope and senior+ level management required to run them.
I think from the project management perspective, I have things nailed down pretty well.
So I wonder if I'm either missing...
I'm essentially trying to understand what my gaps might be, and the technical aspect is one I'm unsure about how relevant it is.
Would appreciate any thoughts, especially from Staff+ engineers, maybe sharing what they feel makes them a Staff vs a Senior and how much technical skills play a role vs other elements.
Hello Taro community,
I hope you're all doing well. I have a question and would greatly appreciate your insights and guidance.
Background: I joined the company last year (ex-FAANG) as an L5 level and have been actively involved in developing internal tooling for a new product. Recently, while exploring our growth and levels documents, I came across our internal rubrics that outline the expectations at each level.
Situation: After identifying a gap between my current level and the staff level, I expressed my interest to my manager. As a result, I am now leading a team of five individuals in the endeavor of implementing automation tooling from scratch. This effort encompasses setting up everything related to automation.
While my background is primarily in development, I possess knowledge and experience in quality as well. Given the broad impact automation can have across the company, I am eager to leverage my expertise and make a significant contribution.
However, I am uncertain if my focus on quality within a developer role might put me at a disadvantage when aiming for a staff position as a developer.
I am seeking guidance on how to navigate the path towards a staff role, either by leading projects to completion (quality) within my team (& across) or by continuing to work on internal tooling rather than customer-facing products.
Or should I pivot to product development tasks - How do I navigate this conversation with my manager about this dilemma?
Lastly, how can I show metrics and impact?
I am been working as a Senior software engineer for quite some time now. To move to the Staff level, one feedback/pointer I got was to start developing opinions on how to do certain things. When people start respecting your opinions, they start to see you as a leader.
The problem I have is, in many cases, I don't have enough relevant experience for the problem at hand. Also, I find, that in discussions I am listening more than I am speaking. Having no opinions, and finding it hard to express opinions for fear of being judged and losing respect in case my opinion is wrong, are the problems I am facing.
Is there any advice on how to develop these skills?
I have 10 years work experience, and I have previously worked at a FAANG that had no levels (big clue here!). So regardless of the scope of work, we were Senior. That kinda played at a disadvantage to me when I found my self looking for a job due to a layoff and visa issues.
I believe I am working at staff capacity, leading 5 folks, driving initiative. But I feel like I am unable to "show" Impact. We have metrics at each level. I have addressed the same with my manager, went over the metrics and identified gaps and took action.
I got lukewarm response, at best from other staff engineers and management. No idea if at all I will be considered for promo, and I get no response besides stating, it is a lagging promo.
Right now, I have no visa issues, so I can hop around other companies, I want to move back to a FAANG+ company because of higher pay.
Question is :
How do I ascertain my promotion?
and which of the following is a good bet:
What is the role of Staff Engineer at a early stage startup where infrastructure is on an average setup? In terms mobile application it is standard app with migration scope to react native but there are no takers for migration at all (only product release need)
Here how can staff engineer play a role and how to deliver product and engineering goals with awareness to large eng teams?
I’m an E5 at a Big Tech company. My team’s E6 does not communicate or delegate effectively. He dives straight into the weeds without providing proper context, then gets frustrated and explodes when people ask questions or do the "wrong thing" because they are lost. I’ve seen him do this to multiple team members, including my EM and another E5 teammate. He always assumes that everyone has the same context that he has and is unable to tailor his communication to the appropriate audience. How can I best work effectively with someone like this? He would delegate tasks to me without providing acceptance criteria or proper context, then explode when I ask questions or do something other than exactly what he had in his mind (but never communicated properly). Is there a way to fortify my questions so he’s less likely to explode on me? My EM thinks that this E6 has a “my way or the highway” approach because he’s not used to people challenging his ideas. The E6’s feedback for me is to drive discussions more. However, I find it challenging because he leaves out critical information, then explodes and shares it only when we pull teeth about it in team discussions. I tried sharing pre-read meeting docs beforehand, but he still waits until the meeting to explode / share his feedback. Unfortunately he's a domain expert in this area, so there's no one else I can extract the context from.
I'm an E5 at a Big Tech company. My EM's pushing me to lead projects on our team so I can work on getting to E6. This is challenging when the E6 on my team tries to micromanage everything. How do I lead when I keep getting overruled? The E6 usually makes good decisions, but oftentimes struggles to articulate his rationale / justification.
I'm an E5 iOS at a Big Tech company. Our team's E6 backend and E6 iOS tend to dominate our team discussions, often talking over each other. I get the impression that the E6 iOS wants to be the smartest person in the room and enjoys micromanaging all the details, but the E6 backend enjoys challenging him. When I proposed a solution to one of our project's challenges, the E6 iOS quickly shot it down but could not propose any alternatives. The E6 backend challenged the E6 iOS to explain why my idea wouldn't work, but the E6 iOS just talked in circles. It seemed like the E6 iOS just didn't like it because he didn't come up with it himself. How do I avoid making the E6 iOS feeling threatened? I'm a bit hesitant to contribute to team discussions due to this dynamic, but my EM wants me to contribute more.
I'm an E5 at a Big Tech company. My team's working on a very ambiguous project. 3 opinionated, vocal engineers (2 E6, 1 E5) tend to sidetrack our brainstorming discussions by playing devil's advocate to shoot down ideas. How do I drive these meetings forward with this dynamic? We often rehash the same discussions over and over. When we're close to reaching a decision, oftentimes someone would throw a wrench into things. Moreover, some engineers require upfront planning and want to finalize all the details before committing, while others prefer to defer the details to future milestones. Both my manager and team are getting frustrated, but are unsure how to fix this.
I am a tech lead for my team of 5 engineers. I am also a senior eng intending to climb up to staff level.
My manager is not very vocal or supportive and seems reluctant in terms of helping out a plan for myself. I have been working hard though. How can I work with my manager to create a promotion plan for myself and get buy-in from them?
I am not sure if I should move up the eng ladder or transition to management, but are there any guidelines for creating a written promotion plan and manage up so to speak?
An E6 and I recently joined an existing team and are working with an E6 who has all the historical context on the project's requirements/limitations in his head. The PM is brand new to the team and the company. The EM and designer are also fairly new. The newer E6 often proposes architectural directions that the more tenured E6 shoots down due to this context. Is there a good way to extract all this context from the more tenured E6? I feel like we're often throwing things on the wall and just seeing what doesn't get shot down -- things get shot down more often than not, unfortunately. The more tenured E6 said it'll take too long to document all the context.
I worked on backend for 10+ years and was a Tech Lead before switching to iOS for the last 10+ years. I was offered an E6 position at a Big Tech company, but I asked to be down-leveled to E5 due to imposter syndrome since I mostly worked at smaller startups and didn't know what to expect. When Leadership later found out that I have backend experience, they started pushing me to do backend. Is it easier to get to E6 doing only iOS or doing both iOS and backend? I'm much faster coding iOS than backend since I know the Xcode shortcuts, a lot has changed in backend over the past decade (e.g., AWS, Kubernetes, etc.), etc.
Any recommended resources that I should invest as part of my education budget?
I am Backend software Engineer and I am interested in moving to Staff software engineer role in future.
Often we talk about how, when getting feedback during a PR or Design Review, there are mistakes that I have seen, at least in my case, creep up repeatedly. Any tips to ensure that the learnings stick?
I got promoted last half to IC5 and have been leading impactful work streams within our team. I am enjoying my new role and work. In our last 1:1, my manager asked if I wanted to lead a very high priority org level initiative that has impact across multiple teams and suggested this could be a potential staff level project. While this is a great and unique opportunity for promotion, I am also nervous about taking this up because:
Wanted to get your thoughts on this and what you would do in my position? And if I say no, should I be worried about my manager passing me up for potential opportunities in the future? Thanks!
Like a lot of E5s, I'm working on a piece of my team's overall project roadmap, which is set by an E6 TL. The piece I own is less technically complex than other parts, but it is quite XFN heavy (great for people/direction contribution). I was wondering if this is still enough to get to E6 or do I need the higher technical complexity as well?
A lot of examples of growing to Staff are more oriented around less technical fundamental/soft skills, including the examples in Taro. However, I'm unsure how to find this scope in my team, and I don't think that kind of behavior works to get to Staff at Apple overall. I spend ~90% of my time coding, and the culture is more top-down at Apple compared to a company like Meta.
Given all that, how can it be possible for me to grow to Staff? Are there paths to Staff that are heavily technical?
It seems at Apple that getting promoted past ICT4 can take ages. My manager has 3x my YOE and many reports, but we're both ICT4. There is no leveling rubric that I can find, so it's unclear to me what differentiates an ICT5 from an ICT4 here. I'm thinking it might even just be worth abandoning the promo goal for the duration I work here, then aim to be hired into a promo at the next gig in a few years.
There's too much work on my plate, which is made worse by the nature of our team's product:
What can I do to make things more doable?
It's been hard for me to draw the line between work and life with their current involvement. Here's some examples:
I also have calls with a team in a very time zone, stretching out my workday and making it start pretty early and end pretty late. Any ideas on how I can improve this situation?
I'm a new staff engineer at Meta, and I know that the bar is high for E6. In particular, an E6 needs to be able to have a large influence on the roadmap and team charter, leading and creating very substantial projects.
All that being said, I want to start crafting and executing that vision as soon as I can to hit the ground running, but I'm unsure on exactly how to do that with Meta's more bottoms-up culture. At my previous job, things were more top-down (i.e. leading with authority, where software engineers work on things because their manager/leadership tells them to). How do I lead the team with this almost opposite engineering culture?
Part 1: Before Joining an organisation
Part 2: After joining an organisation
I've been a senior engineer for a while, so I would like to start making real progress towards that level. I see a lot of other engineers in the company making it to Staff or an equivalent level, and I'm wondering what I can do to make that same level up.
A fellow senior engineer on my team is leading a large multi year project that involves rewriting a significant portion of the codebase. He came up with the proposal, design doc, everything. A couple of team members are already helping him in the project, but since the project's scope is so big, he needs more help.
There is also a backlog of other projects that haven't been prioritized for several quarters. These include stuff like migrations, enabling CD (we still deploy manually taking up plenty of oncall engineer's time everyday) for our service, etc.
I feel like I would get more credit and build trust towards moving to E6 by leading one of the projects in the backlog as opposed to helping out the other engineer in his project. What do you recommend?
I recently got feedback from my manager, and they mentioned that to start making progress to E6, I need to come up with new initiatives, which are big projects spanning across multiple teams. This is especially important for us as our team works in a way where we need to come up with the roadmap more on our own in a bottoms-up fashion.
This feedback is one of the core pillars I want to focus on going forward, but it's hard to make it actionable. What can I concretely do to start coming up with these projects?
My goal is to level up to Staff someday, and I feel like I've gotten a lot of very high-level advice and examples that are hard to directly apply. What are some detailed examples of Staff level projects, and what about the execution/behaviors made them Staff?
I'm looking to get promoted as fast as possible, so I really want to understand how very senior engineers think. Here's some additional questions to add more depth:
I’d like to be a very senior research engineer in a FAANG company. I’m currently a senior engineer at my medium-sized company but I want to move closer to the research side as a more senior IC. What does it look like to be Staff+ research engineer vs software engineer? How can I build those skills now?
I'm a relatively new engineer at Salesforce (been here just ~4 months), and I'm having trouble clearly understanding my expectations.
What's the ideal ramp-up/onboarding strategy for a Staff engineer at a Big Tech company like Salesforce; in particular, what should the first 3-6 months look like? Are there any specific artifacts you would expect such an engineer to have produced during this time?
I learned that my whole team is kind of new (Salesforce acquired this product), and they have just started contributing to the core platform. There are currently a lot of approvals necessary to merge front-end code into the system. This is rough as there's many epics connected to front-end work, and there is not a single senior person in the team which can take charge of looking into the high level architecture, following best practices, and doing better planning to release the code to prod.
I am the only full-stack Staff engineer here, and this is why my EM wants me to create a master front-end tech spec for the team. As an example of something this doc can cover: At Salesforce, there are multiple ways to communicate with the back-end API, each of which has their pros and cons but that information is scattered - We can consolidate that info into this doc.
Given that I haven't written any front-end code here at Salesforce, this task seems hard and I'm unsure how to do this without looking stupid.
I have realized that I need a very high level overview of the current system and what other systems it communicates with. I have no idea on how to do it; I'm currently planning to have a meeting with my EM.
I have access to the Quip, Google Drive, and some brown bag sessions. I have watched a few of them, but it all seems very fragmented. After I figure all this out, I plan to create a doc which can help others better in the future.
I was assigned a P1 bug, and when I started to dig deeper into it, I found out that actual code was written by some other team and we have just used that code/object to build a small feature. I got a bit lucky that someone in my team told that the team ‘A’ owns that code/object. I was given a POC, but it turns out that they have left that team. I would like to have a POC to close out this bug.
For additional context: It is still not clear if it's the feature or the bug that's broken, that’s why we need to get clarification from the other team. Here's a high-level example to make things more clear: There is an object named "Product" which is a generic one, team ‘A’ built another object called "Product Category", and we added a field to that object. Now unless I ask some senior folks in my team it is really hard to understand who owns "Product Category".
Given all these unknowns, how can I navigate this situation and make sure this bug is resolved properly?
We maintain a healthy suite of E2E tests, which does catch regressions sometimes before release.
It is hard to keep track of it all manually, but I believe that each time a regression is caught before release, it's overall positive on time spent. Each instance of this happening saves time which would have spent hot-fixing the issue in production if the regression wasn't able to be caught early by the tests.
How can I verify my hypothesis and make sure that this overall E2E testing effort is well-run, impactful, and net positive with engineering time investment?
My team spends a good amount of time fixing random/recurring low priority crashes. The goal is to keep the overall crash rate under our agreed SLA. Crash rate naturally goes up over time, so we need to continually invest time plugging up these crashes to keep the overall metric below SLA.
Is there a way to quantify this in numbers. Maybe we can draw the connection between these fixes and a better user experience that ultimately affects the app users' ratings in the Play Store?
I improved a complex library integration in our app, which reduced our amount of crashes and memory leaks by X amount. I can pull some concrete numbers from the Play Console and Firebase dashboards to back this up.
However, I'm wondering if the overall business even cares about these memory leaks and crashes. For context, the feature worked fine overall prior, evidenced by the fact that there were no real user complaints about it.
One of the mobile platform projects I led was to improve X pattern in the app and then document best practices around it so engineers understood this new pattern and continued to propagate it.
My proposed impact is that this promotes consistency in the app's codebase which should lead to faster code reviews and enable engineers to deliver features faster. How do I quantify this?
For purely technical projects/platform work, how do you convey the impact to leadership/performance review committee? During performance review, do managers care about the impact of technical projects?
One thing we try to do is treat platform teams as enablers of delivery teams, i.e any platform work should impact product work directly. Sometimes we can quantify direct impact, but most of the time the impact is indirect which is hard to back by data and quantify.
Another angle is that delivery team engineers are the customers of platform team - If we enable them to deliver valuable feature faster and cheaper, we succeed. Again, this is hard to quantify with concrete data.
So my overall question is: How do you link and quantify technical projects like app optimization and performance improvements to direct product and business impact?
Since the engineer implementing the task went in a different direction from what I had in mind, now I feel like I have to dive into the code and explain the approaches I wrote, and also get involved in the code much more than I would like. How can I overcome this?
Recently the app has been having navigation issues. An engineer picked up the ticket to fix these bugs, and I provided the context and starting point. However, they had trouble with it, so I’m checking out their branch and helping them debug. We just want to make sure it’s not broken as it’s a big change. Is this too in the weeds?
I’m not sure if I should be on top of everything - I don’t think it’s possible. Another instance is an engineer working on coroutine migration. Should I be working on it?
How can I unblock engineers on the team without getting into the weeds and debugging the issue myself or pair programming with them?
Right now, I create work tickets and add context so engineers can easily pick them up. Engineers will then come to me with technical problems as they get blocked on these tickets, which requires a lot of time from me.
At a previous company, a friend had an exceptional mentor who helped him climb from mid-level to senior engineer in 1.5 years. I’ve struggled to find a mentor of similar caliber. What advice do you have for finding a good mentor?
I am the only experienced Full Stack developer in the team and I felt that the management got a bit excited when they found out. For the first week I was asked to represent my team to the UI review committee to get the UI approval, I had little or no background of the feature but it was kind of rushed out.
Second week, I was told to write the design document of a feature which I was not aware of. I started digging deeper into it, but after 3-4 days I was told there is some other team who is working on something similar so I should stop working on it.
Third week, I was told to again start working on it but then was told to put it on hold. Within the same week I was also told to write the Engineering document for the FE development for the team, this was a bit surprising for me seeing there is almost everything custom at SF, I felt I needed some time to understand the ecosystem, it is the work in progress.
I’m married with two kids. It’s important that I spend time with my family, while also doing well in my career. Do you have thoughts on growing my career without burning the midnight oil?
For example, this week I was told to work on adding a field to some legacy entity which is not recommended (i.e. you need to have a solid business justification). The whole process is very lengthy, requiring many layers of approval just for this single field change. How can I find the scope appropriate to my level?
Knowing that, how should I tailor my career path - What companies should I work for and what skills should I get to set myself up for success against this goal? Should I continue working at Salesforce or should I go work for a different company?
Before I was at Amazon in Cambridge, England. I came to enjoy the quality of life there, but recent changes made me switch to Salesforce in India. The work-life balance here is good, but even as a staff engineer, I’m having trouble finding scope - I own just a small piece of the overall system my team’s responsible for.
I was able to recently get an offer from Spotify for a UK office, which expires in a month. However, it’s for Software Engineer 2, a level below their senior level. This isn’t ideal as one of my goals is to be a Staff engineer at a reputable company.
Should I stay at Salesforce where I’m already a Staff level and have solid work-life balance or move back to the UK to work for Spotify?