What do Android devs wish they had known?

What do Android developers wish they would have known when starting out?

I have my own thoughts, but I was curious what others in the Android community had to say. So, I asked.

The responses were illuminating, supportive and thought provoking. They came from developers of all experience levels, on a variety of topics.

Because the advice was so varied and relevant to developers of all skill levels, I thought It could be useful to consolidate it in a single place; making it easier to discover and share for those looking for tips, advice and validation.

So that’s what you’re reading now.

A community-sourced collection of useful tips, tools, and advice for Android developers.

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.

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.

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.

Immerse Yourself in the Android Developer Community

Tyler McCraw

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 🙂.

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.

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

“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.

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.

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.

  1. Android SDK SearchA Chrome extension that adds an ‘ad’ omnibox command and view source links for the Android SDK. Also available as an app
  2. GenymotionAwesome Android emulator
  3. Android Studio ShortcutsQuickly perform tasks without touching your mouse

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.

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.

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.

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 😀

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.
  • self-compassion — 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 🙂

So You Want to Be an Android Developer…
If I had a nickel for every time someone asked me: How do I become an Android Developer? Let’s just say I’d have a…

Annyce Davis

A year as Android Engineer
Challenges of my first year working as a developerproandroiddev.com

Lara Martín

How to be an Android Expert
My name is Chiu-Ki Chan and I’m going to tell you how to be an Android expert. Think of somebody that you think is an…academy.realm.io

Chiu-Ki Chan

Huge thanks to Estefania Cassingena NavoneJahir FiquitivaAndrea Baumann Kim for giving feedback and extra perspectives on this post.


I love to meet/talk/discuss and help where I can. If you want to chat or ask a question you can follow me on Twitter, YouTube, Instagram and Facebook.

Check Out My YouTube Channel

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.