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.
A bit of background first. I've been wanting to publish a personal full-stack project for a while. These were my main reasons:
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.
I'd love to get your feedback to improve or extend this app and my blog, keeping in mind my objectives:
Possible additions or improvements include:
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.
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 🙏🏼
This project looks cool! It's clear to me that you've put a lot of time into it (400+ commits, 30+ blog posts, 6+ months of work). I have a lot of thoughts here, so I'll split it up into multiple comments. As a heads up, some of this is going to be pretty honest feedback.
I'll just get it out there: Probably, but I'm extremely unsure about how much.
Things get even trickier when it comes to Big Tech as those jobs are now so rare, and you're going to be competing with many applicants who have nice projects that also have 10,000+ users.
My core point here is to remember that recruiters aren't technical.
I cover this more in-depth in this discussion where I also breakdown how I used my side projects to get interviews from Uber, Instacart, and many other top tech companies: "Can Github stars grab big tech recruiters' attention?"
If anything, I think this project would be awesome at helping you get interview opportunities with startups, especially those in the transportation space. Unlike Big Tech, startups don't care about scale at all yet - They just want to get an initial product working.
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.
If this is your goal, I recommend inverting what the project currently looks like. Right now, the demo is very front-end heavy, because the feel and design legitimately look great. You can't tell how complex or awesome the back-end is.
Try putting the back-end more front and center by exposing the APIs underneath. Maybe you can create some sort of RESTful interface and create an API explorer page? I talk more about effective back-end side projects here: "What are some of the side income or passive income sources you can suggest?"
You have done a ton of great engineering work on this project, and you totally deserve to get more out of it. My advice here is to build in public.
You do this via content creation:
In other words: Show the technical complexity behind your work by breaking it all down into an easily accessible way.
You already have the ingredients to do this from your blog and website:
There's a lot of engineers who want to build a Uber/Lyft clone, and it's also a classic system design problem. Here's some ideas on blog post titles you could write:
On a final note, there's not much cost in applying, so I recommend just applying right now (unless you have more personal reasons not to do so).
You will never be ready for a Big Tech interview, and you can't solve this by grinding more LeetCode or making the "perfect" side project. It's much better to just apply ASAP instead of doing a bunch of pre-optimization that may not be relevant.
I talk about this extremely in-depth here: "Fighting Perfectionism as a Software Engineer (and getting important stuff done)."