Community 👥

The most popular theme was centered around the Android “community.”

What’s the “community” you might ask?

The Android community is You, it’s Me, its anyone and everyone building for, and contributing to, the Android platform.

Anita Singh Engineering things at Winnie

Ryan Harter GDE & Android at pixiteapps

Interacting with the community can be incredibly useful and rewarding:

generators of documentation

filled with helpful people that love to answer questions and help solve problems

source of support and validation

place to find mentorship

builders of amazing open-source tools and libraries

It helps you stay informed. It will help you solve problems and be more efficient. You also may build great friendships, and discover that the members of the community you’ve looked to for tools and support are extremely welcoming and willing to help.

Orhan Obut GDE & Software Engineer at Atlassian

There are many ways to connect with the community:

meetups

conferences

Twitter

Reddit

blogs/podcasts/YouTube

…and more.

This post from Tyler McCraw is a really great look at the many ways you can interact with and learn from other Android developers.

As others mentioned in these tweets, I wish I would have been more involved in the Android community early on in my career. If you’re someone that’s been considering reaching out to someone on social media, or going to a meetup, or sharing a blog post… I highly encourage you to take that step 🙂.

Annyce Davis AndroidDev, Conference Speaker, and Instructor

Miquel Beltran Android dev

Learning 🖥

The Android platform, tools, and patterns are constantly evolving, and as developers we must continue to learn to keep up.

If you’re new to the platform and/or starting out in a career this learning curve may seem especially daunting. You may start asking “how do I keep up with all of this?” or “how do others seem to have all the answers?”

I remember early in my career feeling this constant sense of not knowing enough and always needing to research the latest tools and trends so I could be useful/relevant to my team.

“no one knows it all,…” — Rebecca Franks GDE & Android dev at Over

The good news is that, in fact, nobody knows everything. Nobody is always up to date on the latest and greatest from the entirety of the Android platform.

Adam McNeilly Android dev at okcupid

Rebecca Franks GDE & Android Dev at at Over

Sam Edwards GDE & Android dev at at CapitalOne

One of the big challenges in learning anything new is discovering what to look for. You often don’t know what you don’t know.

I often was conflicted between wanting to seek out answers and wanting to seem like I had the answers. (I also had never heard of Imposter Syndrome at the time)

That’s why this tweet from Craig Russell stuck out to me so much

Craig Russell Android dev at duckduckgo, Android Instructor with caster_io

“not asking questions is a good way to avoid looking silly and a great way to avoid becoming smart” — Craig Russell Android dev at duckduckgo

It’s perfectly normal and expected to not have all the answers. No one does. It’s also completely normal to feel like there is so much to learn and too much new stuff to keep up with. You’re right.

A big key towards learning (and maintaining a balanced life) is to prioritize what you need/want to learn.

Once you know what your priorities are, don’t let shame or embarrassment keep you from seeking out answers. Everyone has different skills, experience, backgrounds and everyone will have different questions and answers.

Evaluate 🤔

There were a lot of people interested in Jake Wharton’s thoughts about objectively evaluating tools/patterns/etc that come from Google.

This is great advice, particularly for Android where there are many ways to accomplish most tasks. Google often recommends a general approach or provides a solution and because it’s from Google it’s easy to take that as THE way to do things.

I certainly thought this way when starting out. Spending most of my first 2 years developing for Android on my own or in school projects, I didn’t know where to look for answers so I generally went to the Android developer docs and treated the recommended solutions as gospel.

Jake Wharton Android dev at Google, speaker, and contributor to multiple libraries your probably use in your apps

We shouldn’t single Google out as a special case to evaluate fairly. Any tool, library, pattern, etc should evaluated fairly. The same goes within your teams and projects.

“a good engineer is curious about everything and questions everyone…” — Andreas Ioannou Mobile software engineer

As a junior developer, or a dev new to a team/project, it’s easy to defer to others on your team that you view as more experienced and/or knowledgeable. They very well might be more knowledgeable, but that doesn’t mean their work and ideas shouldn’t be evaluated the same way anyone else’s are.

Everyone on your team should have a voice and the opportunity to contribute to and evaluate ideas and code. In doing so, better solutions may be found and more knowledge shared.

If you find yourself not speaking up, or not asking questions because you assume you’re wrong I would really encourage you to try and put that fear aside and add your voice to the conversation.

The same can be said for those on the other side. More senior members of teams should be working to ensure everyone has a say and is contributing their thoughts/ideas. If you find that someone isn’t, try and have a conversation with that person and understand what you can do to make sure they feeling comfortable and encouraged to contribute.

Andreas Ioannou Mobile Software Engineer

Useful Tools 🛠

Tools make developers’ lives easier.

No doubt about it.

But if you don’t know what tools are out there, they can’t help you.

Developers shared a few tools they wish they would have known about or leveraged sooner.

Android SDK Search: A Chrome extension that adds an ‘ad’ omnibox command and view source links for the Android SDK. Also available as an app Genymotion: Awesome Android emulator Android Studio Shortcuts: Quickly perform tasks without touching your mouse

Giorgio Natili Mobile Engineer

Kaan Mamikoglu Android dev at MyDrive

I can’t understate how useful the right tools can be. When I first learned of Genymotion it really did change my life. I used to alter my entire work/study schedule for a day if I forgot a physical device to test on because the stock emulator was so poor. (This was years ago. I actually love the stock emulator these days). After using Genymotion I was finally about to efficiently test on an emulator and I became more productive.

I also want to add throw in my own suggestion here of a really useful couple of tools that I didn’t discover soon enough.

Git & GitHub

Git is a widely popular, open-source solution for source control (ie. managing changes to your projects). GitHub is a platform for hosting & sharing projects which uses Git to track changes.

Source control is a vital part of my daily work habit today, and I highly encourage you to give it a look if you haven’t before.

Udacity has 2 free courses to help you get started:

Architectures / Patterns / Languages 📚

We’re often on the look for the “best” or “correct” way of doing things. When we don’t have as much experience in a particular area, it’s natural to want some guidance so we don’t stray too far down the wrong rabbit hole.

That’s always been a challenge for new Android devs.

What UI architecture should you use?

MVC? MVP? MVVM? MVI?

Activities, Fragments, or Custom Views?

Enums: Yes or No?

Java or Kotlin?

Native, React Native, Flutter ?

It’s easy to become really invested in these debates and forget that the end goal is to build working software that benefits our users. Users want a great experience, and typically don’t care how that’s provided behind the scenes.

Ask questions, study, check out sample apps, learn about these different concepts if you want. But remember that you don’t have to know them all right now. Often the choices will be made for you based on whatever your team is already using.

Adam McNeilly Android dev at okcupid

Eric Maxwell Android Developer and Instructor at bignerdranch

Anthony Senior Software Engineer for Disney ABC Televsion Group

If you’re looking for some guidance on these types of questions, here are a few resources to get you started.

Sharing 📝

Whether you’re just starting out, or have been an Android developer for years, your experiences and perspectives are worth sharing.

“share your knowledge. This forces you to understand the topic at a deeper level…” — Mike Wolfson GDE & Android dev at The Nerdery

It’s common to hear people claim they have nothing worth sharing, or that because someone else already discussed a topic they can’t add their take.

In reality, I think it’s quite the opposite.

You can document your process, bugs you track down, interesting ideas or implementations, your struggles, your triumphs… really anything.

You could share to document things for your future self and/or for others. Either way, don’t let yourself be discouraged because others have discussed similar topics before.

The fact that it’s your take makes it unique and it could be exactly what someone else needs to make a topic click.

Craig Russell Android dev at duckduckgo, Android Instructor with caster_io

Aman Android dev

Mike Wolfson GDE & Android dev at The Nerdery

Planning 🗓

In addition to learning the Android platform, it’s patterns and tools plenty of other challenges arise.

Planning and scoping of work was noted as one such challenge.

Learning to accurately break apart, scope, and plan your weekly work will set you up for success by placing reasonable expectations on yourself. This takes time, experience, and often a lot of trial and error.

If you’re starting a new, or especially your first, role you should talk with your manager/team about how your planning process works and what the expectations will be. Then practice breaking down a task, estimating the required time, and comparing that to how much time it eventually takes.

Through this repeated process you’ll be able to more accurately plan and help your team consistently reach its goals.

Jonathan Maltz Engineer at Yelp

Jordan Carlyon Android dev

Misc ⌨️

Other challenges shared were the hiring/interview process, work-life balance, and product aims like boosting engagement and user retention.

The variety in these illustrates this fact: there will always be new, and varied challenges.

You won’t, and can’t, have all the answers all the time. But you’re not alone 😀

Mark O’Sullivan Mobile app developer at ShotScope

Zarah Dominguez GDE & Android dev

Divya Jain Google Certified Android Developer

Takeaways

Android development is constantly evolving. It can be overwhelming, but learning to accept, manage and embrace that change will set you up for continued long-term growth.

How can you manage and embrace that change?

curiosity — Be curious. Ask questions. Seek out answers.

— Be curious. Ask questions. Seek out answers. self-compassion — Avoid putting pressure on yourself to learn/try/know everything.

— Avoid putting pressure on yourself to learn/try/know everything. community — The developer community is an awesome support system. It can be a source of information, questions, support, validation, and friendship.

I’d love to hear more about the challenges people face when learning Android, starting a career as a developer, or about tips/tools/advice on how to overcome those challenges. Leave a comment, or share on social media.

The more we share about these, the more we can help others avoid the same.

More Resources

The Android developer community is always ready & willing to help out. Here are some more great resources to help you develop for my favorite mobile platform 🙂