I am looking for some good books or detailed courses on system design which are targeted for Mobile engineers specifically.
I actually made a 10-part course about that! You can watch it here: Frontend System Design Masterclass - Building Playlists
I tried to make the content as broad as possible by covering:
The content is largely derived from my experience working at Meta and Robinhood, so it should be largely applicable to your work at Amazon. Unless your team has a really well-defined doc format already, you could probably copy-paste my design doc style directly into your own projects (the link is in Part 3 and beyond as those are Taro Premium exclusive).
That being said, my advice is to treat system design resources as inspiration, not prescription. There are many ways to build good software: Pretty much every FAANG company has its own way of doing things. I'm sure your org at Amazon has a certain engineering style, so do your best to weave into that as much as possible.
If you're on the Android side of the fence, I highly recommend this discussion where I cover a lot of Android-specific design patterns: "How can I get really good at Android?"
Here are some other great resources around system design:
Zooming out a bit, the learning while building any software product will increase the more users it has. This is very true on mobile with its huge combination of device variety and OS versions, and it's especially true for Android.
If you want to learn how to build mobile side projects that get 100,000+ users, check out my in-depth guides here:
I also open-source almost all of the code I write, so if you want to get really hands-on, here's the links to my most recent repos:
I follow Instagram's engineering philosophy of "Do the simple thing first", so both repos are native Kotlin/Swift using basic system design techniques like modularization and delegate pattern. I use MVC for Android and iOS is SwiftUI which is MVVM.
If you're interested in learning more about Instagram's engineering culture, we made a video about it here: How To Properly Learn To Code As A Software Engineer - Do The Simple Thing First
I heard Amazon relies more on a WebView-style though, and it doesn't have a ton of pure native mobile development. YMMV with these resources alongside online system design resources in general. This will happen a lot at Big Tech where the tech stack is so custom.
If you're interested in the trade-offs between cross-platform and native, check out this discussion: Android (Kotlin) vs. React Native
I'd recommend this easy-to-read book to understand how to build an app at scale, written by an Uber Engineer: 'Building Mobile Apps at Scale' https://www.amazon.com/Building-Mobile-Apps-Scale-Engineering/dp/1638778868.
Unfortunately, I couldn't find any detailed System Design course for Android, but I could share some resources that I found here and there and compiled them together:
Here are topic specific links that I found very useful
To ace any Mobile System Design interview, these are the topics I recommend studying and finding examples for:
Try to find pros and cons for the following and come up with why would you go with the one over the other
App scalability topics (Important for apps with billions of users)
This is my approach while tacking an Android System Design problem:
Mindset that help me build an end to end system: Thinking as if I am using the app and coming up with different scenarios and then discussing possible solution like
There is a lot that I could talk and I'd really be interested in taking a session if anybody is interested.
Hope this helps. Thank you!