Android App Development
Unsurprisingly, as a long-standing Android developer, I’m very familiar with Android. I’ve developed my first Android app in 2010 and been hooked since then. Although, I’ve tried other fields like backend and frontend development in the past, the green robot and building apps for it is my favorite topic. Therefore, I’m looking back on an interesting project experience and regularly create content with reference to Android.
Agile Software Development
For me, agility is a success factor in developing a great product. I’ve been working in agile setups since years and I feel very comfortable in supporting the team on this journey. Beside my experience as developer I’ve educated myself in Scrum. I’m a certified Professional Scrum Master I (PSM I) and collected experience as Scrum Master in a project.
For me, Kotlin is the best possible programming language to develop Android apps. It has many useful features that makes it easy to write concise and maintainable code. In the past years I’ve been developing with Kotlin and did multiple talks and articles about the topic. Also, I’ve supported other teams and project members to build up and expand their knowledge in Kotlin.
The Jetpack libraries are an integral part in developing a high quality app. In my previous projects, I used and got familiar with many of them. For example, I’ve used libraries like Room, LiveData, Data Binding or Navigation regularly in multiple projects. Furthermore, in the last months I’ve worked with Jetpack Compose and the new way of building declarative UIs.
Android Dependency Injection
In a modern, complex app the usage of dependency injection is a cornerstone to create a well-structured architecture. In my previous projects, I have successfully integrated dependency injection with the Dagger 2 and Koin libraries.
Automated testing as part of a working CI/CD pipeline is a key component to ensure that a high quality product is delivered. Android provides many options in terms of unit and integration testing. In the past I used libraries like JUnit, MockK or Spek for unit testing. Also, I’m very familiar with Espresso for UI tests on the device.
Modern App Architecture
The maintainability and reliability of a good Android app is closely linked to a good architecture. During my time as a developer, I’ve successfully used patterns like MVC, MVP and now modern approaches such as MVI and MVVM in my apps. Furthermore, I have profound knowledge of supporting libraries like RxJava, Kotlin Coroutines/Flow or LiveData.
Workflow and CI/CD
A good development workflow and an effective CI/CD pipeline are the backbone for a reliable app delivery. Therefore, I’m an advocate for a straightforward, transparent and easy to use workflow that facilitates the team to get the best possible result. In terms of CI platforms, I’ve used several of them in the past. For example, Jenkins, Bitbucket Pipelines and GitLab CI.
I’ve witnessed several times that the build system is just a necessary, neglected tool in order to build the app. For me, a stable and well-functioning build system is essential to deliver in short iterations. In the past I’ve used Apache Ant, Apache Maven and Gradle to build backend systems and Android apps. I’m particular firm with Gradle and did several talks about the new Gradle Kotlin DSL.
Amazon Android Ecosystem
In several projects, I was able to get in-depth experience into the Amazon Android ecosystem. For example, I’ve implemented “Login With Amazon” and the Amazon “In-App Purchasing API” in two projects, and I’m familiar with all aspects concerning the “Amazon Appstore for Android”.
Google Cast SDK
The Google Cast SDK for Android accompanied me for some time. I wrote articles for magazines about it when the SDK was announced and advised projects about it. Also, I’ve put the knowledge into practice and used the SDK in two different video streaming projects.