Nas últimas décadas, notebooks computacionais, introduzidos pela primeira vez pelo Wolfram Mathematica, evoluíram para apoiar pesquisas científicas, explorações e fluxos de trabalho educacionais. Naturalmente, apoiando fluxos de trabalho de ciência de dados e com opções semelhantes aos notebooks Jupyter e Databricks, eles se tornaram grandes companheiros, fornecendo um ambiente de computação interativo, simples e intuitivo para combinação de código para analisar dados com texto rico, e visualização, para contar uma história a partir dos dados. Os notebooks foram projetados para fornecer um meio definitivo para comunicação e inovação científica moderna. Nos últimos anos, entretanto, vimos uma tendência de usar notebooks como meios para executar em produção código com o tipo de qualidade normalmente necessária para conduzir operações corporativas. Vemos fornecedoras de plataformas de notebook anunciando o uso de seus notebooks exploratórios em produção. Este é um exemplo de uma boa intenção — democratizar a programação para cientistas de dados — implementada de forma inadequada, prejudicando a escalabilidade, a manutenção, a resiliência e todas as outras qualidades que um código de produção de longa duração precisa suportar. Não recomendamos o uso de notebooks em produção e, em vez disso, incentivamos a habilitação de cientistas de dados para criar código pronto para produção com os frameworks de programação certos, simplificando assim o conjunto de ferramentas de entrega contínua e removendo a complexidade por meio de plataformas de ML de ponta a ponta.
Os notebooks Jupyter ganharam popularidade entre cientistas de dados, que os utilizam para análises exploratórias, desenvolvimento em estágios iniciais e compartilhamento de conhecimento. Esse aumento na popularidade criou uma tendência de uso em produção de notebooks Jupyter, disponibilizando ferramentas e suporte para executá-las em escala. Embora não queiramos desencorajar ninguém a usar suas ferramentas de escolha, não recomendamos o uso de notebooks Jupyter para criar código de produção escalável, sustentável e duradouro – eles não têm controle de versão eficaz, tratamento de erros, modularidade e extensibilidade, entre outros recursos básicos necessários para a criação de código escalável e pronto para produção. Em vez disso, incentivamos pessoas desenvolvedoras e cientistas de dados a trabalharem juntas para encontrar soluções que capacitem cientistas de dados a criar modelos de aprendizado de máquina prontos para produção, usando práticas de entrega contínua com as estruturas de programação corretas. Alertamos contra o uso em produção de notebooks Jupyter para superar ineficiências em pipelines de entrega contínua para aprendizado de máquina ou testes automatizados inadequados.