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.

Side project feedback - Uber/Lyft simulation

Senior Software Engineer at Series B fintech startup profile pic
Senior Software Engineer at Series B fintech startup

I'd like to ask for your feedback on my side project - a full-stack simulation of a ride-hailing app such as Uber or Lyft.

App: 
Blog: 

A bit of background first. I've been wanting to publish a personal full-stack project for a while. These were my main reasons:

  • I wanted a platform to explore concepts and tools I don't get to work with in my day job, helping me accelerate my learning.
  • I've wanted to break into big tech and thought this project could help me stand out among many applicants.
  • I enjoy writing and wanted to get better at it.

Why did I choose a simulation of the Uber/Lyft app? I always found something very attractive about these apps - they're visually appealing and dynamic, with colossal architectures behind them. I thought it would be very cool to re-implement some aspects of such an app. I have also been reading the Uber engineering blog and got a glimpse of the complexity these companies are dealing with.

My final goal with this app was to have an animated map with cars picking up customers, driving them across the map and dropping them off at their destinations. Customers would post ride requests and the system would match them with the nearest drivers. The simulation would run on the backend, and the frontend map would show the action in real-time.

I started working on the project last autumn. I've spent around 300 hours working on it and you can see the result in the links above.

My ask

I'd love to get your feedback to improve or extend this app and my blog, keeping in mind my objectives:

  • I plan to apply to big tech companies this summer, and I'd like this project to help me with my applications.
  • The project targets both recruiters and hiring managers. With recruiters, the goal is to pass the initial screening and get me to the interview stage (of course, I'll also be trying to secure referrals, but I might not always succeed). With hiring managers, this project might help me score extra points in my final evaluation.
  • I might be applying to companies such as Uber or Bolt, but this project is not supposed to impress just the ride-hailing companies.
  • I prefer not to put much more time into the project at the moment, as my focus right now has to be on the coding interview prep.

Possible additions or improvements include:

  • Splitting the system across multiple machines (perhaps 3), making it truly distributed.
  • Adding various components used in large-scale systems such as load-balancer, rate limiter, or message queues. Indeed, these components are not actually needed for the app to function. But by doing so, I could demonstrate my ability to work with them (albeit not necessarily demonstrating deep expertise).
  • Adding comprehensive documentation with system diagrams and explaining the choices I made.
  • More rigorous testing by adding integration tests (right now, I only have unit tests).

As for my previous background - I've been an engineer for ~4.5 years, most of my experience is from a small startup (series B). I consider myself a full-stack engineer but going forward, I aim to specialize more in the backend. Therefore, the project should strongly communicate my backend skills. For my next role, I also prefer backend positions to full-stack ones.

Recently I watched the great masterclass from Rahul and Alex on side projects. It made me realize that while my project might be interesting from a technical perspective, it has no users. In fact, this app doesn't allow any user interaction by nature. However, what I'm lacking in terms of users, I'm hoping to make up with the degree of technical complexity. Please also share your views on this aspect.

Many thanks if you've read this long post to the end. I'll be very grateful for any tips on how to make this project more appealing 🙏🏼

Show more
Posted 2 years ago
418 Views
4 Comments

How to resolve conflicts between coworkers?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

I’m an E5 iOS engineer at a Big Tech company. An E5 Android engineer (let’s call him A) on my team is very direct & blunt in his communication style. If he doesn’t like something, he’ll definitely let you know. An E5 backend engineer (let’s call him B) on my team is the complete opposite in his communication style. A and I collaborated on an official spec that we shared with our entire team to align everyone. B deviated from this spec in his RFC, but had tagged A and me on his proposed name change in the sample json response in his backend RFC.

A called B “sloppy” for embedding the source of truth in the backend RFC’s sample json response instead of using the official spec as the source of truth. This offended B, who viewed it as “finger pointing”. From B’s perspective, it was an innocent misunderstanding that’s easily resolved since it’s so early in the project that not much code has been written. It’s a single string that can be easily changed on both the mobile and backend sides. B thinks that A is making a mountain out of a molehill.

I worked closely with B last quarter and really enjoyed it. He’s extremely kind, easy-going, encouraging, and puts you at ease. If you make a mistake, he would never call it out explicitly. A seems to be the complete opposite of all those things, but I haven’t worked much with A yet.

Both A and B vented to me privately for support. A thinks that B is “sloppy” for burying the changes in the backend RFC instead of updating the official spec. B thinks that A is “difficult to work with” and “points fingers” over something that can be easily resolved. We’re still in the early stages of this project, and B doesn’t know how he can work with A if A keeps finger pointing.

When I suggested that A sugarcoat the “sloppy” comment, A told me that’s already the sugarcoated version.

B’s planning to escalate this to our EM, since he suspects that A will as well, so he needs to “defend himself”. Any advice on how I can improve the situation? Sadly, I feel that most engineers at this company use A's "direct" approach. I personally get along fine with both of these individuals (so far, at least), so they both confided in me. I think that A is “right” that the source of truth should be in the official document, but the manner that he communicated it could have been improved (not that I’m an expert at this skill either!). Are there concrete actions that I can coach A on to make him a better teammate to work with? When another teammate (E6) previously berated B in front of the entire team, I escalated it to my EM on B's behalf and my EM had intervened. Should I just escalate this to my EM as well? There are some strong personalities on this team that are going to make this project challenging. Sigh.

Show more
Posted 2 years ago
415 Views
6 Comments

How to thrive in a new role that's much bigger than what I'm used to?

Senior Software Engineer [L5] at Google profile pic
Senior Software Engineer [L5] at Google

What should I think about and focus my efforts on when I get a project and a role that's of (1) bigger scope and (2) tighter deadlines than I'm used to?

Context

A reorg has suddenly thrust me into the TL role for a very high-profile project on a new team. This project is part of OKRs 4 levels up the chain and has the eyes of several director level people across different functions. From what I've heard, this project already suffered from "too many cooks in the kitchen" syndrome, and on top of that, this project has delivery date set in Q3, which is quite aggressive from our org's standards.

I've landed in this position because I was transitioning to this team prior to the reorg, AND the EM/TL/PM/2 L5s has been reorg'ed out, and they needed someone who had previously TL experience and was willing to do it.

I've previously TL'ed a team of 4 people, with important but "normal" priority projects. This is clearly a great opportunity for me, but I am afraid I'm not ready to handle it and I'm at a bit of loss as to what I should be focusing most of my effort on. With the tight deadlines I have, I feel like every day will be a battle so any advice on how to approach this will be appreciated.

I have one other L5 supporting me who I trust very much and a new EM who's rumored to be very good. We currently have 4 SWE including me and we'll be getting more at least 4 more engineers, with lots of adjacent teams helping out. I do also have good standing and connection in the org overall and I know how to get a "normal" project in our org over the line (I did an in-org transfer).

What I'm thinking about right now

  1. Knowledge Transition: since a lot of critical members of the team are leaving and I am taking over, I feel the biggest priority in the near term is to absorb as much knowledge from them as possible. So far, they have some prototypes, and I wanted to get my hands dirty, so maybe I should focus on is to understand the work that's been done really well, and the design choices that's been made already?
  2. Gather support: I feel like biggest personal risk is that I don't know how to show up in higher-stake meetings with directors. Is it any different? Where do you all see the risk is?
  3. Enable the team: I know the biggest responsibility I have, more than anything, is to make sure the team is able to work on the project and help us deliver this. Aside from the L5, I don't know a lot about the people. I feel I should putting my focus on ensuring they are as successful as possible, not focusing on my own technical knowledge as much, for us to succeed. Is that a good way to think about it?
  4. Self-management: I anticipate I'll be very stressed and pulled in many directions. I already feel this way. What are some tools I can leverage in "crunch time"?
Show more
Posted 2 years ago
390 Views
4 Comments