Voltada para a área da saúde, a SmileB foi um case de refatoração em prol da usabilidade e qualidade do código.
Desenvolvi em conjunto com a SmileB aplicativos para o paciente encontrar o prestador certo para a sua necessidade, assim como para o profissional analisar e gerenciar as consultas agendadas.
Corrigir ou fazer do zero?
No primeiro contato com o cliente, a ideia era continuar o desenvolvimento do aplicativo a partir de um código que já havia sido iniciado. Porém, ao analisar a implementação e a arquitetura escolhida para compor as funcionalidades, percebi diversas escolhas que iam contra as boas práticas de engenharia de software assim como quebras de padrões de design para aplicativos móveis.
- O aplicativo não contava com uma hierarquia de funcionalidades bem definida. Ao misturar padrões de navegação como o menu lateral e a barra de navegação inferior , a jornada do usuário ficava confusa e funcionalidades ficavam escondidas.
- Contrariando as boas práticas de navegação, a barra de navegação inferior não era consistente, mudando seus ícones de tela em tela. Além de confundir o usuário, gerava uma sobrecarga no código que precisava tratar esse comportamento dinâmico.
- Algumas das escolhas de design não eram apropriadas para o contexto do aplicativo, e essas decisões ao serem implementadas tornariam ainda mais difícil o trabalho de refatoração.
- A conjunção desses fatores acarretava num aplicativo cheio de bugs e crashes, e o trabalho de debug e análise desses erros por si só já tomaria um tempo enorme de desenvolvimento.
- Não haviam sido suficientemente implementados padrões de projeto como MVC ou MVVM que permitissem a refatoração e manutenibilidade do código.
A partir disso propus refazer o aplicativo, reaproveitando alguns trechos de código, mas com uma estrutura reformulada, o que foi bem aceito pelos clientes.
Reestruturando o projeto
A reestruturação do projeto foi feita tendo em mente tanto uma melhora da experiência do usuário quanto a do desenvolvedor envolvido na implementação do sistema.
- Estabelecemos uma hierarquia de funcionalidades coesa, que deixasse o uso do aplicativo intuitivo. Eliminamos o menu lateral, deixando apenas a Bottom Navigation, realocando funcionalidades secundárias.
- Criamos fluxos consistentes e independentes para cada funcionalidade. Isso eliminou a sobrecarga do código anterior, facilitando a manutenção e gerenciamento de estados do aplicativo.
- Passamos a utilizar os componentes do Android Jetpack para adicionar padrões de comportamento reativo no sistema, permitindo maior responsividade e qualidade no código.
Agendamento de consulta
A funcionalidade principal desenvolvida foi a de agendamento de consultas. A partir da localização o usuário e das opções de filtragem a API retorna os profissionais adequados, permitindo a visualização do perfil do profissional e o eventual agendamento.
Controle de agendamentos
Presente tanto no aplicativo do profissional quanto do paciente, também foram implementadas telas para visualização do estado da consulta, confirmação de agendamento, avaliação e o histórico.
Login e cadastro do usuário
Também foi implementei cadastro e login no sistema, podendo ser feito por email, Google ou Facebook. Como melhoria de usabilidade, os usuários em busca de profissionais só fazem o login caso desejem finalizar o agendamento, podendo usar as outras funcionalidades de busca sem ter feito o cadastro.
Perfil de usuário
Para finalizar, os usuários também podem editar as suas informações de perfil. Foram implementadas algumas funcionalidades de processamento de imagem para melhorar a performance e reduzir o consumo de dados na comunicação com o servidor.