The Path of the Android Developer

A personal step by step guide to become a better Android Developer and Software Engineer

Posted by Felipe Joglar on October 4, 2017    

In the way to advance in the direction I like as a software developer/engineer I need to make a change in my routines and learning mechanisms.

I am about to tell you the why and the how I’ll make this process to upgrade my skills in software engineering and android development.

Learning motivation.

After a year working as an Access VBA programmer in my current company I feel like I need a change to some technology more innovative where I feel more motivated to learn and grow. Don’t misunderstand me, I like where I’m working, the project and the people around me, but I think I need a change to a more potential technological stack.

Why Android?

This is a hard question because there are many technologies to start from. I’ve choosen Android because I already have some basic knowledge, I like the platform and Java (also the possibility of learning Kotlin). Also it has a great community that shares a lot of knowledge and is very welcoming.

With this in mind, I think it’s a good choice to focus my future in learning mobile (also web development would be a winner choice).

The learning process.

Here comes the hardest part of all the process, it requires time and effort, and with a full-time job this is even harder. But, what the heck, we are here to play and fight for a better future, at least a funnier one.

So to keep track of the journey I’ve made a list of all the “little” steps I would make to start learning in order to become a proficient Android developer. In addition to the list of steps, I’ve committed myself to document all the process via blog posts (this is the first one), which will make me take a disciplined approach and to go deeper in the concepts and fields I study in order to be able to explain it with words and examples to other people. So here is “the list”:

  1. Learn basic tooling, project structure organization, guidelines and best practices to follow.
  2. Consolidate Android App Architecture concepts (MVP, Clean Architecture and MVVM).
  3. Learn top used third party libraries for modern Android apps like RxJava2, Dagger2, Firebase and the new Architecture Components like Room and LiveData.
  4. Unit testing and integration testing, learn and apply Continuous Integration and static analysis tools in app development.
  5. Advance in knowledge of Android SDK specifics.

Through the long process of learning all this stuff I’ll will also focus in getting better in general software engineering through the reading of consolidated books:

  • “Working Effectively With Legacy Code” by Michael C. Feathers.
  • “Clean Code” by Robert C. Martin.
  • “The Clean Coder” by Robert C. Martin.
  • “Clean Architecture” by Robert C. Martin.
  • “The Pragmatic Programmer” by Andy Hunt & Dave Thomas .
  • “Patterns of Enterprise Application Architecture” by Robert Fowler.
  • “Code Complete 2” by Steve McConnell.
  • “Head First Design Patterns” by Elisabeth Freeman & Kathy Sierra.
  • “Design Patterns - Elements of Reusable Object-Oriented Software” by the Gang of Four.
  • “Introduction to Algorithms” by Thomas H. Cormen.
  • “Java: A Beguinner’s Guide” by Herbert Schildt.
  • “Effective Java” by Joshua Bloch.

Resources.

Here are various resources from which you can learn and keep up to date with Android development. There are much more of them if you google it and also you can find many answers to specific problem in forums like Stack Overflow.

I’ve already done some free online courses on Android and I would recommend this two:

There are also many sources of knowledge to keep up to date of the Android development ecosystem:

Conclusion.

So this is the beginning of a long and difficult way to learn all the stuff I have in mind, so to finish this proposal I have to keep the motivation high and have fun while doing it. The keep these two premises at the higher possible level I will try to focus in learning one thing at a time, make code examples and maybe a side project in which to apply the on going knowledge and keep the writing of the learning path in this blog to share with the community.

The way to become a better software developer is hard.

Updated on 07/11/2017.