Entretien avec un ingénieur : plongée au cœur du SAST moderne
Snyk Team
18 mai 2022
0 minutes de lectureNous avons rencontré Saar Kuriel, ingénieur logiciel senior basé à Tel-Aviv, pour en savoir plus sur les projets passionnants sur lesquels il travaille au sein de l’équipe Snyk Code.__Nous avons également parlé de son parcours professionnel, de ses techniques de gestion de projet, des défis techniques qu’il a relevés et de ses objectifs pour l’avenir.

Jess Katz (JK) : Bonjour Saar ! Je suis ravie d’en savoir plus sur votre expérience dans l’ingénierie et sur le nouveau projet sur lequel vous avez commencé à travailler récemment. Avant de commencer, pourriez-vous nous parler un peu de vous et nous expliquer comment vous êtes arrivé chez Snyk ?
Saar Kuriel (SK) :Bien sûr ! Avant de rejoindre Snyk, j’ai travaillé chez Wix pendant trois ans. J’ai commencé comme ingénieur frontend, puis je suis devenu responsable d’une équipe de six développeurs deux ans plus tard. Après un an à ce poste de manager, j’ai décidé de changer de domaine produit et de parcours professionnel. Je voulais me concentrer sur l’aspect technique de l’ingénierie tout en continuant à avoir un impact sur l’organisation — de préférence au sein d’un produit B2B innovant et disruptif. La cybersécurité me passionne et je savais que les produits de Snyk étaient réputés pour leur qualité. J’ai donc décidé de postuler. Je travaille actuellement sur Snyk Code, notre outil SAST révolutionnaire centré sur les développeurs.
JK : Comment avez-vous vécu la transition du poste de responsable d’ingénierie à celui de contributeur individuel (IC) chez Snyk ?
SK :J’y ai beaucoup réfléchi au fil de ma carrière. Je sais comment diriger et faire progresser les autres, et j’ai toujours voulu contribuer aux décisions. Mais j’aime aussi mon métier et je ne veux pas perdre mes compétences techniques ni consacrer moins de temps au code au quotidien. Tout au long de ma carrière, les managers m’ont dit que j’avais de bonnes compétences en leadership et que je devrais suivre la voie du management. C’est ce que j’ai fait. Cependant, à cette époque, j’avais souvent l’impression de mal hiérarchiser mon travail. Quand je continuais à coder, j’avais le sentiment de ne pas en faire assez pour l’équipe. Mais quand je ne codais pas du tout, je n’étais pas satisfait de moi-même. J’ai compris que je devais trouver une autre voie et j’ai choisi celle de contributeur individuel.
Dans mon rôle actuel, mon objectif est de maîtriser les systèmes de mon groupe et d’en assumer la responsabilité, de faire valoir les besoins de l’ingénierie au sein de l’organisation, d’améliorer et de faire évoluer notre produit, et de me permettre de prendre des risques tout en sachant comment atténuer les conséquences d’un échec. Je veux aussi accompagner les autres membres de l’équipe pour qu’ils se sentent à l’aise d’exprimer leurs opinions et sachent qu’ils ont un impact sur le groupe. Pour atteindre ces objectifs, mon responsable d’ingénierie et moi avons défini des objectifs et résultats clés (OKR), comme accompagner une nouvelle recrue de l’équipe, contribuer à améliorer les SLI de nos systèmes et rencontrer des personnes qui partagent mes objectifs afin que nous puissions apprendre les uns des autres. Mon responsable m’a orienté vers les bonnes personnes, m’a aidé à définir ce que j’attends de moi-même et à fixer des jalons pour mes objectifs à plus long terme. Nous faisons le point chaque semaine lors de nos réunions individuelles.
JK : Quel est l’un des projets les plus difficiles sur lesquels vous travaillez actuellement ?
SK :Je travaille actuellement à la refonte de l’un des composants essentiels de Snyk Code, notre outil avancé de test statique de sécurité des applications (SAST). Comme je travaille sur un composant existant, je dois me mettre à la place de la personne qui a écrit le code à l’origine et anticiper les problèmes susceptibles de survenir. On apprend toujours en lisant le code des autres.
Ce composant est essentiel, car il gère la communication avec tous les types de systèmes de gestion de code source (SCM) et traite les dépôts pour les analyser avant qu’ils ne parviennent au moteur de règles d’IA. L’un des principaux atouts de Snyk Code est sa rapidité d’analyse, et je ne compte pas être celui qui y changera quoi que ce soit. Vous pouvez imaginer le degré de responsabilité que je ressens sur ce projet, le défi auquel je fais face et la confiance qui m’a été accordée.
Nous nous sommes réunis avec l’architecte de notre équipe et d’autres ingénieurs pour ébaucher les nouvelles API et définir notre feuille de route. Nous avons discuté des avantages et des inconvénients de chaque approche, des risques susceptibles de se présenter et de la manière de les atténuer. Nous avons également analysé les raisons pour lesquelles les choses fonctionnent actuellement comme elles le font, afin de ne pas perdre le contexte ni les fonctionnalités existantes.
Nous avons également étudié différentes technologies et décidé de faire des essais. Nous avons choisi Go comme langage de programmation pour sa simplicité et sa capacité native à exécuter des tâches en parallèle. Je n’avais aucune expérience de Go auparavant : c’est donc un défi très stimulant.
JK : Quels défis avez-vous rencontrés jusqu’à présent ?
SK :La réponse va être technique. L’un des défis rencontrés consiste à trouver la meilleure façon de mettre en cache le code source cloné depuis le SCM, afin de réduire nos interactions avec celui-ci et d’accélérer l’analyse globale. La solution doit également fonctionner dans un environnement sur site, qui peut ne pas avoir accès à Internet, et pouvoir évoluer à la demande, car la sécurité du code est l’une des priorités absolues de notre infrastructure cloud partagée.
Après quelques recherches, nous avons décidé d’effectuer un clonage superficiel à partir d’un SHA de commit spécifique (algorithme de hachage sécurisé), de le stocker dans MongoDB et d’utiliser GridFS pour manipuler facilement des fichiers de code source volumineux, tout en conservant une certaine flexibilité quant au contenu stocké. Avant de prendre cette décision, nous avons étudié Redis, mais la limite de taille des valeurs et l’éviction du cache ne répondaient pas à nos besoins. Nous avons également étudié EFS, mais son déploiement et sa mise à l’échelle auraient été difficiles dans notre solution sur site.
Notre équipe, comme Snyk dans son ensemble, cherche à trouver un équilibre entre innovation, agilité et qualité afin de produire des logiciels évolutifs et fiables. Par exemple, nous avons récemment transformé une fonctionnalité de cette base de code pour en faire un service distinct. Elle fonctionne déjà de façon autonome, complètement séparée du reste des API. Alors, pourquoi ne pas la découpler et rendre la base de code de ce projet plus agile ?
JK : Qu’est-ce qui vous enthousiasme le plus dans ce projet ?
SK :Beaucoup de choses ! Tout d’abord, mes responsables me soutiennent pleinement dans mes expérimentations et nos discussions, et veillent à ce que nous fassions les choses correctement. Aucune échéance ne nous met la pression, ce qui me permet de me concentrer et de réfléchir sereinement. Je suis aussi exactement là où je veux être dans ma carrière et je relève des défis dans des domaines que je n’avais jamais abordés. Je contribue à un effort qui révolutionne notre produit. Et je vis tout cela avec les conseils et le soutien de mon équipe formidable !
Pouvoir travailler sur un projet comme celui-ci si tôt après mon arrivée chez Snyk m’a vraiment permis de comprendre que mes responsables me font confiance et voient à quel point je suis motivé à contribuer. Il est très important que vous et votre responsable soyez sur la même longueur d’onde dès le départ, surtout en tant qu’ingénieur. Ce projet m’a permis d’exprimer mon opinion, d’expérimenter et aussi d’apprendre un nouveau langage de programmation, ce qui est génial.
On n’a pas tous les jours l’occasion d’apprendre un nouveau langage. Certains ingénieurs peuvent trouver cela épuisant, mais d’autres, comme moi, adorent ça. Notre monde évolue constamment, de nouvelles technologies et de nouveaux défis apparaissent chaque jour, et il est important de maintenir nos compétences à jour et aussi diversifiées que possible pour savoir quel est le meilleur outil dans chaque situation. De plus, apprendre tout en créant quelque chose d’utile — plutôt que de simplement écrire une application d’exemple — est vraiment passionnant.
JK : Comment décririez-vous la culture globale de l’ingénierie chez Snyk ?
SK :Ce que j’apprécie le plus chez Snyk, et dans la culture de l’ingénierie en particulier, c’est le niveau de transparence. Nous avons une bonne visibilité sur presque tout ce qui se passe dans l’entreprise, ce qui facilite la participation à différents projets et permet de comprendre ce qui se passe dans les différents services. Snyk passe du statut de petite start-up à celui d’entreprise de grande envergure, et sa culture de l’ingénierie est en train de se construire. C’est d’autant plus attrayant que vous pouvez contribuer à cet effort et vraiment faire la différence. Vous pouvez apporter votre pierre à l’édifice et beaucoup apprendre des autres.
Envie de faire carrière chez Snyk ? Découvrez nos offres d’emploi et apprenez-en plus sur la vie chez Snyk.
