I have gone through a post in Slack about paper reading and its benefits.
As an Android developer, I did not find paper reading will be useful in my day to day job. Because the system design for a frontend Android is different.
I have this doubt from long time: How can i improve my design skills in Android? I see many people in our org come up with a good doubts and points in architecture discussions, but I am not able to do that. Could you please help me with what I can do to improve these design skills? I believe I should constantly do something to master this, but I am not sure what to do.
One way is I can learn it by doing - I am learning from my current project but that is not so scalable. I want to multiply my learning curve here.
Thank you in advance.
I recommend these Taro resources for this question:
I agree most paper reading is not that useful if you're a mobile developer (or a frontend developer generally). My advice on top of Ryan's great pointers:
I'm going to be 100% honest: For most engineers, paper reading isn't super useful. I think it has value with more cutting-edge and theoretical fields like AI, but for most engineering disciplines (like Android), they're fairly well-defined now so paper reading won't have great returns for learning. In those cases, it feels intellectual and productive, but isn't actually helping you learn.
So back to the original question: How can we get better at Android system design?
The #1 resource I recommend is this: [Course] Frontend System Design Masterclass - Building Playlists
It's a real system design case-study, and it's anchored to mobile (though the overall principles can be applied anywhere). If you follow the example set in that course creating technical design docs for everything you work on, you will develop that system design sense lightning fast.
After that, I recommend my Code Quality course, specifically the lessons about edge cases:
So after you go through these resources, you will have the principles in mind. But that's not enough for something as important and complex as system design: You need to get your hands dirty. Do the following:
On top of all that, you can accelerate your system design skills even further by building side projects! For us Android engineers (and mobile overall), system design is generally pretty practical (e.g. "How would you build Messenger?"). You can literally do this on your own for fun.
For the Messenger example, I actually have gotten this system design question like 3+ times across interviews, and it was always very easy as I've built a messaging UI before in a side project for fun.
To dive deeper into side projects, I recommend this: [Taro Top 10] Building Impressive Side Projects