Taro Experts

Our most active contributors from the last two weeks

Picture of Jonathan CJonathan C
Robinhood logoAndroid Engineer @ Robinhood
Jonathan C
Android Engineer @ Robinhood
9 days ago

If you don't have the motivation to grow your career and you're comfortably able to sustain your current level, maybe you should look to find a hobby that'll motivate and fulfill you outside of work. Even though careers are generally a big part of our lives, it doesn't necessarily have to be the only thing in our life. Senior level at big tech pays very handsomely, so perhaps you can use that to give yourself the flexibility to explore.

For an ancedotal story that might give some perspective: when I joined Robinhood (when it was ~500 people and was one of the hottest startups at the time), I had a coffee buddy with a very senior Android engineer and one of the conversations we had was around career goals. He mentioned that at this point in his life, he wasn't really as passionate in software engineering and that he was only in it still because the pay was really high. He also mentioned that if software engineering didn't pay as much, he'd gladly pivot to another profession that would.

Show more
Picture of MelissaMelissa
Self Employed logoMid/Senior Software Engineer
Mid/Senior Software Engineer
9 days ago

First off, it's perfectly ok and normal to be a software engineer just because it pays the bills and you're good at it, not necessarily because you're passionate about it. It's the classic question of "work to live" or "live to work" - both are valid ways to live your life.

Are you software engineer because you genuinely love programming and solving complex problems that change the world? That's awesome! Are you a software engineer because it pays well and you need to support your family, or you want to retire early to escape the corporate rat race? That's also awesome! There are plenty of people who fall in either one of those camps, and neither path is "better" or "worse" than the other. You just need to know your why, and fully accept it.

I don't have what it takes to be an outstanding engineer in the tech industry.

No matter what, there will always be someone who is smarter and/or more experienced than you. Even if you're an L7 at FAANG. In tech, there's this collective hyper-competitive mindset that you have to be the best in your field to be "successful" (whatever that means), but really... you don't. Yes, there is a level of corporate pressure to go from L3->L4->L5 (that's a discussion for another time). But at a certain point, it's okay to just be good enough. And perhaps what you think is "average" really is "good enough". This relates to my previous point on understanding your "why", and owning it.

I was able to get jobs at Pinterest and the company that used to be called Meta because I memorized coding interview questions and exaggerated my achievements.

This is more a testament to how broken the interview process is at most tech companies than you as a person. Let's be honest, many people (I would even speculate most) have done the same exact thing. People tend to underestimate that there is a HUGE amount of luck involved in interviewing, and interviewing in itself is a skill that's separate from the job itself.

Show more
Picture of Kuan PengKuan Peng
Google logoTech Lead, Senior Software Engineer [L5] at Google
Kuan Peng
Tech Lead, Senior Software Engineer [L5] at Google
4 days ago

Great question! I love how you've thought about this, and I agree, this seem counter-intuitive.

I have a few reasons I believe why this making themselves "replaceable" is good for the senior engineer / tech lead. I'll refer to this from a tech lead perspective as not every senior engineer is a lead and has to deal with this problem.

In short, in making themselves replaceable, senior engineers / tech leads are able to lead less stressful lives, get rewarded in performance reviews for building great teams, and lastly helps them find more impactful problems to work on for staff promotion.


The most practical and immediate reason is what you've mentioned - create redundancy within the team. Having other subject matter experts in the team means the lead isn't always being called into every important issue that occur. This is obviously good for the team, as single of point of failure is a big operational risk.

But for the lead, not being that single point of failure significantly reduces stress. This is especially true when the team has oncall - you don't want to be woken up at 3am or having to bring your work laptop on your vacation because you are the only person who's able to address urgent issues. In other words, building redundancy in the team helps leads to actually take their mind off work to recharge and avoid burning out.

Scale yourself = Leveling up the team

Inserting oneself into every decision for the team (e.g. micromanaging) is exhausting and ineffective.

This is because when you are the only one making decisions, the team doesn't get better, as your teammates don't learn how to make the decision on their own.

It may even initially feel really good, as you feel huge sense of power and responsibility. But it gets really annoying really quick when you have to babysit everyone. And there's no one to blame as you didn't spend the effort to teach everyone how to make their own decisions.

Ultimately, a gate keeper who doesn't share their secrets slows down their team.

I experienced this when I first became a lead. I was quite nit-picky during code reviews and thought "upholding the standard" was what I should be doing. This turned out to be quite wrong, as this slowed down my team's delivery, and because I wasn't teaching them how to think about code quality effectively. When I decided to instead help everyone understand how how to think about code quality and start thinking as code owners together, it massively boosted the team's productivity as we simply spent less cycles on the code review process. It not only did not decrease our code quality but instead helped our code base become better as people proactively sought ways to improve the code!

Part of the responsibility of a lead is to level up the team, especially empowering them with the knowledge and giving them agency to make their own decisions. A team that's full of independent folks who can make decisions on their own are extremely "agile" and effective. Building this type of team reflects very positively on the performance ratings of a senior engineer / tech lead, not mention how personally satisfying it is to work with independent people with whom you can bounce ideas off of each other.

Free-ing yourself to do greater things

One of the biggest reasons, IMO, to make oneself replaceable, is so we can tackle bigger and more important problems. One of the hardest part of becoming a staff engineer from senior senior is to figure out what are the biggest strategic issues that your business faces, and then to work on these problems. You won't have the bandwidth to find problems, much less solve them, if you are constantly having to make tactical decisions every day. You need to be able trust that your team is able to run without your oversight while you dig into more important, long term issues.

You asked whether it's a good idea to make yourself replaceable is only good when the company is in a "hyper-growth phase". While I have not been part of a declining or static organization, I would argue that it's even more important to ask in these situation whether there are problems that aren't being solved today that, if solved, would dramatically positively impact the organization.

So, don't make yourself replaceable just so you can relax and chill; make yourself replaceable, so you can do even greater things!

If there are other folks with thoughts on this topic, I would love to hear others' perspectives too!

Show more
Picture of Casey DaiCasey Dai
Capgemini logoHead of Engineering at Capgemini
Casey Dai
Principal Director at Capgemini
4 days ago

It's completely normal to think this is counterintuitive, especially when job security is top of mind during a down economy like now or in an extremely competitive environment with stack ranking at play.

A couple nuances to first address:

I don't think most people "optimize" for this, but rather it's a byproduct of having a mentality where you are always looking to maximize the impact you have over the long term. If you are actively hunting for ways to scale your impact, especially if you have goals of moving into leadership positions, it will naturally lead to finding ways to optimize the overall workforce of the team, department, org, and eventually company as take on more senior positions.

Taking away this talent development in your management toolkit is severely limiting and playing the game in hard mode to say the least. At Director+ level, I'd say conservatively it's at least 30% of the mandate. With that in mind, if your leadership is competent, any ICs that are "bottlenecks / gatekeepers" will get flagged as a risk since it causes the issues Kuan mentioned and even in the best case scenario, it will be career limiting since you're missing a core skill needed at the higher levels.

A final thought I'd like to bring forward. Developing others and helping them accelerate their career growth gains a massive amount of social capital and goodwill. Your co-workers are way more likely to advocate for you later on and will want to keep working with you even if you switch companies. One important thing I've gotten evaluated on during leadership roles, is how much of a "talent magnet" you are (I look for this when interviewing others starting at the Manager level). Having a tremendous amount of goodwill built up with others directly contributes towards that, plus the tech community is a very small world!

Show more
Picture of temp regextemp regex
Nike logoMid-Level Software Engineer at Nike
temp regex
Mid-Level Software Engineer at Nike
10 days ago

What has helped me is to put simply is have a routine, that's it. I know this isnt something you asked, but to be honest it boils down to this. Sure, personal life differs and not all can have this “luxury” per se. I will share what I have been doing since start of this year. Not getting any calls, neither have any scheduled. But, to be honest I am not focusing on them as I am still preparing; I would like to focus on the grind before committing to interviews.

Now, since that is addressed here is what I do on a weekdays:

  • I work from 9-5. Gym 3 days/week from 530pm-730pm.
  • Come home, wrap up dinner around 9-930.
  • I am following neetcode and hence i just get right into it. But, to “warmup” I read through what I solved the previous day, if it was something i couldn’t come up with a solution, try to resolve it.
  • After spending around 15-30min I start my pomodoro timer (1 hr focus/10min break), and get down to business. I do this till i just can’t/dont want to solve anymore. This usually happens when i am frustrated (most of the times) since i am not able to see through a pattern (think prefix sum, or bitmasks i hate it), i make a note (have an excel sheet) on what are my weak areas to target when i am done with neetcode’s pattern list.
  • Then I go back to the problems I have solved for that day as a mini revision.
  • Then I go to sleep.

Come weekend, you guessed it, do all of that but try to spend more time think 4+ hours (following my pomodoro). And, this repeats. I try not to mix my work times with preparation times, yes i know its very difficult, some are early birds, but i realized i am a night owl 🤷‍♂️.

Tl;dr time: It's ok if you solve 1 easy, its ok if you dont solve anything: Point is, when i come home either tired or amped up, I bloody make sure my motivation doesn't die to open the laptop and take that extra mile to open leetcode, i at the very least read a blog post of folks who “made it”, that keeps me going.

Hope this helps. Sorry if I went on a tangent in answering your query. Happy to chat/answer more.

Show more