Android, Android, Android... It's everywhere - smartphones, watches, tablets, TVs... Android is getting sexier and more stable with each release and, with a ton of learning material available, this is a great time to start learning how to develop for this platform.
The primary target audience of this article are fresh computer science graduates who are thinking about becoming professional Android developers. Basically, I wanted to write an article that I would have loved to have read 2.5 years ago, when I scored my first paid dev job.
In it, I present a roundup of facts and resources that will give you a clear picture of your future work scope. Start contributing quickly, experiment and enjoy yourself in the process.
Note: consider this post a cheat sheet that you can come back to anytime.
Know your tools, processes and your programming language
- Read a book about Java, the primary programming language for developing Android apps. I recommend Effective Java - read the chapters that you are interested in and feel free to jump around as much as you like.
Gradle - Get to know your build system and its capabilities. Start with the basic stuff like handling dependencies and application flavors.
Here at Infinum, we prefer working in Android Studio. A couple of words from my colleague Željko about AS can be found here.
It's not all about the code
I was sitting with our design team for a year (we had a smaller office back then and I was moved there with another colleague to handle a two-man project). During that period I started paying attention to the problems/challenges that designers have to cope with.
This helped me broaden my perspective and start seeing new stuff, like "where on earth is that pixel going", "Oh no, you didn't use that color/font", etc.
Paying attention to design details (UI/UX) will make you a better developer overall because you'll get a better understanding of the product development process as a whole.
You become more creative, and creativity is fun and essential for building great apps.
- Design in action - search for Design in Action
- Design patterns - Google's guidelines for making apps that behave in a consistent, predictable way
- Material design - the trend at the moment in Android UI/UX
- Android Niceties - a collection of screenshots encompassing some of the most beautiful looking Android apps
Some libs to start with, people to follow and a newsletter to subscribe to
There are problems in software development that tend to repeat themselves. This is why we (developers) create libraries to help us reuse code, simplify the usage and speed up the development process. Here are some of our favorite libraries that we use in almost all of our projects.
At the end of this article, you can find some influential Android players too. I suggest you follow them on Twitter.
Check this out for some implementation tricks: DevBytes.
Here are some of the Android development community hot shots you should keep your eye on. I linked their Twitter accounts because that's the easiest way to follow their work:
- Roman Nurik - Design advocate at Google
- Chet Haase - Graphics geek, comedy communicator, Android animator
- Jake Wharton
- Reto Meier - Head of Scalable Developer Advocacy at Google
- Cyril Mottier - Lead Android software engineer at Capitaine Train
- Xavier Ducrohet - Android SDK Tech Lead
- Jesse Wilson
- Romain Guy - Working on awesome stuff at Google
- Dan Lew - Android @ Trello, GDE, gamer and geek
- Chris Banes - Developer relations guy for Android @ Google
As for the newsletter - subscribe to AndroidWeekly to stay up to date with the hottest news in the development community.
Getting into the right mindset
Let's talk about "Increasing your chances of becoming an Android dev".
There is a lot of stuff to read, study and try out. Try to find the best theory-practice pair cycle in order to learn quickly and try out new stuff. The right balance is achieved with time and trial and error.
Tasks let you cross out stuff once you're done and give you a great sense of accomplishment. Plus, creating tasks will improve your analytical skills over time and you will get much better at structuring work and scheduling time. Prioritize work. You'll improve with time.
"Generally means to take a look back at events that already have taken place."
Why would I do that?
To learn from it! When you start a project, open a new text file you can always access and write down interesting things that you found out during the project. At the end, check out what you were doing, reflect on it and put a conclusion there. Great tools for that are Evernote and One Note.
Learn from your mistakes
Improve over time. Think of your mistakes as feedback and it's going to be much easier.
If you accomplish something great one day, acknowledge that as well. Don't write down only failures. The retrospective helps you consume the knowledge that you have acquired and reflect on it in a proper and constructive way.
Retrospective is a great tool, try it out!
Finally, getting your hands dirty
Vogella An extensive article on Android. Well structured.
Note: the instructions are for Eclipse.
Samples Learn how to import a project in Android Studio, set it up properly and mess with it in order to try out the platform.
Layouts - learn how to work with layouts in the app
Android talks Infinum's internal education platform where we share best practices, tips and tricks about the Android platform and third party libraries. Simply, a must watch.
Learning to be a developer is a process that doesn't involve only programming. It's about finding the right information, optimizing the information flow, applying that info, writing code, trying out different approaches, making mistakes and learning from them. Thus, gaining experience all the time and iterating in the learning process.
Follow the instructions above and increase your chances of staying "in the flow".
Follow me on Twitter: @vitongs