Engenheiros de dados: mitos versus realidades
Publicados: 2018-05-10De carros autônomos a marcação automática em imagens, a ciência de dados percorreu um longo caminho. Os cientistas e analistas de dados tornaram-se parte integrante de qualquer organização devido ao valor que agregam. Mas, com toda a honestidade, um cientista de dados é tão bom quanto os dados com os quais trabalha. A maioria das organizações hoje tem seus dados armazenados em vários formatos e em várias plataformas. Aí vem a necessidade de engenheiros de dados!
Os engenheiros de dados são pessoas que tornam esses dados viáveis para os cientistas e analistas de dados. Os engenheiros de dados são responsáveis por construir pipelines que transformam os montes de dados em um formato utilizável por cientistas de dados. Eles trabalham principalmente nos bastidores e, portanto, são desprovidos de todo o glamour de um cientista/analista de dados – mas lembre-se, eles são igualmente (se não mais) essenciais para o funcionamento de qualquer organização.
Se os cientistas de dados são pilotos de carros de corrida, os engenheiros de dados são construtores de carros de corrida. O primeiro tem a emoção de acelerar ao longo de uma pista e a emoção de vencer na frente de uma multidão que aplaude. Este último, por outro lado, tem o prazer de ajustar os motores e criar uma máquina poderosa e robusta. Um construtor de carros de corrida torna o trabalho do piloto muito mais fácil (ou mais difícil, dependendo da qualidade do construtor).
Como você pode fazer a transição para a análise de dados?
A esse respeito, os engenheiros de dados são praticamente os heróis desconhecidos de qualquer equipe de análise de dados. Sem um engenheiro de dados de som, um cientista de dados estará apenas coçando a cabeça procurando por pistas em dados não formatados.
Vamos ver o que o trabalho de um engenheiro de dados implica.
Para melhor compreensão, vamos supor que você seja um engenheiro de dados em um concorrente do Swiggy (vamos chamá-lo de Twiggy). Você tem um aplicativo que os usuários podem usar em qualquer dispositivo e acessar seus serviços. Eles pedem comida, o pedido é redirecionado para o restaurante apropriado, a comida é retirada de lá e chega até você.
Para manter este serviço sincronizado, você precisará de:
- Um aplicativo móvel para usuários
- Um aplicativo móvel para donos de restaurantes
- Um servidor robusto para lidar com várias solicitações ao mesmo tempo.
Como você já deve ter entendido, este aplicativo irá gerar ENORMES quantidades de dados. Além disso, você precisará de alguns armazenamentos de dados:
- Um banco de dados que contém os detalhes dos usuários e restaurantes.
- Registros de acesso ao servidor. Isso incluirá qualquer solicitação feita ao servidor pelo aplicativo.
- Logs de erros do servidor contendo todos os erros do lado do servidor.
- Logs de eventos do aplicativo. Eles conterão informações sobre quais ações os usuários ou proprietários de restaurantes realizaram no aplicativo.
- Logs de erros de aplicativos que contêm erros baseados em aplicativos.
- Banco de dados de atendimento ao cliente. Isso conterá os dados sobre sua interação com seus clientes.
Agora, digamos que um cientista de dados de sua equipe queira analisar o comportamento do usuário em seus serviços e ver quais ações se correlacionam com usuários que gastam muito. Para ajudá-los a criar isso, você precisará combinar todas as informações dos logs de acesso do servidor e dos logs de eventos do aplicativo.
Você precisará:
- Reúna registros de análise de aplicativos regularmente.
- Combine os logs de análise de aplicativos com entradas de log do servidor para os usuários relevantes.
- Desenvolva uma API que retorne o histórico de eventos de qualquer usuário.
Aí dá muito trabalho!
Para fazer tudo isso, você precisará criar um pipeline que possa ingerir logs de aplicativos móveis e logs do servidor com eficiência em tempo real, analisá-los e vinculá-los ao usuário apropriado. Além disso, você precisará armazenar os logs analisados em um banco de dados para que a API possa consultá-los facilmente. Haverá muitos servidores que você precisará ativar atrás de um balanceador de carga para analisar os logs de entrada.
A maioria dos problemas que você encontrará será em torno de sistemas distribuídos e confiabilidade. Se você tiver milhões de dispositivos para coletar logs e demandas dinâmicas (à tarde, você obtém muitas entradas de log, mas não tantas durante a meia-noite), você precisará desenvolver um sistema que possa dimensionar automaticamente a contagem do servidor para cima e para baixo dependendo do trânsito.
Principais etapas para dominar a ciência de dados
Grosso modo, as operações em um pipeline genérico de engenharia de dados passam pelas seguintes fases:
- Ingestão: coleta dos dados necessários.
- Processamento: processar os dados para obter o resultado desejado.
- Armazenamento: armazenar o resultado para uma recuperação mais rápida.
- Acesso: habilitar uma ferramenta para acessar os resultados do pipeline de dados.
Espera-se que um engenheiro de dados possua conhecimento nos seguintes domínios.
- Armazenamento de dados:
- RDBMS como MySQL, MS SQL Server, etc.
- Bancos de dados NoSQL como HBase, MongoDB, CouchDB, Cassandra, etc.
- Coleção de dados:
- APIs RESTful
- Conhecimento em modelagem de dados e experiência em SQL.
- Transformação de dados:
- Ferramentas ETL como Informatica, Datastage, Redpoint, etc.
- Qualquer linguagem de script como Python, Ruby, Perl, etc.
Vejamos alguns mitos e equívocos que giram em torno da vida e do trabalho desses engenheiros de dados.
Índice
Mito 1: Engenheiros de dados extraem valor dos dados coletados.
Há muita coisa entre coletar os dados e extrair o conhecimento. Os engenheiros de dados são os principais responsáveis por converter os dados em um formato adequado para os cientistas analisarem e trabalharem. A esse respeito, eles não extraem nenhum valor dos dados, na verdade, eles apresentam os dados em um prato para os cientistas de dados que descobrem valor a partir deles.

Mito 2: Os engenheiros de dados precisam tornar todos os dados imaculados.
Você perceberá o absurdo disso se ler a frase acima lentamente. Um engenheiro de dados lida com fluxos de dados recebidos ao longo do dia. Esses dados precisam ser limpos e tratados imediatamente para que não fiquem obsoletos. Por obsoleto, queremos dizer sem discernimento e antigo. Portanto, os engenheiros de dados não fazem todos os dados imaculados. Eles trabalham com os dados em mãos combinados com outros dados necessários para o problema em questão. A limpeza dos conjuntos de dados completos levará meses e, até lá, será inútil.
Fundamentos Básicos de Estatística para Ciência de Dados
Mito 3: Engenheiros de dados despejam os dados em ferramentas prontas e aproveitam os dados limpos/trabalháveis como saída.
Por favor, não diga isso em voz alta na frente de qualquer engenheiro de dados. Sempre. Nenhum engenheiro de dados que se preze tolerará um insulto tão flagrante. Como qualquer outro engenheiro (de software, mecânico, químico, etc.), os engenheiros de dados precisam estar sempre atentos. Não há uma abordagem única para todos na engenharia de dados, e os engenheiros de dados precisam moldar algoritmos para se adequar ao seu caso de uso continuamente. Eles precisam estar cientes das técnicas e métodos mais recentes em torno de seu trabalho para garantir a eficiência perfeita.
Mito 4: Engenheiros de dados são apenas engenheiros de software que trabalham em Big Data.
Os engenheiros de software trabalham no desenvolvimento de aplicativos móveis/web. Seu trabalho envolve muitos problemas diversos e a dificuldade está em gerenciar as tarefas – pensar, comunicar e organizar o código. Os engenheiros de dados, por outro lado, geralmente têm menos problemas, mas os problemas individuais são muito mais difíceis tecnicamente. Da perspectiva ao conjunto de habilidades, tudo é totalmente diferente para um engenheiro de dados do que para um engenheiro de software.
Quem é um Cientista de Dados, um Analista de Dados e um Engenheiro de Dados?
Obtenha a certificação em ciência de dados das melhores universidades do mundo. Aprenda Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
A Engenharia de Dados é semelhante a uma função clássica de TI?
'Engenheiro de Dados' e 'Engenheiro de Software' podem parecer intercambiáveis para quem está fora do setor de informática, pois ambos dependem amplamente de habilidades de programação. Mas, na verdade, eles são especialistas em diferentes áreas. O principal objetivo dos engenheiros de software é criar sites amigáveis. Os engenheiros de dados estabelecem sistemas para armazenar, consolidar e recuperar dados, que são usados por desenvolvedores de software para construir sistemas e aplicativos. Os engenheiros de dados também podem criar e manter um pipeline de integração e entrega contínua (CI/CD) para todos os dados organizacionais, bem como sistemas de controle de versão para garantir a qualidade dos dados em toda a infraestrutura.
É necessário ter uma formação universitária ou um diploma avançado para se tornar um Engenheiro de Dados?
Para trabalhar como engenheiro de dados, você não precisa de um diploma, embora alguns empregadores possam preferir candidatos com pelo menos um diploma de bacharel. Nenhum curso acadêmico ou currículo online pode prepará-lo inteiramente para criar sistemas de dados que possam mover dados de uma variedade de fontes, alterá-los e armazená-los para análise. O fato é que os engenheiros de dados mais bem-sucedidos aprendem muito no trabalho enquanto operam no mundo real com clientes reais. Mas sim, é importante que um Engenheiro de Dados tenha boas habilidades para trabalhar com determinadas ferramentas como Amazon Athena, Amazon Redshift, Apache Spark, etc. e tenha conhecimento das melhores práticas de gerenciamento de dados.
Como se tornar um engenheiro de dados de sucesso?
Para empresas orientadas por dados, a engenharia de dados é fundamental, mas o que exatamente os engenheiros de dados fazem? Aqui está o caminho para se tornar um engenheiro de dados de sucesso
1. Torne-se proficiente em programação: Se você deseja se tornar um engenheiro de dados bem-sucedido, primeiro comece aprimorando seus fundamentos de programação. Python e Scala são as tecnologias mais utilizadas no setor.
2. Aprenda a automatizar e criar scripts: A automação de aprendizado é crucial para engenheiros de dados. Uma vez que existem muitas tarefas a serem executadas nos dados que podem ser tediosas ou podem ocorrer regularmente. Algumas ferramentas importantes para automação são scripts de shell e processamento de dados em shell.
3. Saiba como usar seus bancos de dados: Isso pode ser feito aprendendo SQL e modelagem de dados.
4. Técnicas de Processamento de Dados Adeptos: Para dominar as técnicas de processamento de dados, é importante aprender a processar dados em lotes e fluxos, antes de carregar os resultados em bancos de dados de destino.