Há um tempo falamos aqui no blog sobre mesas e softwares. Naquela ocasião dissemos que softwares são como mesas, constroem seu sentido à medida que sua utilidade é definida.
Dessa vez, vamos comparar softwares a velas e lâmpadas.
E para que essa comparação faça sentido, vamos usar o case de um dos nossos clientes.
Nosso cliente tem um problema bem interessante: ele presta serviços de concretagem. E pela natureza do concreto, sua produção deve iniciar pouco tempo antes de ele ser aplicado na obra. E o momento de ser aplicado na obra é definido por uma série de questões da própria obra.
O início dessa produção acontece nos silos que ficam nos chamados pontos de carga. O concreto é então levado até a obra por caminhões betoneiras, que o tempo todo vão movendo a mistura de cimento, água, areia, brita e outros aditivos. O caminhão então chega na obra, aplica o cimento, e volta para o ponto de carga para fazer uma nova viagem.
Quando você precisa atender a uma obra, esse processo não é tão complicado.
O ponto é que nosso cliente atende a muitas obras ao mesmo tempo.
Cada obra precisa do concreto em um determinado horário; muitas vezes, várias obras no mesmo horário. E durante o dia essa necessidade pode mudar por várias questões que são difíceis de prever. A quantidade de caminhões betoneiras é limitada, claro. AH! E existem diferentes pontos de carga espalhandos pelas cidades também, outra variável para o problema.
Esse é um problema de otimização clássico. Queremos atender ao maior número de obras possível, utilizando o menor número de betoneiras, saindo dos pontos de carga mais próximos.
Bom, explicado o problema do nosso cliente, o problema que nós fomos resolver não foi exatamente esse. Pô, sério!? Sim, esse já estava resolvido. Nosso cliente tem um software que faz essa otimização.
O problema que ajudamos nosso cliente a resolver foi o da interface com esse software otimizador.
E aqui fica um aprendizado.
Boas interfaces são tão importantes quanto bons códigos. E não estamos falando apenas de botões bonitinhos com cores que combinam. Estamos falando de interfaces que sejam simples, intuitivas e completas para seus usuários.
Legal. Mas e as velas e lâmpadas?
Bom. Velas e lâmpadas de maneira geral resolvem o mesmo problema: iluminar.
Na história da humanidade, as velas surgiram primeiro, fala-se em 50 mil anos antes de Cristo. Já a lâmpada incandescente, é do século XIX.
Não foram quase 52 mil anos de evoluções constantes e sequenciais que transformaram gordura animal com fibra de plantas em um filamento de tungstênio dentro de um bulbo com gases inertes. Foi uma sacada instantânea e utilizando meios bem diferentes dos originais.
Construir software, às vezes, é um pouco disso, você precisa se abster do pensamento corrente pra enxergar o problema por uma nova ótica e propor uma nova solução.
E foi isso que nós fizemos, durante duas semanas fizemos um Design Sprint com os envolvidos no sistema que iríamos modificar e reconstruímos toda a interface.
Os usuários finais estão bem felizes com a solução que propusemos e implementamos.
P.S.: Pra quem ficou curioso sobre as tecnologias que implementamos no código, há esse projeto no GitHub com um fonte usando a mesma arquitetura.