The Pathway to Senior Android Developer
For all of the Android developers, one of the most frequently being-asked questions by recruiters is, “How many years of experiences have you got on Android so far?”.
People evaluate others’ abilities by the years of experiences.
Interesting. Let’s assume there are two developers, both of whom have the same 5 years’ experiences, but one of them kept learning new skills during his career life, while the other one did nothing but only maintaining the app. Can you say they are at the same level? No.
Having 5 years’ experience is not the same as using the same experience for 5 years.
So, how to learn as much skills as we can in a short time? In some other words, is there a pathway that we can follow in order to improve ourselves on Android development? The answer is YES.
For most of the juniors, who already have good understandings on life cycles of Activities and Fragments, and already known how to write custom views, I would like to suggest them to be focus on the skills below.
- The ability of network debugging. It is extremely important that mastering at least one of the popular network proxy tools, such as Charles, mitmproxy or Stetho, as not all the errors happening on the client side are due to the bugs on front-end, so you need a handy tool to investigate what on earth is going wrong.
- The ability of checking memory leaks/usage. Memory leak is one of the fatal errors which definitely should not be left in the app, so (hopefully) all the developers are very careful on it. Some of the developers would choose Memory Analyzer to track memory leaks and some would choose Leak Canary. But the usage of memory is of importance as well, at least no user would like to use an app might exhaust the RAM. I would suggest to use Android Monitor to track it, and if you have found the usage of RAM used by your app is increased when it is re-opened, you should keep on eye on it and investigate the reason before launching it.
- The ability of reducing overdraw. Solving overdraw is difficult, as the developers have to sort out a best practise to trade off the performance and the requirements of effect raised by clients or designers. But we should know that there are a number of tools to know the severeness of the overdrawing. For example, you can turn on the Drawing Settings on your Android phone, or using some of the tools such as AVD manager/Layout or even Stetho to see if the views on your screen affect the performance of your app.
- Database and Cache. I am not saying how to write SQL, but the ways to debug the values cached in your database. Again, Stetho is one of the most useful tool, by which you can even edit the cached SharedPreferences in your app. There is another tool called SqlLiteManager, which can also help you to see the values in your database clearly. But since you have Stetho, why do you use SQLiteManager?
- You should know how to use logcat. It is raw but useful. And I reckon it is a very important skill that knowing how to filter texts or showing time on the logs printed by logcat.
- A lot of libs and structures. Such as RxAndroid, Retrofit(and Volley)…I won’t (and can’t) list all the libs you have to master in the future, but you should know the pros and cons of each of the libs, including their context, limitations or alternatives.
- Knowing how to test the app. Testing in software engineering does not mean trying each of the functions and seeing if they works well. At least writing use cases and going through the unit tests is a key point.
- Others, whatever they are, anything useful to make an app.
After you have mastered all the skills above, you can finally be a … mid level developer (maybe or even not)! You might be depressed, as you have already learnt so many skills but still cannot be a senior developer? If so, but how?
On my understanding, if someone is entitled with “senior”, that means he must be able to work independently and know how to being a mentor to instruct juniors. So I think you should have:
- Good communication skill. You should be able to explain any of the mechanisms of the frameworks you are familiar with. You can try to do it if you have not done it before, as it is an effective way to test if you are able to interpret something logically and clearly. If you cannot, train yourself.
- The ability of reinvent the wheel. There are so many 3rd-party libs on github and you can try to get involved into any of them, being a contributor is not only honourable, but also a way of self-improvement. As the tools you created should be able to run on any of the apps, so you have to consider every edge cases, which is a good approach to deepen your understanding on Android development.
If this article helps you, please “Like” it. And if you have any of the great idea on this topic, drop a line on the comments! Thanks for reading. :)