Seven years ago, I started my career as an Android developer. Back then mobile development was still a relatively new field. I remember using Eclipse as an IDE and how I used to build the app through this complex pom files. Also, there were limited Layouts, mainly Linear and Relative Layouts only. Dealing with SQLite database was a nightmare with all -non debuggable- SQL statements you have to write to build your tables, insert or update fields.
Now, things have changed a lot for mobile development. A lot of new tools are developed and technologies introduced to support this fast growing market.
Android Studio along with gradle build were two of the greatest tools introduced for Android development as it solved a lot of issues in Eclipse as performance and complexity. Also, Firebase was introduced in 2016, a great platform that gathered a lot of essential tools for mobile development as real-time database, authentication and push notifications.
Now, things have changed a lot for mobile development. A lot of new tools are developed and technologies introduced to support this fast growing market.
Android Studio along with gradle build were two of the greatest tools introduced for Android development as it solved a lot of issues in Eclipse as performance and complexity. Also, Firebase was introduced in 2016, a great platform that gathered a lot of essential tools for mobile development as real-time database, authentication and push notifications.
What I personally like most and used a lot in my coding are these following tools:
- Rxjava: rxjava made async tasks/calls much easier and less complex and buggy. Earlier we had to use AsyncTask classes with all its implementation issues, but now with the help of rx you can add your async methods within your code and receive the response on the callback method.
- Data Binding: Data binding helped reduce a lot of unnecessary code calling UI elements from xml file in the Activity view by linking model objects directly with the xml.
- Retrofit/Volley: If you ever needed to call Restful API services, then you will not find better than Retrofit or Volley for this task. They efficiently handle all http tasks, threading and response handling.
- Room: This is the most important library in my work. It removed all the complex SQL headache from the developers mind and made SQLite handling as easy as it can get. Now you can build your tables, ad, edit or remove items in the database with just simple annotations in your model object and a DAO class.
- MVVM: The best architect design I worked with. I depends entirely on event based programming and solves a lot of the previous MVP. MVVM works like a charm with all the above RxJava, Data binding, Retrofit and Room to build a complete event based program where every task is carried asynchronously and views get the data through observables.
Currently I develop using Kotlin which has some advantages over Java as Null checks. I used it while developing my latest app “AlAdwaa Education” which is an educational platform for helping students study and revise their lessons.
Nowadays, I am willing to join some remote jobs platforms as I would like to have more control over my time and work location. One of the best ones I would like to join is Toptal, as I am willing to be featured in their top skilled Android developers list. I believe this step will boost my developing career as I will work with international teams scattered all over the world, which will require a lot of time management and strict task tracking.