Android will celebrate in 2018 its 10th Anniversary. In a decade, Android changed a lot for the users as much as for the developers. In the early days of Android, developers would use Eclipse, Ant, or Java 6 to build their applications. Things like adding a dependency with a Gradle line was nearly unbelievable. Nevertheless, things moved very quickly and in a few years, developers had to learn how to use a new IDE, new paradigm like Fragments, and new languages like Groovy and Kotlin.
To handle these changes, developers need to learn and adapt other the years. I this article I will try to present my approach to Android Technology Watch, giving you my best information sources and the way I process them to learn.
There are dozen of good information sources for developers, like blog posts, mailing list, Twitter accounts, key notes, books. In this article, I will call the elements of those sources of information items. Trying to read them all would be a mistake. It would take too much time to process everything and good information would be lost. For the watch to be useful, I need as a developer to be able to criticize information.
It is very easy to my point of view to analyze an item using questions. I start by answering high level questions then I try to go deeper to precisely analyze an item:
- Can I understand the subject of this item?
- Should I try to understand this item?
- How much time should I need to understand the item?
- How do I access knowledge which let me understand this item (could sometimes simply be coworkers, do not be afraid to ask)?
- Is this item about something I have experience with? If yes:
- Is the item presenting a new approach to a known concept?
- What are the difference with the approach I know?
- Is the item usable at my scale or at bigger scale?
- Why a given approach suits more at this scale?
- Is this approach suitable to my needs?
- If I am dealing with something new, I can ask myself the following questions:
- Would this item be useful for my applications (for example which features of new Android version I could use (https://developer.android.com/preview/features.html)).
- Do I know other items talking about this new item?
- May it have a big impact to the future (for example new language, new IDE)?
Be open minded
In this part, I will share some way of thinking which are in my opinion very important to be able to analyze an item. It may look totally obvious for a lot of people, and this is great, but I think it is good sometimes to remind ourselves to follow these principles.
The most important thing is to stay open minded. Sometimes there is not a best solution, only personal preference, and it is important for an engineer to be able to see that. Culture, personality, experience, may vary and the best solutions come from open minded spirits who are able to explain precisely why their solutions fit the best their needs. Also, it is very important to stay humble. Often others solutions may be far better than the one we found, and sometimes, they wont fit at all.
It is pointless to read an item if I can not correctly understand it. I think it is important to be honest about ourself to understand correctly an item. It may be a very good idea to discuss items with colleagues, especially if they have a different experience with the subject, or even no experience at all. I am often amaze when talking with juniors by the way they can bring new ideas because they are not stuck in a specific way of thinking build on experiences. Talking with engineers from other fields (iOS for example) is also very instructive. In the end it will help to a have different points of view on the subject.
The following sources are my own, and are not at all exhaustive. I highly recommend this article for sources https://medium.com/@w3bshark/immerse-yourself-in-the-android-developer-community-a15bb299ee1f.
I mainly use Twitter, following those accounts:
- Florina Muntenescu: Android Developer Advocate @ Google, she gives great posts/talks about Android development for every day, especially for Android Architecture Components.
- Mark Allison: GDE for Android and Kotlin, author of https://blog.stylingandroid.com/, he writes very nice technical posts about Android.
- Nick Butcher: Design + Developer Advocate @Google, he gives nice items about Android UI/UX. Main developer of Plaid.
- Joe Birch: Android Lead & Senior Engineer @Buffer, he writes very often, from Clean Architecture to news features in upcoming Android version.
- Pierre-Yves Ricau: Software Lead/Senior @Square, author of leakcanary. Contribute to Square OS projects such as Okhttp or Retrofit.
- Roman Nurik: Designer on @Firebase at @Google, a great designer and developer at the same time for Android.
- Hiroshi Lockheimer: SVP Platforms & Ecosystems (Android, Chrome, Chrome OS, Play) @Google. Very good to tease upcoming Android versions and phones.
- Android Developers: News and announcements for developers from the Android team.
- Cyril Mottier: Mobile Product Devsigner & Android expert. Gives awesome technical talks about Android.
- Chris Banes: Android Developer Relations @Google. Writes great Android technical blog posts.
- Jake Wharton: One of the most influential Android developer in history. Previously @Square, now @Google.
The subreddit https://www.reddit.com/r/androiddev/ is a very good source of items. Interesting discussion may happen and great developers as Jake Wharton do not hesitate to give elaborate point of view/answer on various items.
Lastly you may found great newsletters as Android Weekly http://androidweekly.net/. Each Sunday you will find a list of tutorials, screencasts, news, and library posted during the week. Going through them is for me a perfect way to start the week Monday morning.
I trust an engineer who is able to talk about different solutions and would be able to size precisely the consequences of using each of them, without putting personal emphasis on any. For me Technology Watch is having this same talk with myself other and other again.