SAIU O RESULTADO DO SORTEIO DO PRÊMIO CANALTECH!CONFERIR
Publicidade

Como resolver problemas complexos com dados?

Por| 14 de Setembro de 2022 às 10h00

Link copiado!

Conny Schneider
Conny Schneider

Certo dia, no trabalho, você se depara com o desafio de dizer para um novo cliente o quanto cada um de seus concorrentes cobra em diferentes locais do país. Em uma reunião de onboarding, busca entender melhor o problema, o mercado no qual está inserido e os desafios. No entanto, percebe a infinidade de detalhes a que terá que se atentar para resolver a questão. Então, pede os bancos de dados para analisar e observa informações faltantes, colunas com tipos misturados e valores estranhos. Como se não bastasse, um prazo apertado é passado para a resolução desse contratempo. O que podemos fazer?

Apesar de relatar uma jornada hipotética, muitos cientistas de dados vão se identificar com essa situação. Nesse momento, organizar o trabalho para atender às necessidades daquele que busca uma resposta é essencial. De uma forma geral, as etapas de um novo desenvolvimento seguem um padrão, podendo avançar mais rapidamente a depender do conhecimento teórico ou de negócio adquirido com a experiência ao longo do tempo. Tais etapas podem ser resumidas em: estudo e investigação; planejamento e design da solução; execução e implementação; e testes e resolução de bugs.

Na etapa de estudo e investigação, o time precisa entender os dados e averiguar o que já existe de metodologias e implementações disponíveis. Passar um pente-fino nas bases do cliente e em bases públicas é essencial para fazer um diagnóstico do que será necessário atacar em termos de limpeza, transformação e ajustes. Já um olhar cauteloso para a distribuição desses dados em suas diversas dimensões municia o time com conhecimento para analisar modelos que se adequariam às características. Por fim, uma busca de soluções já implementadas e muitas vezes disponibilizadas em plataformas de compartilhamento de códigos se faz necessária para cortar um caminho que já pode ter sido trilhado por outras pessoas.

Continua após a publicidade

Com essas informações e o conhecimento adquirido, é possível planejar e elaborar um primeiro design de solução para o problema do cliente. Essa etapa é muito delicada; pode ser necessário abrir mão de um pouco de qualidade nos resultados para ganhar em termos de prazo, ou até mesmo entregar uma tecnologia “quase ótima”, pois a implementação no “estado da arte” custaria muito e inviabilizaria o processo. O importante aqui é manter os pés no chão, adequando a solução aos prazos e recursos disponibilizados. Mas também não há necessidade de descartar soluções rebuscadas e complexas, caso sejam as melhores alternativas em termos de qualidade dos resultados, pois pode haver espaço para uma segunda entrega, ainda mais refinada.

Com o planejamento em mãos, é hora de partir para a terceira etapa e implementar o que foi pensado. Tudo é mais bonito na teoria do que na prática. Afinal, ao começar a implementar a solução, muitos problemas surgem, os detalhes que não tinham sido mapeados aparecem e podem atrasar o cronograma proposto. Caso isso ocorra, é extremamente importante levar os problemas encontrados para os stakeholders, passando a informação de forma simples para que todos entendam a complexidade e ajustem seus planos. Ao longo do desenvolvimento, testes podem (e devem) ser conduzidos para dar mais confiança e robustez à solução.

Embora algumas experiências sejam realizadas durante a fase de implementação, uma vez desenvolvida, verificações end-to-end checam a viabilidade e as funcionalidades da metodologia implementada. Naturalmente, bugs aparecem e o time deve se concentrar em resolvê-los, finalizando o processo estabelecido para a entrega de uma primeira versão. Ainda assim, após a entrega, o usuário final pode se deparar com novos bugs e pedir algumas melhorias. O time, então, deve retornar à etapa de implementação. Agora se os próximos passos foram previamente mapeados, é a hora de começar a trabalhar neles, uma vez que uma primeira versão funcional já está de pé.

Continua após a publicidade

Todas essas etapas mostram que a solução de um problema se desdobra em diversas fases de desenvolvimento e passa por muitas mãos. O time tem que trabalhar não só com skills técnicos, mas também com gestão, planejamento e comunicação. A complexidade vai além do conhecimento puramente teórico e entra no campo das limitações de tempo e recursos financeiros. Afinal, o valor de uma entrega é condicional ao momento em que é feita e os custos incorridos. Lidar com problemas complexos, de natureza pouco “reprodutível”, demandam soluções específicas e equipes especializadas dentro das empresas e/ou parceiros de negócio.