Technical Skills
Technologies and Tools
-
Android Studio
Android Studio is an integrated development environment for developing for the Android platform. Being the main tool and the most used during development.
-
Jetpack Compose
Declarative UI framework for building modern Android applications. Expert in using it in production environments to build dynamic interfaces, maintain Design System libraries, and render Server-Driven UI components[cite: 26, 29].
-
Modularization (Feature-based)
Architectural practice focused on dividing the application code into independent modules, optimizing build times, mitigating technical debt, and favoring scalability[cite: 29].
-
Server-Driven UI (SDUI)
Scalable architectural approach where the server dictates visual components, enabling real-time UI updates, personalized flows, and instant launches without relying on app store rollouts[cite: 26, 29].
-
DataStore & WorkManager
Modern Android Development (MAD) components utilized for secure asynchronous preferences storage and reliable background task scheduling[cite: 29].
-
Git | GitHub | GitLab
Code versioning tool essential for professional coding being even more relevant when it is done by a team.
-
SQL Lite | Room
They are local databases that are used for persistence through storage on the device.
-
Firebase
Tool that enables bug monitoring, performance and navigation by users. In addition, it offers hosting, testing lab, notification management, real-time database and cloud file storage.
-
Android Jetpack
Jetpack is a set of API tools independent of Android versions, which works on various devices and is compatible with previous versions of the OS.
-
RX Java or Rx Kotlin | Coroutines | Flow
Rx is a reactive programming library that offers an approach based on observables and operators to handle asynchronous data streams. On the other hand, Kotlin Coroutines and Flow are native Kotlin tools for dealing with concurrency and asynchronous data streams in a simpler and more idiomatic way.
-
Data Binding
It is a support library for Android that allows binding user interface (UI) components in your layouts to data sources in your application using a declarative syntax, rather than programmatically.
-
Android NDK
The Android NDK is a tool that allows the creation of Android applications using native programming languages, such as C and C++. It is useful for developers who want to optimize the performance of their applications or reuse existing code libraries written in C or C++.
-
Retrofit & OkHttp
Retrofit transforms your HTTP API into a Java interface, while OkHttp acts as a highly efficient HTTP client under the hood, critical for connection management and interceptors[cite: 26].
-
GraphQL (Apollo)
Query language and structured API framework that allows the mobile client to request exactly the data it needs, optimizing network traffic and resource consumption[cite: 29].
-
Hilt | Dagger 2 | Koin
Tools that facilitate the use of dependency injection. A pattern of computer program development used to keep the level of coupling between different system modules low.
-
Android Profiler, LeakCanary & Layout Inspector
Essential mobile performance suite for in-depth CPU and memory analysis, active memory leak detection, and UI rendering optimization to achieve fluid frame rates and reduce GPU Overdraw[cite: 29].
-
SonarQube & Detekt
Powerful static code analysis tools critical for maintaining compliance, enforcing Clean Code standards, and ensuring high code quality within CI/CD pipelines[cite: 29].
-
Postman, Swagger & Bruno
Advanced platforms and tools essential for designing, documenting, iterating, and collaboratively testing RESTful APIs[cite: 26, 29].
-
ProxyMan, Charles Proxy & MockWebServer
Suite of tools for in-depth network traffic debugging and standalone local server mocking (MockWebServer) to enable isolated end-to-end testing[cite: 27, 29].
-
JUnit
This framework facilitates the creation and maintenance of code for the automation of unit tests with results presentation.
-
Mockk | Mockito
MockK is a simulation (mocking) library for Kotlin that allows you to create and verify simulated objects easily. Mockito is a unit testing framework that also assists in simulating classes and controlling the behavior of methods in Java projects. Both are valuable tools for writing quality tests!
-
Espresso, Compose Semantics & UI Automator
Unified frameworks that allow the automation of UI tests, providing modern support for flow interactions in native declarative components and cross-app testing capabilities[cite: 29].
-
Bitrise | GitHub Actions | GitLab CI | Jenkins | Fastlane
Tools that enable full automation of development pipelines (CI/CD) across multiple environments, orchestrating builds, testing, and continuous deployment directly to app stores[cite: 26, 28, 29].
-
Feature Flags & A/B Testing
Release management methodologies utilized to safely toggle, test, or phase out business features for users in real-time[cite: 29].
-
Robolectric
A testing library for Android that allows you to simulate the Android environment without the need for a real device or emulator.
-
Cucumber
It is a test automation tool that allows the writing of automated tests in natural language.
-
GitHub Copilot, Cursor & Claude Code
AI-powered agentic assistants and integrated IDEs that provide real-time code suggestions, automated test generation, structural refactoring, and intelligent pair programming[cite: 26, 29].
-
ML Kit
Google's specialized mobile SDK that brings native machine learning expertise to create high-impact features such as on-device text recognition[cite: 28, 29].
-
Scrum, Kanban & Spotify Squad Model
Agile frameworks actively applied to ensure technical leadership, align cross-functional collaborations between Design and Product teams, and guarantee fluid incremental deliveries[cite: 29].
-
Jira
Tool used by agile methods to create, record, track, estimate hours, record activity execution time. It has different boards including kanban and allows you to have a clear view of the progress of tasks through graphs and reports.
-
Confluence
Confluence is a collaboration tool that helps teams create, share and collaborate on projects efficiently. It is a content management platform that allows the creation of pages, blogs, documents, among others.
-
Slack
Slack is a communication tool that allows the exchange of instant messages between work teams. It is a collaboration platform that brings all communications into one place, facilitating organization and information search.
-
Google Meet
Google Meet is a video conferencing tool that allows the holding of online meetings, webinars, trainings and virtual events. It is a communication platform that facilitates interaction between work teams, clients and business partners.
-
Google Play Console
Google Play Console is an Android application development platform that allows the publication, distribution and analysis of applications in the Google Play Store. It is an essential tool for developers who want to make their applications available to millions of users worldwide.
-
Figma
Figma is a web-based user interface (UI) and user experience (UX) design tool that allows the creation of interactive prototypes, wireframes and high fidelity designs. It is a collaborative platform that facilitates teamwork and communication between designers, developers and stakeholders.
-
ZSH Terminal & GitBash
ZSH is an advanced shell and Git Bash is a terminal emulator that together offer deep command-line features, customization, shortcuts, scripting, and automation for local productivity.
-
Gradle & Maven
Robust automation tools for structured compilation, dynamic dependency control, custom builds, and efficiently packaging software solutions[cite: 29].
-
Fortify
Fortify is an application security analysis tool that identifies and corrects security vulnerabilities in source code and binaries. It is an essential tool for developers who want to ensure the security of their applications and protect user data from cyber threats.
-
Proguard
ProGuard is a code optimization and obfuscation tool that reduces the size of the APK file and protects the code against reverse engineering. It is an essential tool for developers who want to protect the intellectual property of their applications and ensure the security of user data.
Programming Languages
The first programming language I came into contact with in life was the C language, when I started my studies in algorithms and programming logic, but it did not go beyond this introductory view and the execution of college assignments. The knowledge base in algorithm and programming logic were adding up as I met other languages but much of what I knew at that time of syntax was lost due to lack of frequent practice. I programmed a database with SQL in college and you can say that I bumped into Python. And at this moment I am using HTML which is a markup language, using CSS to style these web pages that you are reading now and FlexBox to allow positioning and responsiveness of this site which is also academic knowledge.
Already in my professional performance counting from the internship in a company I was able to act with Java, Kotlin both programming languages and XML as a markup language. These are the most common languages in native Android development. you can say that of my total time as a programmer in the market 50% I acted with Java and the rest with Kotlin as programming languages for Android.
Java
Java is an object-oriented programming language and is one of the most used languages by companies today in the development of WEB and Mobile applications.
Kotlin
Kotlin is an open source multiplatform programming language created by JetBrains and widely used by Android developers. It is multiparadigm, being fully object-oriented, but with some characteristics of functional language (such as lambda functions), with static typing and executed by the Java Virtual Machine.
XML
XML is a recommendation from W3C to generate markup languages for special needs. It is one of the subtypes of SGML capable of describing various types of data. Its main purpose is the ease of sharing information through the internet.
Other languages
I already had a brief contact with C, C#, HTML, CSS, JavaScript, Dart, Python, and Ruby.
Software architecture
During my performance with Android coding I had the opportunity to deal with different ways of structuring project codes and even different implementations of the same architecture. But the one that was most frequent in the vast majority of projects that I worked on were clean architecture and MVVM.
Clean Architecture
It is a software architecture proposed by Robert Cecil Martin (or Uncle Bob, as he is better known) that aims to standardize and organize the code developed, favor its reusability, as well as technology independence. Although Clean Architecture was created in mid-2012, it is full of timeless principles that can be applied regardless of the technology used and programming language.
MVVM
MVVM is a software development architecture pattern based on Model, View and View-Model. Meet the three main elements below:
-
Model: the model layer is the business logic that drives the application;
-
View: it is the user interface.
-
ViewModel: the ViewModel layers coordinate operations between the view and the model layers, in addition, it will evoke operations on the Model layer when necessary.
Such a model was created by the software architect of WPF and Silverlight from Microsoft, John Grossman in 2005. Since then, it has been used mainly in mobile development.
MVI
The MVI architecture, acronym for Model-View-Intent, is a specific architectural pattern for the development of Android applications. It stands out for following a unidirectional data flow approach and emphasizing the separation of responsibilities and immutability to create scalable, maintainable and testable code. In MVI, the Model maintains the state of the application and processes the events, the View displays the state and emits events (Intents) to the Model, and the Intent defines the action that the user performs on the View. This structure promotes more organized state management and facilitates debugging.