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.