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.
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.
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”:
- Learn basic tooling, project structure organization, guidelines and best practices to follow.
- Consolidate Android App Architecture concepts (MVP, Clean Architecture and MVVM).
- Learn top used third party libraries for modern Android apps like RxJava2, Dagger2, Firebase and the new Architecture Components like Room and LiveData.
- Unit testing and integration testing, learn and apply Continuous Integration and static analysis tools in app development.
- 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.
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:
- Udacity Android Courses. There are the paid tracked Nanodegrees and for free you can go through the individual courses, I liked specially this courses because they are teached by the people at Google.
- Coursera Android App Development Specialization by Vandervilt University.
There are also many sources of knowledge to keep up to date of the Android development ecosystem:
- Medium: in this blogging platform are a lot of good publication about android like AndroidPub, ProAndroidDev and Mindorks that write all kind of articles related to Android for different levels of expertise. There are also official Google publications like Google Developers and Google Developers Experts that write about Android and many more technologies.
- Github: platform of open source projects where you can spend hours diving into the source code all kind of projects and technologies.
- Android Newsletter: Android Weekly and AndroidDev Digest.
- Android Podcasts: Fragmented Podcast and Android Developers Backstage.
- Google Official Resources : Official Android site and their youtube channel with lots of videos and all I/O sessions.
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.