Tech changes constantly. Our tools evolve, our patterns are refined, and new APIs and products enable us to do more each year.
How then, do we stay on top of every new advance?
I really like this episode of Fragmented, where they mentioned that while you could learn anything, you can't learn everything.
So here's what I do.
- Stay aware of what's out there. eg: There's a thing called GraphQL that lets you effectively deal with a few hundred params in your rest calls.
- Learn Just In Time. I don't have the usecase of needing to handle a wildly changing API request, therefore I don't really need to check out GraphQL.
I just need to know what exists, so that I can delve deeper into it when I find a need for it.
Then, identify what's core to your work, present and near future and go deep.
What I find useful for Android, in order of importance:
- Testing (unit first, then espresso)
- Kotlin over Java
- Dependency Injection (pick one framework and be aware of others)
Somewhere in there should be functional over imperative style programming.
Then go deep on every single one of those.
I promise you won't reach the end of depth on any of those for a good long time and that depth will help the quality of your work.
Go deeper until you hit the limits of what's out there.
Once you've hit the limits, it's your turn to push the limits. With everything you've learned, what's the biggest thing still slowing you down? How could your entire project work better together? Expand those boundaries and add to the collective knowledge of the tech industry by writing/giving talks about that.
This way, you have very valuable skills as your core, everyday drivers. Which you continue to hone through practise and you're aware of what's out there so you don't stick to a well honed but inappropriate tool if there's a better way!
Good luck, make time to chill and raise the standard of engineering.