My favorite people and resources to learn Android programming from

Keep your skills razor sharp by following these fantastic people and resources in the Android community

One of the best ways to learn Android programming is to surround yourself with people better than you — then watch and listen intently.

So here’s my attempt to help you find the best to learn from. Below is a list of some of my favorite people and resources in the Android community to help in your quest for excellence.

A big thanks to all these people and groups for making us all better Android programmers! 🤘


🐦🌟 Twitter

I’ve really enjoyed following these Android community members on Twitter.

These folks aren’t just knowledgeable teachers and key open-source contributors. They’re also positive-minded, hopeful, and friendly. Those qualities are just as important to me as being an expert in the area.

Chiu-Ki Chan — A devoted learner and teacher, Chiu-Ki does it all. She interviews folks, runs 360|AnDev, teaches on Caster, speaks, draws, writes, and probably does 100 other things I don’t know about. 😉

Donn Felker— Not only an Android GDE, Donn’s got a great blog full of helpful posts. He’s also half of the Fragmented Podcast along with Kaushik Gopal (who’s pretty sharp in his own right). And if that weren’t enough, Donn’s also the head honcho at Caster.io, a fantastic site for video tutorials.

Jake Wharton— Honestly, if you don’t know who Jake is, you might be in the wrong place. Just go here now. 😆

Kristin MarsicanoAn instructor at Big Nerd Ranch, Kristin has a wonderful down-to-earth vibe and is clearly a great teacher. Her recent talk at 360|AnDev on the activity lifecycle is a great refresher for something you probably don’t think about enough.

Ryan Harter— Ryan’s a GDE who’s been teaching a lot lately about how to reduce boilerplate code. He also helps run GDG Chicago West and is an instructor at Caster.

The Practical Dev —OK, this isn’t technically Android specific. But it’s such an informative and entertaining commentary on programming, I had to include it. Sometimes reading general programming posts can be really enlightening (and hilarious).

(Note: It’d be impossible to write about every single person who’s a great Android teacher, but you can find more on this extended Twitter list that I’ll keep adding to.)


📻 Podcasts

You should listen to Fragmented!
  • Fragmented— Produced by the aforementioned Donn and Kaushik, this is probably my favorite podcast. Two independent developers with their unique personalities and perspectives, with a focus on purely technical talk for Android.
  • Android Developers Backstage — The most official Android podcast you can get your ears on. Straight from the people who…well, created Android.
  • Material— Material isn’t a technical podcast, but is a lighter listen and a great way to get your Google news. Great for a Friday afternoon. Voices include Russell Ivanovic (from ShiftJelly, creators of Pocket Casts), Yasmine Evjen, and Andy Ihnatko.

📺 Videos

An example of Realm’s super cool synced video and presentation.
  • Caster.io — Another Donn Felker production, Caster has a over 100 lessons (and growing) of stuff you should know. If you ever watched a video from RailsCasts back in the day, it’s got a similar vibe.
  • Realm.io — I’m admittedly a little confused by Realm. They have a cool database product, but on the side they also host fantastic talks — transcribed with video and slides that are synced up beautifully.
  • Android Dialogs (YouTube) — A fun little video series where the aforementioned Chiu-Ki Chan and Huyen Tue Dao interview a bunch of folks in the Android community.

📰 Newsletters

Android weekly — the best in Android all in one place.

📚 General Reading


🗣 Conferences

To be totally honest, conferences are tough for me. No fault of the conferences — I’m just terrible at striking up conversations with new people! 😶

Of course they do have a ton of value — meeting new people and learning directly from the community is an irreplaceable experience.

Jay Ohms, Russell Ivanovic, Kaushik Gopal, and me @ Google I/O 2016. 😁

Google IO is the only Android-specific conference I’ve been to, so I don’t have much to compare to. The sessions were top notch (logistical issues notwithstanding), and just about everyone you’d want to meet is there. The downside is that it’s so large, it can be hard to get into the sessions you want or meet up with new people you don’t already know.

There are two conferences I’ve never been to but have my eye on: the intimate 360|AnDev Conference (hopefully it’s back next year) and the more established Droid Con NYC (maybe next year I’ll remember to actually get a ticket).


Whether you’re just starting out or are a wily vet of the Android programming world, I hope this article was helpful to you! If so, please do hit the 💚 button below.

And if you have any Android favorites of your own, please share in the comments or on Twitter — I’d love to find even more great people and resources!

Along with learning daily, we’ve been working really hard to make the all-new Basecamp 3 and its Android app as great as they can be. Check ’em out!

5 steps to creating frustration-free Android test devices


How to setup devices so that manual testing doesn’t crush your soul

A few days ago, I picked up one of my test devices to try out some new code. I couldn’t believe how frustrating it was.

I wasn’t logged into the right accounts. I didn’t have the right apps installed. By the time I finished testing, I couldn’t even remember how to reproduce the bug.

And like any Android programmer, my testing frustration was magnified because we support numerous OS versions/devices.

To save my sanity, I built a system for a unified, predictable setup on every device. Here’s how to do it.

1. Install the OS versions you support

Depending on what API levels you support, ideally you have a 1–1 device to API ratio. This isn’t always possible of course, but it’s helpful.

So first things first — take an inventory of your devices and which ones support which OS versions. Then examine what your customers use the most and optimize for those scenarios.

With that in mind, my lineup looks like this right now:

To truly embrace your OCD like me, slap a version label on the back of each device. 🤓
  1. Nexus 5 (5.1.1) — The Nexus 5 the most valuable device in my lineup. It’s supremely flexible and can run all the OS versions that most users have (4.4–6.x).
  2. Nexus 5 (6.0.1) — More than 50% of our customers are on 6.x. This is currently my baseline test device.
  3. Samsung Galaxy S6 (6.0.1)— Samsung devices make up a good chunk of our users, so it’s important to have at least one representative device. Their implementation of certain features (particularly WebView) can be different, so it’s important to test non-stock Android devices.
  4. Nexus 5x (7.0)— A newer device where I can test the very latest Android builds and features.
  5. Nexus 6P (7.0) — Not totally necessary, but it can be helpful to have one big screen device to see how things look in the real world, as compared to something closer to the 5″ size. Also gives me some flexibility to move down to 6.x as needed.

(I admittedly don’t have a 4.4 device, and rely on a Genymotion VM to test for that. I’ve debated knocking down my Nexus 6P down to 6.x, and flashing a Nexus 5 to 4.4).

2. Install and configure a common set of testing apps

You’ve probably got a common set of apps you rely on to test your app. This is the time to make sure they’re all installed, logged in, and preferences tweaked to your liking.


App choices will vary person to person, but here are a few that I rely on and recommend:

  • 1Password — Keep all your passwords secure, and makes logging in to apps so much easier. Always the first app I install.
  • AZ Screen Recorder— Great for screencasts or to create gifs to share with teammates.
  • Chrome Beta — We do a lot of WebView work, so we want a heads up on how future versions of Chrome/WebView will behave.
  • Dropbox — Automatically uploads screenshots so I can grab them from my computer quickly. I also use it to do some file-based testing.
  • Flesky / Swiftkey / Google Keyboard — Writing on our homegrown rich text editor, Trix, is a big part of our app. So we test various keyboards frequently.
  • Keep — Super handy to save quick notes, URLs and whatever else synced up across devices.
  • Solid Explorer — The best file manager I’ve found. Moving things around in the file system can be very handy.

3. Login everywhere

It sounds painfully obvious, but with so many devices floating around, you might not actually be logged in everywhere you need to be. Inventory your standard places to login and do it.

Typically for me this means logging in to just a handful of places:

  1. 1Password for Teams
  2. Google — Personal
  3. Google — Work
  4. Dropbox

It’s basic but there’s nothing more annoying than getting into your testing and realizing halfway through you’re not logged in to the right accounts.

4. Use Nova Launcher for a consistent experience

This was the real game changer for me. Using Nova Launcher, you can make every device look and work the same.

Nova Launcher all the things. 🚀

For me the biggest irritation was the launcher/app organization being different on every device. Everything was hard to find and it slowed me down.

Nova solves all of this.

You can setup your home screen, dock, and app drawer once, then share that across devices. When you pick up another device, your apps are in the exact same place as you expect. It’s predictable and fast— no hunting, no mental overhead.

Here’s how to do it.

  • Pick your favorite device and install Nova Launcher. Buy and install Nova Launcher Prime (this unlocks a set of handy features).
  • Set Nova as your home screen launcher, replacing whatever you’re currently using.
  • Open Nova settings and play with all the settings. There’s too much to cover here, but take the time to make it work exactly how you want. Nova’s customizations can do anything your heart desires.
  • When you’re happy with the setup, in settings go to “Backup & import settings”. Backup your current settings to Dropbox (or wherever).


  • Pick up one of your other devices. Install Nova again.
  • Go to “Backup & import settings” again, but this time do a restore. Pick the file from Dropbox (or wherever) that you saved in the previous step. Repeat for all devices.
  • Voila — your devices now all look and work the same!

The long-term beauty of using Nova is that as your apps or preferences change, just upload a new backup and restore it on all your other devices. You’re all set again!

5. Tweak all your sytem settings

The last thing to do is go through all your system preferences and get them working the same on each device. For me that means:

  • Making sure all my wifi networks are setup (home, office, favorite coffee shops)
  • DND/total silence is activated. Test devices don’t need to notify me about anything.
  • Developer options and USB debugging is enabled
  • Screen stays awake when plugged in (developer options)
  • Screen brightness is set to a level I like (with adaptive brightness off)

Optional: live with it

One thing I like to do is swap devices from time to time and “live” with our app for a day or two on that device.

Using the app on a real device under real scenarios gives valuable perspective. You can tell if everything looks, feels, and performs as you’d expect.

To make this process easier, a couple tips:

  • Use a nano SIM from your cellular provider, and keep a SIM card adapter set handy. Even though all newer devices use nano SIM, you still might run into micro SIM slots (or if you’re really lucky, a standard SIM slot!)
  • Install apps that you use outside of work. This helps ensure you don’t jump ship back to your daily driver, and you give the test device a real shot. But keep your personal apps in a separate tab in Nova’s app launcher. That way your testing apps are still front and center, but you can still get to the fun stuff and live with the device for a bit.

That’s it, I’m glad you made it this far! Following these steps should help reduce your manual testing frustrations, and hopefully keep you in the zone doing the more fun stuff (like programming everything that needs to be tested!)


If you liked this post, please do hit the 💚 button below. I’d really appreciate it!

I’m part of a fantastic team that builds (and tests) Basecamp 3 and its companion Android app. Check ’em out and let me know what you think!