Data engineer, data scientist et dataOps : Des métiers et des technologies complémentaires

Nos équipes évoluent sur différents environnements techniques en développement Mobile, Web, Infra/ Cloud et Data.
C’est au tour de nos experts data de vous présenter leur discipline et leurs technologies de prédilection.

CBTW
L’Actualité Tech — Blog CBTW
14 min readSep 16, 2021

--

Data engineer, data scientist et dataOps : Des métiers et des technologies complémentaires — By @anniespratt on Unsplash

Oscar — Data engineer, Bruno — DataOps et Daoud — Data Scientist partagent leur vision de leur métier respectif et de l’écosystème Data. Ils présentent également les différentes technologies qu’ils utilisent dans leurs projets, avec un focus sur les langages Python et Scala.

Peux-tu nous décrire ton domaine d’expertise ?

Oscar — Data engineering : La data engineering est un terme surtout utilisé depuis l’explosion des volumes de données disponibles et la nécessité de développer de nouvelles solutions adaptées à leur traitement. Il correspond au traitement de la donnée et des flux de données. Il peut s’agir de traitement de données en temps réel ou non, du nettoyage de données ou encore de transformation de la donnée. Et tout cela de manière optimisée pour que la donnée produite soit utilisable plus facilement par d’autres métiers.

Daoud — Data science : La data science est notre capacité, en face d’un volume de données trop grand pour être appréhendé, à extraire de l’information pour prendre des décisions. Il s’agit donc de s’appuyer sur la donnée pour faciliter la prise de décision. Et en pratique ça se manifeste par le fait qu’un data scientist produit un modèle qui permet de représenter la donnée et de prendre la bonne décision de manière automatisée.

Bruno — DataOps : Tel que je le vois un dataOps est un ‘fluidificateur’ pour des projets de machine learning. Il aide les équipes à facilement développer et à avoir des outils pour fiabiliser ce qu’ils produisent dans les meilleures conditions. Il fait la passerelle entre les data scientist, plutôt orientés statistiques et business, et les Ops, davantage orientés vers la maintenabilité de l’infrastructure informatique de l’entreprise.
D’un côté les data scientist souhaitent apporter de nouvelles choses pour répondre à une problématique business et de l’autre les équipes informatiques souhaitent avoir le moins de changement possible pour assurer une pérennité. Le tout est de concilier les deux en fiabilisant le travail qui est fait par les data scientist et en faisant accepter le changement à des équipes qui y sont plutôt réfractaires de par la nature de leur activité.

Comment as-tu découvert cette discipline ?

Oscar — Data engineering : En DUT informatique, j’ai participé à un projet tuteuré avec un professeur qui faisait de la recherche dans la data. Il voulait intéresser des étudiants à ce domaine. Le but du projet était de nous faire tester des technologies de data engineering, et en particulier du Spark. J’ai ensuite continué sur Spark dans le cadre d’un stage, puis d’une alternance en data engineering.

Daoud — Data Science : À la fin de ma licence informatique, j’ai eu un cours de statistiques et d’informatique qui m’a interpellé. Il m’a fait découvrir la puissance des statistiques grâce à l’outil informatique.
J’ai également toujours été intéressé par la NLP, c’est-à-dire le traitement du langage naturel, et la data science est le domaine dans lequel cela s’applique le plus et le mieux. Après ma licence, je me suis donc orienté vers un master en data science.

Bruno — DataOps : J’ai découvert l’univers de la data par la porte de la Business Intelligence (BI). Après des études d’ingénieur en informatique avec une spécialisation datamining, j’ai intégré une entreprise qui faisait de la BI en banque et assurance. Mais après 3 ans à faire plutôt de l’administration de bases de données et de la business analyse, j’ai eu envie de revenir sur des bases plus techniques. C’est à ce moment-là que j’ai découvert un écosystème plutôt Big Data, en rejoignant un projet pour lequel il fallait mettre en place un datalake. Donc il s’agit plus d’un cheminement que d’une destinée.

Quels sont tes langages et outils de prédilection dans ton métier ? Et dans quels cas d’usage les recommandes-tu ?

Oscar — Scala/ Spark : En plus d’être un data engineer, je me définis comme un Scala/ Spark developer. J’utilise donc vraiment c’est deux technologies là : Scala en tant que langage basé sur la JVM, et donc assez proche de Java, mais avec une syntaxe de programmation fonctionnelle, et Spark le framework pour le calcul distribué.
Spark est le framework de traitement distribué le plus populaire et implémenté dans le monde de l’industrie, et également pratiquement ce qui se fait de mieux en termes de performance. De plus, il est basé sur une stack Hadoop qui est encore très prédominante dans le métier.
En data engineering on a également toute une partie gestion de flux d’une manière plus globale, avec Nifi ou Airflow. Il faut être capable d’organiser des flux de données et de comprendre plusieurs sources. Ce qui nécessite d’avoir des connaissances en SQL, Kafka ou en gestion d’autres stockages de données comme chez Amazon ou Google, dans le Cloud. Même si on parle beaucoup de Scala/ Spark, il y a tout un écosystème de technologies à connaître qui font partie de la data ingé.

Spark va être utilisé vraiment pour la partie transformation.
C’est un framework compatible en plusieurs langages (Scala, Java, Python, R). Et dans un contexte d’industrialisation, on va souvent l’utiliser avec Scala. Alors que dans un contexte d’exploration on le retrouvera plutôt en Python, car plus adapté pour faire du code rapide, tout en étant plus accessible.

Dans le calcul en temps réel, Spark est également encore aujourd’hui le plus populaire du marché avec son module Spark Streaming. On retrouve tout de même deux concurrents : Storm, en perte de vitesse, et Flink qui, même s’il reste moins populaire, est très intéressant pour sa gestion native du flux en temps réel.

Daoud — Python : Il faut garder à l’esprit qu’un data scientist reste un développeur, et va donc devoir coder.
Et le langage le plus répandu en data science est le Python. Il s’agit du langage avec la plus grosse communauté et le plus d’outils, de frameworks et de packages. C’est aussi un langage très simple qui permet de rapidement prototyper quelque chose. C’est d’ailleurs pour cela qu’historiquement la data science s’est développée autour du Python. En effet la data science telle qu’on la pratique aujourd’hui vient pour beaucoup du milieu universitaire, et donc de personnes qui ne maîtrisent pas forcément beaucoup le développement. Il a donc fallu se tourner vers un langage facile à apprendre, comprendre et maintenir. Et Python est le langage désigné quand tu as envie de tester et de faire une simulation.
Bien entendu on peut également utiliser d’autres langages complémentaires qui vont être utiles. Notamment le SQL qui permet de manipuler des bases de données.

Il y a aussi des cas d’usages où Pyhton ne sera pas la bonne solution. Dès qu’il y a de l’industrialisation et un besoin de performance plus important, il y aura toujours besoin d’utiliser d’autres outils qui ne sont pas développés en Python et qui peuvent être implémentés par d’autres profils comme des data ingé ou dataOps. Cela n’empêche pas que la partie exploration et modélisation soit faite en Python, par contre pour le stockage des données et la mise en œuvre finale de la solution il y aura peut-être du Java ou du C.
En revanche pour la partie data science pure : comprendre la donnée, on peut quasiment toujours s’en sortir en Python.

J’utilise aussi régulièrement ces trois bibliothèques qui permettent de réaliser le principal du travail d’un data scientist, c’est-à-dire acquérir de la donnée, la manipuler et faire de la prédiction et des statistiques :

  • Pandas, qui permet de gérer des tableaux de données, un peu comme Excel,
  • NumPy, qui est la bibliothèque Python qui permet de gérer des matrices et donc de faire du matriciel,
  • ScikitLearn, la bibliothèque Pyhton qui fournit le plus gros catalogue de modèles.

Bruno — Python : J’utilise beaucoup Python, car c’est le langage privilégié en machine learning. C’est celui sur lequel on va proposer des bonnes pratiques et mettre en place des conventions.
Il peut y avoir du Shell, qui est le langage utilisé quand on est sur un système d’exploitation Linux. Et avec Jenkins, on utilise aussi du Groovy, qui ressemble beaucoup au Java et, qui permet d’écrire des pipelines pour l’orchestration de CI/ CD.
L’utilisation d’un langage plutôt qu’un autre n’est pas complètement définie. Comme je n’ai pas de grosses contraintes du type lancement de traitement asynchrone ou de création de multiprocess, techniquement je pourrais faire à peu près tout en Python.
Il y a quand même beaucoup de choses que j’ai faites en Shell, car ça me paraissait pertinent et car certaines choses doivent être exécutées sur des machines sur lesquelles il n’y a pas toujours Python d’installé.
Mais Python reste ce qui est principalement utilisé pour les projets de machine learning et où on retrouve la plupart des packages. Il offre aussi la meilleure courbe d’apprentissage et la meilleure valeur pour réaliser rapidement des modèles de machine learning qui puissent être déployés.
Après il s’agit de s’accorder sur les bonnes pratiques à mettre en place et les packages utilisés pour les sous-parties, comme les tests unitaires ou la couverture de tests.

Quel a été l’impact de ces technologies dans ta vision de la Data et de ton métier ?

Oscar — Scala/ Spark : Pour ma part c’est le fait de découvrir Scala/ Spark qui m’a fait découvrir la data engineering et qui m’a attiré. J’étais très intéressé par le côté algorithmie dans le développement informatique. Et le fait de découvrir Scala m’a permis de découvrir la programmation fonctionnelle, qui concordait avec beaucoup plus à ma manière de concevoir un algorithme, sous la forme de fonctions mathématiques complexes.
Et avec Spark j’ai découvert l’univers Big Data et data science et engineering, c’est-à-dire tout le côté calcul distribué, avec les algorithmes Map Reduce et ses dérivés, ainsi que le machine learning en découvrant ses algorithmes avec Spark ML.

Daoud — Python : J’ai commencé la data science en étant déjà polyglotte. J’ai donc découvert Python avant la data science mais ce n’était pas un langage qui m’avait attiré. Ma vision de la tech était plus centrée autour de la performance.
Quand j’ai commencé à faire de la data science, et qu’il y avait moins d’impératifs de performances, mais plus en vitesse de prototypage et d’expérimentation, je me suis aperçu que c’était le langage tout désigné pour faire ça.
Les langages qu’on apprend et qu’on est tenté d’utiliser spontanément, ne sont pas aussi user friendly. Ils sont performants et éprouvés mais pas forcément adaptés pour prototyper facilement et ne contiennent pas autant de librairies qui permettent de faire du traitement de donnée au niveau où Python le permet.

Bruno — Python : Avec le dataOps, j’ai compris que la data était un sujet beaucoup plus complexe que je ne l’imaginais, notamment sur l’explicabilité et la maintenabilité d’un projet de machine learning.
Il y a des points de régulation auxquels se conformer qui se convertissent en éléments de reproductibilité technique. Il faut pouvoir comprendre et expliquer la production d’un résultat et les critères, les indicateurs et les données sur lesquels il est basé. Ce besoin de traçabilité et de justification du produit de son modèle se convertit en contraintes techniques du type : conservation de données d’entraînement, conservation de la configuration donnée au modèle, types de modèles utilisés, etc.
Il faut également s’assurer de la maintenabilité du modèle et de sa représentativité de la réalité. Cela nécessite de mettre à jour son modèle avec des données récentes et adaptées et de pouvoir mesurer l’écart entre la réalité et la prédiction. Il faut aussi être capable de détecter les moments où il va falloir l’entraîner ou le changer s’il n’est plus approprié. Il faut donc mettre en œuvre les capacités techniques qui vont permettre de réaliser cela, ce qui se rapproche du monitoring d’une certaine manière.

Quel est le ‘truc en plus’ de ton langage de prédilection ?

Oscar — Scala : Entre Python et Scala on ne va pas développer les choses de manière très différentes. Le choix va donc plus se faire sur d’autres critères.
Scala est un langage compilé, alors que Python est interprété. La compilation permet une meilleure gestion des erreurs avant l’exécution. Et Scala est aussi globalement plus performant.
Aussi Scala a été conçu dans l’idée de proposer une alternative à Java tout en s’appuyant sur ses points positifs. Il a donc une syntaxe beaucoup plus épurée et concilie le paradigme de la programmation fonctionnelle et de l’orienté objet, qui sont souvent opposés.
De plus Scala est capable d’importer n’importe quel code Java. Dès son lancement en 2006, il bénéficiait donc déjà de tout l’écosystème Java, ce qui facilite franchement la transition de Java à Scala.

Daoud —Python : Python est un langage interprété, donc quand j’écris en Python j’ai un logiciel qui interprète le code et qui exécute des instructions, à l’inverse des langages dits compilés comme le C et précompilés comme le Java. Cette différence a de grosses implications sur la manière de travailler. Quand j’écris du code en Python, je peux l’exécuter de suite, sans me soucier de la machine sur laquelle il va tourner puisqu’il y a un interpréteur entre mon code et la machine.
Et c’est aussi un code de plus haut niveau, c’est-à-dire qu’avec moins de lignes de code je peux faire plus de choses.

Bruno — Python : Python a une grosse communauté et il s’agit d’un langage très versatile, avec une courbe d’apprentissage très intéressante.
Si on n’a jamais programmé, c’est le langage le plus simple pour démarrer.
De plus il va masquer certains éléments de complexité, mais qui peuvent quand même être incorporés avec un niveau de séniorité plus mature.

Quelles sont les limites de ton langage de prédilection ?

Oscar — Scala : Scala reste un langage compilé en bytecode Java et donc avec tous les désavantages qui vont avec. Il restera toujours forcément un peu plus lent qu’un langage plus bas niveau comme le C.
Il y a aussi le point de l’accessibilité. Si on veut l’utiliser sans avoir bien compris les rouages de la programmation fonctionnelle, il est possible de développer avec et de faire de l’objet, mais ce sera compliqué. Il y a beaucoup de développeurs Java qui ont du mal à passer à Scala. Ce qui n’est pas le cas par exemple pour Kotlin, car ils sont plus proches en termes de syntaxe. D’ailleurs Spark commence à faire venir Kotlin sur ses nouvelles versions.

Daoud — Python : Le défaut de Python, bien que ce soit en train d’évoluer, reste sa performance. Les langages interprétés sont effectivement souvent moins performants que les langages compilés.
Et aujourd’hui Python ne permet pas d’offrir une performance suffisante pour que tout dans un projet soit fait avec. La donnée par exemple ne va pas être traitée ou stockée avec des technologies qui reposent sur du Python.

Bruno — Python : Python est un langage avec lequel on peut facilement mal coder, car il est très permissif. Et le fait de ne pas gérer directement certaines choses, comme le typage de données qui est fait de manière dynamique et implicite, peut se retourner contre nous si l’on souhaite développer de manière industrielle.
Il a aussi une faiblesse côté performance, bien que je n’aie moi-même jamais été confronté à des exigences aussi fortes. Mais il reste moins performant que du C, Java ou Scala.

Pourquoi et pour qui recommanderais-tu ton métier ?

Oscar — Data engineer : Le métier de data engineer est avant tout, un métier de développeur. Car même si c’est orienté autour de la donnée, un data engineer va développer et mettre en production des applications.
La différence se fait sur des concepts de développement distribué et d’optimisation d’algorithme sur des quantités de données beaucoup plus importante, mais également sur le développement de pipelines de données. C’est également une discipline qui demande continuellement de comprendre et d’utiliser plusieurs outils de stockages de données.

Les entreprises sont plus matures et ont une meilleure compréhension des métiers de la data. Les propositions de mission en data engineering deviennent donc plus nombreuses et intéressantes. On observe aussi plus souvent des équipes data pluridisciplinaires qui travaillent ensemble de manière complémentaire, notamment entre data scientists, data ops et data analysts.

Daoud — Data Scientist : L’attrait de la data science réside dans le fait que ce soit utilisable dans énormément de domaines et qu’il faille connaître de manière profonde son objet d’étude. Si on est quelqu’un de curieux et qu’on aime apprendre des métiers, leur fonctionnement et leurs enjeux, la data science permet de rentrer dans le détail de la donnée manipulée et de se rapprocher du cœur de métier étudié.
Il y a également l’intérêt de l’intelligence artificielle (IA) qui ajoute une touche excitante. C’est grisant de voir un modèle se développer et s’améliorer avec le temps.
La data science c’est l’opportunité de découvrir en profondeur un métier par sa donnée et de voir son modèle d’IA évoluer.

Le métier de data scientist est un métier qui s’est démocratisé et qui est positionné dans un domaine très porteur. Il y a donc eu ces dernières années une arrivée massive de profils très juniors qui a changé la composition de la population des data sicentists. Ce changement a affecté la perception des autres métiers (recruteurs, décideurs, …) sur le rôle d’un data scientist en entreprise. Il est davantage considéré comme un profil très spécialisé sur la donnée et son traitement, et sur les modèles, et moins comme un développeur avec de bonnes facultés en maths. Dans un certain nombre d’entreprises, il sera plus cantonné à des tâches très spécialisées sur la donnée et moins sollicité sur la partie technique. On n’exige plus forcément de lui de savoir coder. Cela se traduit aussi par une perte de lien avec les acteurs stratégiques de l’entreprise. Initialement la data science se rapporte à du conseil stratégique, mais il y a une transition vers du simple développement spécialisé dans la donnée. Ce n’est pas le cas partout, mais la vision du métier en est impactée et je me demande comment cette situation va évoluer.

Bruno — DataOps : Le dataOps est une discipline jeune et donc très mouvante. Il y a un existant sur la partie développement logiciel sur lequel s’appuyer, mais il faut concevoir toute une surcouche qui est spécifique au machine learning. Il y a plein de sous-problématiques qui ressemblent à ce qui existe déjà côté CI/CD mais qu’il faut réadapter aux besoins du machine learning (maintenabilité, versioning de données, etc.).
Il y a donc la jeunesse du domaine qui évolue avec de nouvelles technologies et le fait qu’il puisse s’appuyer sur un existant plus mature, qui est le DevOps.

C’est également un métier qui va être de plus en plus demandé et à partir duquel il est facile de se tourner, soit vers le data engineering si on est intéressé par la transformation de données et la technique, soit vers la data science ou analyse si on est davantage intéressé par la partie fonctionnelle et business.
Il s’agit d’un bon entre deux pour avoir une bonne vision de la chaîne data.

C’est aussi un métier intéressant si on a envie de faire de la médiation et de travailler avec plusieurs équipes aux problématiques différentes. Il permet d’avoir une diversité d’interlocuteurs autour de soi et de devoir trouver des synergies entre eux pour que chacun avance dans la même direction.

Nos experts évoluent également sur d’autres environnements techniques. Vous pouvez découvrir leur retour d’expérience dans ces articles :

Nous publions régulièrement des articles sur des sujets de développement produit web et mobile, data et analytics, sécurité, cloud, hyperautomatisation et digital workplace.
Suivez-nous pour être notifié des prochains articles et réaliser votre veille professionnelle.

Retrouvez aussi nos publications et notre actualité via notre newsletter, ainsi que nos différents réseaux sociaux : LinkedIn, Twitter, Youtube, Twitch et Instagram

Vous souhaitez en savoir plus ? Consultez notre site web et nos offres d’emploi.

--

--

CBTW
L’Actualité Tech — Blog CBTW

Nos experts partagent leur vision et leur veille en développement web et mobile, data et analytics, sécurité, cloud, hyperautomation et digital workplace.