I work in a startup company that aims to enter the market with pioneering innovations in the finance sector. I am a member of the team that develops mobile applications in the company. I am software architect responsible for Android application development.
I have developed a library of which I am the inventor, with an unusual architectural design approach (a blend of design patterns such as MVC, MVVM, Factory Method, Builder, Adapter, Facade, DTO and so on) in the Android application. When we translate the work of this library into Turkish, it is actually the user interface development work on dynamic screens.
The programming language and libraries we prefer to use in the Android application are as follows, respectively.
- Programming Language: Kotlin (%100)
- Network API Call: Retrofit RESTful API Call
- JSON Serialization & Deserialization: Moshi Adapter
- Local Database: Realm Database
- Error State Analysis: Crashlytics
- Logging: SLF4J
- Activity & Fragment Navigation: Android JetPack Navigation Component
- Image Download: Glide Image Downloading Library
- Image Resizing: uCrop
- Animation: Lottie
- Dependency Injection: Dagger2
- Real Time Communication: Smack XMPP Client library & STOMP
- Visualizing Data: MPAndroidChart
The architectural understanding of the Android application has a hybrid architecture that blends the design patterns I mentioned above. In terms of UI development on dynamic screens, an iOS Developer has the same logic in terms of usage/coding as if she/he were developing an iOS application without any foreignness. I have experienced that this has a positive effect on development time.