Taro Logo
Profile picture

Senior Engineer Career Development Videos, Forum, and Q&A

How A Senior Engineer Can Grow Their Career

Senior engineers have proven themselves to be extremely capable at shipping high-quality, complex software efficiently. This collection breaks down how they operate and how you can get to this level too.

Who has the most authority, EMs, TPMs, Tech Leads, Tech Lead Managers, or ICs at VC backed early stage startups and larger tech companies?

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

Who (which roles) reporting to whom has the most power to make authority/decisions about day-to-day, vs. technical product architecture vs. business decisions when it comes to early stage venture/YC backed startups (small teams ranging from like 10 employees-hundreds vs. thousands at a larger company)?

I struck up this conversation at the last in-person meetup and got varied answers.

Answer #1: it depends on the company.

Answer #2: management

Answer #3: ICs that revolt against management.

Who has the ultimate authority? Does it depend on the founders and investors (technical CEOs vs non-technical CEOs of major publicly traded FAANGMULA or startup companies makes a difference with the technical/engineering culture right)?

When considering a role (I've been interviewed for senior IC roles, but have a TPM background - Technical Product Manager, which for some folks can translate also into Technical Program Manager) and have been debating back and forth if it makes sense to continue to interview for senior IC roles if I am told that ultimately I don't have 'any' power, but all ex-Meta engineers tell me otherwise. At the same time, many people tell me some companies (like Apple) will privilege management. And yet others, may also tell me that none of that matters, and ultimately all senior ICs/staff engineers/tech leads may tell me is that you won't be able to contribute code as a TPM (you'll be stuck in meetings all day managing people and pointless and endless 1:1s with junior devs on your team a.k.a. babysitting to some and so encourage folks to instead choose being an a senior IC), the reverse are those who tell me TPMs do have interview (even for YC backed AI companies) for product (yes you have to whiteboard and do DSA just like any senior IC would) and actually have a hand in the product (contributing code).

I find myself stuck debating back and forth because ultimately as a past co-startup founder I'm a control freak who probably craves power (natural for management), but I also miss coding a lot (I hated all the business problems with my last company with my non-technical business founder). Any advice on selecting the next role given my dilemma (a need for power/control/authority, but also wants to contribute code)?

Show more

How to deal with a peer who tries to micromanage and push their work onto you?

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

My team has 1 E5 iOS (me), 1 E5 Android, 1 E4 iOS, 1 E4 Android, and several backend engineers. We also have a few web engineers, but I don't work with them.

I optimize for quality even if it takes more time, while my E4 iOS optimizes for speed (often cutting corners, skimping on testing, neglecting edge cases, etc.). My E5 Android's quality is somewhere in the middle of my E4 iOS's and mine, but he takes a lot longer than me on comparable tasks.

My E5 Android tends to push tasks onto others, with the excuse that he "doesn't have time". For example, our team's manager wanted our mobile engineers to learn the backend, so she specifically assigned a backend task to the E5 Android engineer. However, in a 1:1, the Android engineer asked me to take that backend task "if I have time" -- I had finished my iOS tasks early, so I technically had time, but I was hoping to work on a side project to demonstrate E6 scope. When I mentioned that I didn't have time because I was writing a 1-pager, he asked me to share it with him. Then he said we should focus on finishing our existing projects before starting new ones and added a lot of negative comments to my 1-pager, which made it more difficult for me to get buy-in from other engineers.

My team's EM had told me I could DRI a particular project I was excited about. However, the E5 Android convinced our PM that we should finish existing projects before starting new ones, so they forced me to deprioritize the project I was excited about to work on some boring E4 tasks. My E4 iOS was busy with another project, so he didn't have the bandwidth to take those tasks. However, I was hoping the E4 could take those E4 tasks after he finished his current project.

Do you have an tips on how to navigate this? I get the impression that the E5 Android pushes a lot of tasks onto the E4 Android as well, based on the latter's annoyed look in meetings when it happens.

My team will start our H2 scoping soon. Apparently the E5 Android engineer already set expectations with my team's EM that Android will take a lot longer than iOS for that project that I'll DRI.

Show more

How to maintain mental health while working towards very ambitious goals?

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

I became really ambitious at a young age and was always pushing my boundaries, from high school, through university and now in a professional environment. Ambition is not a bad thing, but I think I picked up an unhealthy maximalism and “grind mindset” which makes the journey really stressful. I’m working on understanding myself & why my personality turned out this way with a psychologist and honestly it’s great (and I recommend this to everyone in tech if you can afford it).

Reflecting back on my journey, this mentality got me pretty far so far (I’m 26), I got promoted pretty much every year (I’m just below staff-level, 5 YoE in ML/AI), I published papers as side projects and finished my Masters degree, most of this in parallel.

Throughout the years I was given several signs that this is not a maintainable pace (relationship ending because of only spending time on professional stuff, health complications like high blood pressure, etc.) and as stupid as it sounds, I just powered through these and carried on.

Exercise is one thing that helped the situation as it turns my mind off for a bit. I’ve been working our 3-4 times a week, but honestly I think the problem is with my attitude, so working out will not help the stress completely.

Recently I think I hit a wall in terms of stress and I had a few panic attacks, which was really scary. It was a wake up call and I decided that nothing is worth experiencing these conditions. After experiencing these I became more stressed and worried about my health which makes day-to-day work pretty tough. I’m also switching jobs soon, which I think added an extra bit of stress to the whole thing, maybe that was the trigger.

Since I think Taro is a collective of people with great ambitions, I’d be really curious to hear if you faced a similar situations and how you managed it.

So I have two main questions to you:

  • Short term: If you ever got to this point, what are some strategies to recover? I will be taking 2.5 weeks of vacation between the jobs and I will try to completely switch-off, but I’m curious if you have any other ideas.
  • Long term: How do you balance your thoughts and ambitions about “reaching the stars” (whether it’s becoming a staff engineer, building a company, etc.) with maintaining a healthy life?
Show more

How can I identify companies that have good work cultures where code doesn't have to be refactored all the time?

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

How can I prevent myself from putting myself in a job where I have to recode an entire code base after a long amount of time on a product?

More specifically, how do I identify good teams that have working styles where you aren't having to refactor an entire codebase and have a frustrating work environment? In the past, I've heard that at companies like Netflix that people can just code in whatever language they want, then when folks sometimes regroup/resync with a larger product team, one team in a particular language will win, leading to large parts of other specific devs on the team to hate it because they have to refactor their code.

How does one come up with certain criteria (and follow through with it) as they interview for jobs and specific companies about working styles on preferences of code base, tools, frameworks?

What other core principles and criteria folks consider as they're interviewing other people (not just the company interviewing for a role) that they should consider as a part of the dev culture, structure when it comes to these types of things so I don't make the same type of mistake?

And yes, I know people refactor code bases (ex. legacy projects, cleaning out whatever tech debt folks have), which people tend to hate because it's a lot of work--and that it's still bound to happen and unavoidable, but how can we eliminate cultures we dislike that are refactoring code bases as a result of a dysfunctional tech team? I want to avoid having terrible experiences at a future company I work (similar to an hackathon experience I had recently working on a small MVP can be frustrating when folks are not aligned / on the same page for things that might take to long to complete or have to refactor completely if they are not communicating well or upfront from the beginning).

Show more