O que aprendi construindo um aplicativo Android do zero aos 15 anos?
Comecei a desenvolver o Mulher Amparada com uma ideia relativamente simples: criar um aplicativo gratuito que reunisse recursos de proteção, informação e organização.
O que eu não esperava era que, durante o desenvolvimento, eu acabaria aprendendo uma quantidade enorme de coisas sobre programação e desenvolvimento de software.
Não tenho formação profissional em programação. Fui aprendendo enquanto construía o projeto, pesquisando, testando, errando e tentando novamente.
Kotlin e Android
Uma das maiores partes do aprendizado foi o desenvolvimento Android.
Aprendi a trabalhar com Kotlin, Jetpack Compose, Activities, permissões, intents, serviços do Android e APIs do sistema.
Também precisei entender que desenvolver para Android não é simplesmente fazer uma interface e colocar algumas funções nela. O sistema possui diferentes versões, permissões, limitações e comportamentos que precisam ser considerados.
Por exemplo, o aplicativo utiliza recursos que dependem de permissões de localização, contatos, telefone e microfone. Isso me fez entender melhor como o Android controla o acesso aos recursos do dispositivo.
Sensores e recursos do aparelho
Outra parte interessante foi aprender a utilizar recursos físicos do celular.
O aplicativo possui funcionalidades relacionadas a:
- movimento;
- inclinação;
- áudio;
- localização;
- brilho da tela;
- biometria. Isso me fez perceber que um smartphone é muito mais do que uma tela para exibir informações. Existem diversos sensores e APIs disponíveis, mas utilizá-los corretamente exige pensar em consumo de bateria, permissões, precisão, compatibilidade e comportamento em diferentes situações.
Segurança
Também aprendi bastante sobre segurança.
O aplicativo utiliza autenticação biométrica para proteger determinadas áreas e mecanismos do próprio Android para impedir que determinadas telas sejam capturadas.
Aprendi que segurança não é apenas colocar uma senha.
É necessário pensar em:
- onde os dados ficam armazenados;
- quais informações realmente precisam ser armazenadas;
- quem pode acessar determinada informação;
- quais permissões são necessárias;
- o que acontece quando uma autenticação falha;
- e como o aplicativo deve se comportar quando algo inesperado acontece.
Localização e comunicação
Uma das partes mais trabalhosas foi trabalhar com localização.
O aplicativo pode obter a localização atual do dispositivo e utilizá-la em determinadas funções de emergência.
Isso me obrigou a aprender sobre APIs de localização, permissões em tempo de execução, precisão e tratamento de situações em que a localização não está disponível.
Também aprendi que uma funcionalidade aparentemente simples pode envolver várias partes diferentes do sistema operacional.
Git e GitHub
O projeto também me fez aprender Git de verdade.
No começo, Git era basicamente uma ferramenta para salvar versões do código.
Com o crescimento do projeto, comecei a utilizar branches, commits, releases, histórico completo, workflows e automações.
Hoje o GitHub não é apenas onde o código fica hospedado: ele participa de boa parte do processo de desenvolvimento.
CI/CD
Uma das coisas que mais gostei de aprender foi CI/CD.
Criei workflows do GitHub Actions para automatizar tarefas como:
- compilação do aplicativo;
- geração do APK;
- assinatura;
- criação de artefatos;
- atualização de arquivos;
- publicação do site;
- auditorias;
- geração de informações do projeto. Isso mudou bastante minha maneira de pensar sobre desenvolvimento. Em vez de executar manualmente todas as etapas sempre que altero o projeto, posso transformar parte desse processo em código e deixar a infraestrutura executar essas tarefas automaticamente.
Quando o código quebra
Talvez uma das maiores coisas que aprendi tenha sido justamente quando as coisas davam errado.
Já tive problemas com Gradle, Android SDK, dependências, GitHub Actions, artefatos, permissões, versões de ferramentas e scripts.
Alguns erros pareciam não ter relação nenhuma com o código que eu tinha acabado de modificar.
Isso me ensinou uma coisa importante:
programar também é aprender a investigar.
Nem sempre a resposta está na primeira mensagem de erro.
É necessário ler logs, identificar em qual etapa o problema aconteceu, testar hipóteses e tentar reproduzir o comportamento.
A parte que eu não esperava aprender
Embora o foco deste texto seja programação, existe uma consequência do projeto que considero importante.
Como o aplicativo foi criado para uma situação social específica, precisei estudar bastante o problema que estava tentando abordar.
Isso me ensinou sobre violência contra a mulher, ciclo da violência, autonomia, direitos e educação.
Foi uma experiência interessante porque percebi que desenvolver software para um problema real exige mais do que saber programar.
É necessário entender para quem você está desenvolvendo e qual problema está tentando resolver.
O que mudou na minha forma de programar
Quando comecei, eu pensava principalmente em fazer o código funcionar.
Hoje penso muito mais em perguntas como:
- O que acontece se essa permissão for negada?
- E se o dispositivo não tiver localização disponível?
- E se uma API mudar?
- Essa informação realmente precisa ser armazenada?
- Como essa função se comporta em outra versão do Android?
- Como automatizar essa tarefa?
- Como outra pessoa entenderia esse código?
- O que acontece quando alguma parte do sistema falha? Acho que essa foi uma das maiores mudanças no meu aprendizado. Programar deixou de ser apenas escrever código que funciona e passou a ser pensar em sistemas. O Mulher Amparada continua sendo desenvolvido, mas hoje vejo o projeto também como um grande laboratório onde aprendo Android, Kotlin, Git, automação, segurança, acessibilidade e engenharia de software na prática.
🌐Site:
https://mulher-amparada.github.io/mulher-amparada-app/
