Revisão de análises exploratórias por pares no Grupo ZAP

Manuele Ferreira
Jul 1, 2020 · 5 min read

Como garantimos a qualidade e consistência das análises exploratórias com compartilhamento do conhecimento.

Image for post
Image for post
Photo by Kelly Sikkema on Unsplash

Antes de trabalhar como Analista de dados eu trabalhei por mais de 10 anos na área de desenvolvimento de software, especificamente, com Java. Quem é da área sabe que é conversa velha usar alguma ferramenta de versionamento de código como o git e criar PRs para garantir que o trabalho que está sendo desenvolvido segue boas práticas de codificação, não vai inserir algum bug na aplicação e garantindo a visibilidade das alterações.

E ai você pode me perguntar, mas o que tem de tão interessante em falar sobre isso? É que, por experiência própria, eu descobri que no universo de análise exploratória existem diversos desafios muito particulares. Vou contar um pouco sobre esses desafios e como trabalhamos e aprendemos com eles no Grupo ZAP:

As pessoas que trabalham com dados possuem perfis diversos

Diferente da área de desenvolvimento de software, em geral, que as pessoas possuem formação na área de tecnologia ou grande tempo de experiência na área, quem trabalha com dados não necessariamente tem background em engenharia de software. No chapter de data analytics, por exemplo, temos pessoas formadas em Administração, Estatística, Contabilidade, Publicidade, etc que nunca tiveram contato com versionamento de código antes de entrar no Grupo ZAP. Ou seja, o nosso fluxo precisa ser simples e de fácil aprendizado para permitir que possamos entregar valor com qualidade.

Git+Github

O git é a nossa ferramenta de controle de versão padrão e usamos o Github como plataforma de hospedagem de código. Toda a engenharia utiliza a mesma plataforma e temos, inclusive, repositórios com acordos sobre a cultura e ladder lá também.

Dessa forma, como não poderia ser diferente, enviamos nossas análises para o Github. Além disso, usamos um repositório único para envio das análises que estão finalizadas ou em processo evolutivo.

Image for post
Image for post
Repositório único para registro das análises exploratórias

Essa estrutura permite facilitar uma busca histórica de quais análises já foram realizadas, quais estão em andamento e garantindo a reprodutibilidade, permitindo o acesso de todas as pessoas interessadas às configurações, critérios e informações necessárias para reproduzir aquele estudo. Enquanto estou escrevendo esse artigo temos 34 análises nesse repositório e 5 PRs abertos. Em alguns casos, por exemplo em produtos de dados que já estão em produção, as análises exploratórias sobre eles ficam armazenadas no repositório específico do produto.

Seguimos todas as práticas recomendadas que são compartilhadas com toda a engenharia, como por exemplo, abrir pequenos PRs independentes para facilitar a revisão e ser criterioso com style guide, assim como com padrões e princípios de qualidade de código.

Como vimos aqui as pessoas do chapter de data analytics e data science, por exemplo, ficam distribuídos em squads. Um dos nossos desafios é garantir o compartilhamento do conhecimento entre os times e essa dinâmica auxilia nesse processo.

Reviewnb

O Jupyter notebook é uma das ferramentas mais utilizadas por quem faz análise exploratória. Só que o formato base dele é json e com isso usar o git padrão exigiria que a revisão fosse feita em um formato que não é o usado no dia-a-dia. Exemplo abaixo de como é a análise, e como é o código que precisaríamos revisar:

Image for post
Image for post
A visualização comum do jupyter notebook
Código do jupyter notebook no Github

Para facilitar o processo de revisão, utilizamos a ferramenta Reviewnb. Com ele conseguimos realizar revisões usando a visualização comum do jupyter notebook.

Image for post
Image for post
Inserindo uma revisão em um trecho do código usando o Reviewnb

Cookiecutter para estrutura das análises

O cookiecutter é um criador de projetos a partir de um template fixo. Temos um cookiecutter próprio no Grupo ZAP que foi baseado no Cookiecutter Data Science. A ideia do uso desse template é facilitar a revisão e evolução das análises, pois como a estrutura das análises é a mesma, quem for realizar a revisão encontra mais fácil os arquivos.

Image for post
Image for post
Template base do cookiecutter

PRs pequenos e independentes

Existe sempre uma polêmica na área de desenvolvimento de software a respeito do que é um PR pequeno e independente, pois é um conceito que está aberto a interpretações. Em geral, os times criam um combinado em relação a um conjunto de regras e vai evoluindo com o tempo.

Essa é a mesma dinâmica que temos usado para análises exploratórias e temos aprendido muito com esse processo. O nosso acordo engloba criar PR para cada um dos passos que consideramos boas práticas como, por exemplo, definição da análise + configuração de ambiente, importação básica dos dados com avaliação de dados de origem e análise exploratória com apenas uma pergunta/hipótese (aqui envolve alguns cruzamentos, resultados e insights). É importante destacar que uma análise exploratória, geralmente, é composta por uma ou mais perguntas que devem ser analisadas.

Acordo para tempo de revisão dos PRs

Como falei anteriormente, as pessoas do chapter de data analytics ficam distribuidas em squads. No dia-a-dia o foco de cada uma fica mais no squad e nas demandas combinadas entre o time, e um dos nossos desafios é garantir que os PRs abertos sejam revisados em um tempo razoável para não prejudicar o andamento dos trabalhos. Com isso, temos um acordo no chapter de um tempo limite para revisão do PR e, além disso, temos um reminder diário no nosso canal do slack que mostra quais os PRs estão abertos e que precisam de revisão.

Image for post
Image for post
Reminder no slack com as análises em aberto

Discussões metodológicas a respeito das análises

Frequentemente surgem discussões interessantes sobre métodos aplicados em uma análise e que a pessoa que revisou ou quem abriu o PR acredita ser necessário uma discussão maior. Nesses cenários, abrimos threads no slack para permitir que essa discusão tenha visibilidade por outras pessoas e tenhamos maior flexibilidade para discutir. As threads são linkadas posteriormente na análise.

Image for post
Image for post
Thread com discussão sobre dúvidas em um review

Essas discussões ocorrem nos PRs também, mas percebemos maior facilidade em discutir no canal.

Falamos esses itens aqui que se desdobram em muito mais discussões e oportunidades de melhoria. Estamos constantemente criticando nosso modelo de trabalho de forma que possamos trabalhar melhor e com maior qualidade nas entregas.

Então, se você achou bacana essa dinâmica, pode acompanhar aqui as nossas vagas.

Agradecimentos: Julia Luz, André Maldonado, Fernando de lucca siqueira e Talita Correa Barcelos

Tech@Grupo ZAP

Como fazemos tecnologia nos maiores portais de imóveis do…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store