Conhecimento Técnico
Tecnologias e Ferramentas
-
Android Studio
Android Studio é um ambiente de desenvolvimento integrado para desenvolver para a plataforma Android. Sendo a principal ferramenta e a mais utilizada durante o desenvolvimento.
-
Jetpack Compose
Framework de UI Declarativa para o desenvolvimento de aplicativos Android. Especialista na utilização em ambiente de produção para criar interfaces modernas, manter bibliotecas de Design System e criar renderizações dinâmicas baseadas em SDUI[cite: 22, 25].
-
Modularização (Feature-based)
Prática arquitetural focada em dividir o código do aplicativo em módulos independentes, otimizando o tempo de compilação, mitigando dívida técnica e favorecendo a escalabilidade[cite: 25].
-
Server-Driven UI (SDUI)
Abordagem arquitetural escalável onde o servidor determina os componentes visuais, permitindo atualizações de interface em tempo real e lançamentos instantâneos sem depender de novos rollouts nas lojas de aplicativos[cite: 22, 25].
-
DataStore & WorkManager
Componentes modernos do Desenvolvimento Android (MAD) utilizados para o armazenamento assíncrono seguro de preferências e agendamento confiável de tarefas em segundo plano[cite: 25].
-
Git | GitHub | GitLab
Ferramenta de versionamento de código indispensável para codificação profissional sendo ainda mais relevante quando essa é feita por um time.
-
SQL Lite | Room
São bancos de dados locais que são usados para persistência através do armazenamento no dispositivo.
-
Firebase
Ferramenta que possibilita monitoramento de bugs, performance e navegação pelos usuários. Além disso oferece hospedagem, laboratório de testes, gerenciamento de notificações, banco de dados em tempo real e armazenamento de arquivos na nuvem.
-
Android Jetpack
O Jetpack é um kit de ferramentas de API independente das versões do Android, que funciona em vários dispositivos e é compatível com versões anteriores do SO.
-
RX Java ou Rx Kotlin | Coroutines | Flow
Rx é uma biblioteca de programação reativa que oferece uma abordagem baseada em observáveis e operadores para lidar com fluxos de dados assíncronos. Por outro lado, Kotlin Coroutines e Flow são ferramentas nativas do Kotlin para lidar com concorrência e fluxos de dados assíncronos de forma mais simples e idiomática.
-
Data Binding
É uma biblioteca de suporte para Android que permite vincular componentes de interface do usuário (UI) em seus layouts a fontes de dados em seu aplicativo usando uma sintaxe declarativa, em vez de programaticamente.
-
Android NDK
O Android NDK é uma ferramenta que permite a criação de aplicativos Android usando linguagens de programação nativas, como C e C++. Ele é útil para desenvolvedores que desejam otimizar o desempenho de seus aplicativos ou reutilizar bibliotecas de código existentes escritas em C ou C++.
-
Retrofit & OkHttp
Retrofit transforma sua API HTTP em uma interface Java, enquanto o OkHttp atua como um cliente HTTP altamente eficiente por baixo dos panos, fundamental para o gerenciamento de conexões, tráfego de alta concorrência e interceptadores[cite: 22].
-
GraphQL (Apollo)
Linguagem de consulta e framework estruturado para APIs que permite ao cliente móvel solicitar apenas os dados de que precisa, otimizando o tráfego de rede e consumo de recursos[cite: 25].
-
Hilt | Dagger | Koin
Ferramentas que facilitam a utilização da injeção de dependências. Um padrão de desenvolvimento de programas de computadores utilizado para manter baixo o nível de acoplamento entre diferentes módulos de um sistema.
-
Android Profiler, LeakCanary & Layout Inspector
Suíte essencial de performance mobile para análise aprofundada de uso de CPU e memória, detecção ativa de vazamentos (memory leaks) e otimização da renderização de UI para alcance de taxas de quadro fluidas (reduzindo GPU Overdraw)[cite: 25].
-
SonarQube & Detekt
Poderosas ferramentas de análise estática de código fundamentais para manter a conformidade, aplicar padrões rígidos de Clean Code e garantir a alta qualidade em pipelines de CI/CD[cite: 25].
-
Postman, Swagger & Bruno
Plataformas e ferramentas avançadas essenciais para projetar, documentar, iterar e testar contratos de APIs REST de forma colaborativa[cite: 22, 25].
-
ProxyMan, Charles Proxy & MockWebServer
Conjunto de ferramentas para inspeção e depuração profunda de tráfego de rede HTTP/HTTPS e simulação autônoma (mocking) de respostas de servidores locais para testes de ponta a ponta independentes[cite: 23, 25].
-
JUnit
Esse framework facilita a criação e manutenção do código para a automação de testes unitários com apresentação dos resultados.
-
Mockk | Mockito
MockK é uma biblioteca de simulação (mocking) para Kotlin que permite criar e verificar objetos simulados com facilidade. Já o Mockito é um framework de testes unitários que também auxilia na simulação de classes e controle do comportamento de métodos em projetos Java. Ambos são ferramentas valiosas para escrever testes de qualidade!
-
Espresso, Compose Semantics & UI Automator
Frameworks unificados que permitem a automatização de testes na interface do usuário (UI), provendo suporte moderno para interações de fluxo em componentes declarativos nativos e também testes inter-aplicativos[cite: 25].
-
Bitrise | GitHub Actions | GitLab CI | Jenkins | Fastlane
Ferramentas que permitem a automação completa de esteiras de desenvolvimento (CI/CD) em múltiplos ambientes, orquestrando build, testes, implantação contínua e distribuição direta automatizada na loja de aplicativos[cite: 22, 24, 25].
-
Feature Flags & Testes A/B
Metodologias aplicadas na gestão segura de lançamentos, utilizadas para ativar, testar ou desativar funcionalidades de negócios em tempo real e de maneira faseada para os usuários[cite: 25].
-
Robolectric
Uma biblioteca de testes para Android que permite simular o ambiente do Android sem a necessidade de um dispositivo ou emulador real.
-
Cucumber
É uma ferramenta de automação de testes que permite a escrita de testes automatizados em linguagem natural.
-
GitHub Copilot, Cursor & Claude Code
Assistentes agênticos e IDEs integrados alimentados por IA que fornecem sugestões de código em tempo real, geração automatizada de testes, refatoração estrutural e pair programming constante[cite: 22, 25].
-
ML Kit
SDK móvel especializado do Google que leva de forma nativa a expertise em aprendizado de máquina (Machine Learning) para criar recursos de alto impacto, como reconhecimento de texto local[cite: 24, 25].
-
Scrum, Kanban & Spotify Squad Model
Frameworks corporativos de metodologias ágeis aplicados ativamente para assegurar a liderança, alinhar colaborações multifuncionais entre equipes de Design e Produto, e garantir fluidez em entregas incrementais[cite: 25].
-
Jira
Ferramenta utilizada pelo métodos ágeis para criar, registrar, acompanhar, estimar horas, registrar tempo de execução das atividades. Possui diferentes quadros incluindo kanban e permite ter uma visão clara do andamento das tarefas através de gráficos e relatórios.
-
Confluence
Confluence é uma ferramenta de colaboração que ajuda as equipes a criar, compartilhar e colaborar em projetos de forma eficiente. É uma plataforma de gerenciamento de conteúdo que permite a criação de páginas, blogs, documentos, entre outros.
-
Slack
Slack é uma ferramenta de comunicação que permite a troca de mensagens instantâneas entre equipes de trabalho. É uma plataforma de colaboração que reúne todas as comunicações em um só lugar, facilitando a organização e a busca por informações.
-
Google Meet
Google Meet é uma ferramenta de videoconferência que permite a realização de reuniões online, webinars, treinamentos e eventos virtuais. É uma plataforma de comunicação que facilita a interação entre equipes de trabalho, clientes e parceiros de negócios.
-
Google Play Console
Google Play Console é uma plataforma de desenvolvimento de aplicativos Android que permite a publicação, distribuição e análise de aplicativos na Google Play Store. É uma ferramenta essencial para os desenvolvedores que desejam disponibilizar seus aplicativos para milhões de usuários em todo o mundo.
-
Figma
Figma é uma ferramenta de design de interface do usuário (UI) e experiência do usuário (UX) baseada na web que permite a criação de protótipos interativos, wireframes e designs de alta fidelidade. É uma plataforma colaborativa que facilita o trabalho em equipe e a comunicação entre designers, desenvolvedores e stakeholders.
-
ZSH Terminal & GitBash
O ZSH é um shell avançado e o Git Bash é um emulador de terminal que juntos oferecem recursos profundos de linha de comando, personalização, atalhos, scripts e automatização para aumento de produtividade local.
-
Gradle & Maven
Robustas ferramentas de automação para compilação estruturada, controle dinâmico de dependências, builds customizados e empacotamento de soluções de forma eficiente e declarativa[cite: 25].
-
Fortify
Fortify é uma ferramenta de análise de segurança de aplicativos que identifica e corrige vulnerabilidades de segurança em códigos-fonte e binários. É uma ferramenta essencial para os desenvolvedores que desejam garantir a segurança de seus aplicativos e proteger os dados dos usuários contra ameaças cibernéticas.
-
Proguard
ProGuard é uma ferramenta de otimização e ofuscação de código que reduz o tamanho do arquivo APK e protege o código contra engenharia reversa. É uma ferramenta essencial para os desenvolvedores que desejam proteger a propriedade intelectual de seus aplicativos e garantir a segurança dos dados dos usuários.
Linguagens de programação
A primeira linguagem de programação que tive contato na vida foi a linguagem C, quando iniciei meu estudos em algoritmos e lógica de programação, porém não passou dessa visão introdutória e a execução de trabalhos na faculdade. A base do conhecimento em algoritmo e lógica de programação foram se somando a medida que conheci outras linguagens porém muito do que sabia nessa época de sintaxe se perdeu devido a falta de prática frequente. Eu programei banco com SQL na faculdade e pode se dizer que dei um esbarrão em Python. E neste momento estou usando HTML que é uma linguagem de marcação, usando o CSS para estilizar essas páginas web que você está lendo agora e o FlexBox para permitir a posicionamento e responsividade desse site que é também um conhecimento acadêmico.
Já na minha atuação profissional contando a partir do estágio em uma empresa eu pude atuar com Java, Kotlin ambas linguagens de programação e XML como linguagem de marcação. Essas sãos as linguagens mais comuns no desenvolvimento para Android nativo. pode se dizer que do meu tempo total como programador no mercado 50% eu atuei com Java e o restante com Kotlin como linguagens de programação para Android.
Java
O Java é uma linguagem de programação orientada a objetos e é uma das linguagens mais utilizadas pelas empresas na atualidade no desenvolvimento de aplicações WEB e Mobile.
Kotlin
Kotlin é uma linguagem de programação open source multiplataforma criada pela JetBrains e amplamente usada por desenvolvedores Android. É multiparadigma, sendo totalmente orientada a objetos, mas com algumas características de linguagem funcional (como as funções lambda), com tipagem estática e executada pela Java Virtual Machine (Máquina Virtual do Java).
XML
XML é uma recomendação da W3C para gerar linguagens de marcação para necessidades especiais. É um dos subtipos da SGML capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações por intermédio da internet.
Outras linguagens
Já tive um breve contato com C, C#, HTML, CSS, JavaScript, Dart, Python e Ruby.
Arquitetura de software
Durante minha atuação com codificação Android tive a oportunidade de lidar formas diferentes de estruturar códigos dos projetos e até mesmo implementações diferentes de uma mesma arquitetura. Porém a que foi mais frenquente na grande maioria dos projetos que eu atuei foram clean archtecture e MVVM.
Clean Architecture
É uma arquitetura de software proposta por Robert Cecil Martin (ou Uncle Bob, como é mais conhecido) que tem por objetivo padronizar e organizar o código desenvolvido, favorecer a sua reusabilidade, assim como independência de tecnologia. Por mais que a Clean Architecture foi criada em meados de 2012, está repleta de princípios atemporais que podem ser aplicados independente da tecnologia utilizada e linguagem de programação.
MVVM
O MVVM é um padrão de arquitetura de desenvolvimento de software baseado em Model, View e View-Model. Conheça a seguir os três principais elementos:
-
Model: a camada de modelo é a lógica de negócios que impulsiona a aplicação;
-
View: é a interface do usuário.
-
ViewModel: as camadas ViewModel coordenam as operações entre a view e as camadas model, além disso, evocará operações sobre a camada Model quando for necessário.
Tal modelo foi criado pelo arquiteto de software do WPF e Silverlight da Microsoft, John Grossman em 2005. Desde então, ele vem sendo usado principalmente no desenvolvimento mobile.
MVI
A arquitetura MVI, sigla para Model-View-Intent, é um padrão arquitetural específico para o desenvolvimento de aplicações Android. Ela se destaca por seguir uma abordagem de fluxo de dados unidirecional e enfatizar a separação de responsabilidades e a imutabilidade para criar um código escalável, mantível e testável. No MVI, o Model mantém o estado do aplicativo e processa os eventos, a View exibe o estado e emite eventos (Intents) para o Model, e o Intent define a ação que o usuário realiza na View. Essa estrutura promove um gerenciamento de estado mais organizado e facilita a depuração.