What Android developer career paths are available and viable in 2020?
The beginning of a new year offers a fresh start for us all. A chance to consider where we’ve been, and where we’re going. For me, this typically includes time to examine my career and to think about where I’d like that career to go.
I’m pretty sure I’m not alone in this either. Developers are constantly asking questions like “Should I learn framework X or framework Y?” and “Should I be a specialist or a generalist?”. These questions largely stem from a desire to smartly invest in our careers to set us up for long term success.
In this week’s issue, I wanted to explore this idea within the context of Android development. I want to throw out and examine a few general questions like “What languages should I learn?” and “How can I get my name out there?” and then unpack some specific questions to shed light on the different ways in which you might consider building a career as an Android developer, and really just as a developer in general.
“In what ways has your career surprised you?”
You ready? Let’s dive in.
Common Android Development Career Path Questions?
Is Android development still a viable career option?
Of all the questions I see about Android development career paths, this is the most common; and I believe the answer is Yes. Do a quick search for “Android” jobs on LinkedIn, and you’re presented with over 268,000 results.
While Android has been around for over a decade, and the operating system does seem to have reached some level of maturity, the job market doesn’t appear to be slowing down. There are still many many companies out there looking for skill Android developers.
So, if you want to build apps that run on Android devices, I think you’ll be able to find a job for at least a few more years.
Is Native Android development still a viable career path?
This is probably a close second in terms of popular Android career path questions, and is honestly a lot more interesting to me. Companies are clearly still looking to build apps and tools that work for Android, but are they moving away from native Android development in favor of cross-platform solutions like Flutter or React Native?
Again, looking at job postings is, I think, a reasonable metric to gauge the market interest in these different skillsets.
Let’s compare the job posting results for a few different searches:
- “flutter” – 2,583 results
- “react native” – 13,927 results
- “android java” – 33,487 results
- “android kotlin” – 9,542 results
- “android c++” – 10,159 results
By these results, we can see that building Android apps natively with Java, Kotlin, or C++ seems to still be what most employers are looking for. So I think it’s safe to say that native Android development, and probably native iOS development are both perfectly viable career paths for the coming years.
Conversely, there’s also clearly demand for cross-platform developers as well, and we’ll explore that more as we continue on.
What languages should you learn?
What programming languages should you learn to build a career in Android development? If going the native Android development route, then you have three options: Java, Kotlin, and C++.
If doing typical Android app development, you’ll likely be considering between Java and Kotlin, and with Google’s “Kotlin First” approach to modern Android, I think Kotlin is a good investment of your time and learning effort.
If you’re going to be doing lower level SDK work or building high-performance games, you may need to work with C++
Now, are these the only languages you need to know? Maybe to get started, yes. However, having familiarity with multiple languages can improve the way you think about code and how you write code. As you become familiar with new language features and paradigms, you’ll see how you can apply those to other languages and challenges as well.
Being comfortable with at least one scripting language is a great idea as well as it’ll enable you to automate development workflows when the need arises. Options such as Python, or Unix Shell Scripts could be a great choice here.
How can you get your first job?
Breaking into an industry with your first job can be a daunting task. The process is often filled with stress, uncertainty, and lots of waiting to hear back from recruiters. A few things I found helpful when searching for my first job include:
- Setting realistic expectations about where I’m going to work. Not everyone can, or should, work at the big companies like Google, Amazon, Facebook, etc. There are many many wonderful places to work out there, and exploring more options improves your chances of finding that first job.
- Demonstrating job competencies. A big factor in me landing my first Android development job was the fact that I had published an app to the app store and could explain to interviewers how I had built it, what the app publishing process was like, and what the major challenges were in writing production software. Having some form of sample project, portfolio, or published work is a great way for recruiters and interviewers to see what you can do. This will hopefully then improve your chances of getting job interviews, and of doing better in those interviews.
- Reach out to people you know in the industry, and ask if they have entry-level or internship opportunities available. Direct referrals can often get your resume placed at the top of the list which is a huge advantage in getting called for an interview.
- Stay positive. Like I mentioned before, finding a job is stressful and challenging. It can make our imposter syndrome flare up in a major way, and make us question whether or not we have the required skills to do the job we want. Remember that not receiving a job offer does not mean you can’t do the job. There are many factors involved, and sometimes all we can do is stay positive and move on to the next opportunity.
There are numerous resources out there with Android interview prep and questions. One such resource that was recommended to me can be found here: How to hire a great Android developer.
How can you get your name out there?
Once you’ve found your first job, you might start looking for ways to add to your career beyond your job. For this, there are a number of ways you might look to become more involved in the developer community including:
- Open source contributions
- Event organizing
- Video Tutorials
- Social Media
Any of these are great ways to add your experience and ideas to the public discussions around topics your interested in. The internet makes it easier than ever to connect with people all over the world and to carve out your own niche of interests, ideas, projects, and ways of giving back.
Career Options for Developers
Now that we’ve discussed some of these higher-level questions, I want to get more specific and focus in on some more concrete comparisons of different career paths available to us as software developers.
Developer vs Educator
Do you want to get paid to write code, or would you prefer to get paid to teach others how to write code?
I included this here because it’s becoming more and more viable to make money online by teaching others how to write code and to become software developers. Whether it’s at established edTech companies like Pluralsight and Udacity or with your own courses, it’s possible to make a living by teaching others.
Your career path as a developer doesn’t have to include getting a job to build someone else’s app. If you have a passion for teaching, mentorship, and helping others, then you might consider either a full-time, or at least a part-time, job in some form of developer education.
Freelance vs Company
Do you have to go work for someone else to make money as a developer? The simple answer is, No. If you’re someone that would prefer to work alone, or to work on a variety or projects, or to have greater flexibility in when/how you work, then freelancing might be the way to go.
As a freelancer, you’re likely to find greater flexibility in your work. This may also manifest as uncertainty. You may not always know where your next project and paycheck are coming from. You may get bogged down in the more administrative side of running your own freelancing business.
You may also find that the freedom provided by freelancing is a great fit. You may really enjoy the business aspect of freelancing, and in particular, you might find freelancing enables you greater freedom to pursue other interests such as content creation or travel. For more on what it’s like to be a successful freelancer, you can check out this post.
FAANG vs Startup
If you prefer to work at a company, what type of company do you want to work for? Do you want to be in the fast-paced, VC-backed startup world? Do you want to work at the major tech giants like Google, Microsoft, and Amazon? Do you want to work for a less exciting, but very stable company?
Not all companies are created equally. Similarly, different business groups, organizations, and teams may operate very differently even within the same company.
When deciding what type of company to work for there are many questions you can ask yourself and use to filter out the options:
- Do you want to work at a well known company?
- Do you prefer to work on a small team or a large team?
- Would you rather get paid more, or work from home?
- Do you prefer to know everyone you work with, or would you rather work in a large organization?
- What’s more important, fun perks like snacks and ping pong, or reasonable working hours?
- How much project ownership will you have?
- Would you prefer to go deep or wide on a project?
I’m sure you can think of many questions of your own. What do you value in your work? What tradeoffs are you willing to make. What have you liked about past companies, and what have you disliked? Taking time to consider these things will help guide your future decisions.
IC vs Manager
When you think about your career, do you see yourself writing code forever? Do you see yourself managing others? Do you want a mix of both? These are great questions to consider as many companies have different career paths to help fit what you’re looking for. The most common split is between an Individual Contributor (IC) role and a Manager role.
The exact requirements and responsibilities of each path will differ based on company, but in general, the IC path is going to be more focused on your writing code, while the management path will be more focused on making other developers more successful.
Both have their pros and cons, and both are completely viable.
Whoa! In this short article we’ve already touched on a lot of questions, comparisons, and potential career paths.
If you’re feeling a little overwhelmed that’s perfectly okay. I think we all become a little overwhelmed, lost, or even discouraged at times when considering our careers. There’s a lot to navigate in this game of life. The great thing is, we have time and resources available to us to learn new skills, pivot in a new direction, and build a career that we love. The trick is to be intentional about it. That doesn’t mean you have to plan out your whole career, that would be impossible given the rate of technological change, but you should regularly take time to think about what’s important to you, what you enjoy doing, and to survey the landscape of the industry around you and look for those areas where your passions, values, and financial needs align.
“What’s your next career goal? Get a promotion? Speak at a conference? Become a freelancer? Find a job with more vacation days?”
Frequently Asked Android Developer Career Questions
Absolutely. You can make a very competitive income, and build a very satisfying career as an Android developer. Android is still the most used mobile operating system in the world, and the demand for skilled Android developers remains very high.
Yes. By learning Android development, you open yourself up to many career opportunities such as freelancing, becoming an indie developer, or working for high profile companies like Google, Amazon, and Facebook. The demand for native Android developers is still very high, and learning Android development has never been easier thanks to increases in online learning materials.