Skip to main content

Entrevista com um engenheiro: explorando o SAST moderno

Escrito por
Headshot of Snyk Team

Snyk Team

feature saar kuriel

18 de maio de 2022

0 minutos de leitura

Conversamos com Saar Kuriel, engenheiro de software sênior que trabalha em Tel Aviv, para saber mais sobre os projetos empolgantes em que ele está trabalhando como parte da equipe do Snyk Code.__Também falamos sobre sua trajetória profissional, técnicas de gerenciamento de projetos, desafios técnicos que superou e seus objetivos para o futuro.

Homem sentado em uma arquibancada sob um grande logotipo de cachorro da Snyk, cercado por almofadas com a marca Snyk

Jess Katz (JK): Oi, Saar! Estou muito animada para conhecer sua experiência em engenharia e o novo projeto em que você começou a trabalhar recentemente. Antes de começarmos, pode falar um pouco sobre você e como chegou à Snyk?

Saar Kuriel (SK):Claro! Antes de entrar na Snyk, trabalhei na Wix por três anos. Comecei como engenheiro de frontend e, dois anos depois, me tornei gerente de engenharia de uma equipe com seis desenvolvedores. Depois de passar um ano nessa função de gestão, decidi mudar a área de produto e a trajetória profissional que estava seguindo. Queria me concentrar no lado técnico da engenharia e, ao mesmo tempo, causar impacto na organização — de preferência, trabalhando em um produto B2B inovador e disruptivo. Sou apaixonado por cibersegurança e sabia que os produtos da Snyk tinham reputação de qualidade, então decidi me candidatar a uma vaga. Atualmente, trabalho no Snyk Code, nossa revolucionária ferramenta de SAST centrada em desenvolvedores.

JK: Como foi para você a transição de gerente de engenharia para contribuidor individual (IC) aqui na Snyk?

SK:Pensei bastante nisso ao longo da minha carreira. Sei liderar e desenvolver outras pessoas e sempre quis influenciar a tomada de decisões. Mas também gosto da minha profissão e não quero perder minhas habilidades técnicas nem o trabalho diário de programação. Ao longo da carreira, recebi de gestores o feedback de que tenho boas habilidades de liderança e deveria seguir o caminho da gestão, então foi o que fiz. No entanto, naquela época, muitas vezes sentia que não estava priorizando meu trabalho da maneira certa. Quando continuava programando, sentia que não estava fazendo o suficiente pela equipe. Mas, quando não programava, não ficava satisfeito comigo mesmo. Isso me ajudou a perceber que precisava encontrar outro caminho, e escolhi ser IC.

No meu cargo atual, meu objetivo é ter domínio técnico e responsabilidade pelos sistemas do meu grupo, representar as necessidades de engenharia na organização, aprimorar e desenvolver nosso produto e me permitir correr riscos, sabendo como mitigar possíveis falhas. Também quero orientar outros membros da equipe para que se sintam à vontade para expressar suas opiniões e percebam que causam impacto no grupo. Para alcançar esses objetivos, eu e meu gerente de engenharia definimos alguns objetivos e resultados-chave (OKRs), como orientar uma pessoa recém-chegada à equipe, ajudar a melhorar os SLIs dos sistemas da equipe e conversar com pessoas que têm objetivos semelhantes aos meus para aprendermos uns com os outros. Meu gerente me indicou as pessoas certas, ajudou a definir o que eu quero alcançar e estabeleceu marcos para meus objetivos maiores, que revisamos toda semana em nossa conversa individual.

JK: Qual é um dos projetos mais desafiadores em que você está trabalhando agora?

SK:Atualmente, estou refatorando um dos componentes principais do Snyk Code, nossa ferramenta avançada de teste estático de segurança de aplicações (SAST). Como estou trabalhando em um componente que já existe, preciso pensar como a pessoa que escreveu o código originalmente e me empenhar para evitar possíveis problemas no futuro. Sempre aprendemos quando lemos o código de outras pessoas.

Esse componente é crucial porque gerencia a comunicação com todos os tipos de SCMs (sistemas de gerenciamento de código-fonte) e processa os repositórios para análise antes que eles cheguem ao mecanismo de regras de IA. Um dos grandes diferenciais do Snyk Code é a velocidade da análise, e não pretendo ser a pessoa que vai mudar isso. Dá para imaginar o nível de responsabilidade que sinto ao trabalhar neste projeto, o desafio que estou enfrentando e o quanto confiam em mim.

Conversamos com o arquiteto da nossa equipe e com outros engenheiros para esboçar as novas APIs e planejar nosso roadmap. Nessa conversa, discutimos os prós e contras de cada abordagem, os riscos que poderiam surgir e como mitigá-los. Também analisamos por que as coisas são feitas da maneira atual, para não perder o contexto nem os recursos existentes.

Também avaliamos diferentes tecnologias que poderíamos usar e decidimos fazer alguns testes. Optamos por usar Go como linguagem de programação por sua simplicidade e capacidade nativa de paralelização. Até então, eu não tinha nenhuma experiência com Go, então esse tem sido um desafio divertido.

JK: Quais são alguns dos desafios que você encontrou até agora?

SK:Esta vai ser uma resposta técnica. Um dos desafios que encontramos é descobrir a melhor forma de armazenar em cache o código-fonte clonado do SCM para reduzir as interações com o SCM e acelerar o tempo total de análise. A solução também precisa funcionar em um ambiente on-premises — que talvez não tenha acesso à internet — e ser capaz de escalar sob demanda, já que a segurança do código é uma das principais prioridades da nossa infraestrutura de nuvem compartilhada.

Depois de investigar algumas opções, decidimos fazer um clone superficial com um SHA de commit específico (algoritmo de hash seguro), armazená-lo no MongoDB e usar o GridFS para interagir facilmente com arquivos grandes de código-fonte, mantendo a flexibilidade quanto ao conteúdo armazenado. Antes de tomar essa decisão, avaliamos o Redis, mas o limite de tamanho dos valores e a expulsão de itens do cache não atendiam às nossas necessidades. Também avaliamos o EFS, mas teria sido difícil implantá-lo e escalá-lo na nossa solução on-premises.

Nossa equipe e a Snyk como um todo priorizam o equilíbrio entre inovação, agilidade e qualidade para produzir software escalável e confiável. Por exemplo, recentemente transformamos uma funcionalidade dessa base de código em um serviço separado. Ela já funciona de forma independente, totalmente separada do restante das APIs. Então, por que não desacoplá-la e tornar mais ágil a base de código deste projeto?

JK: O que mais deixa você empolgado neste projeto?

SK:Muitas coisas! Para começar, tenho todo o apoio dos meus gestores para experimentar, conversar e garantir que façamos tudo da maneira certa. Não há pressão de prazo, o que me permite me concentrar e pensar com clareza. Também estou exatamente onde quero estar na minha carreira e estou enfrentando desafios em áreas nas quais nunca trabalhei. Estou contribuindo para um esforço que está revolucionando nosso produto. E posso vivenciar tudo isso com a orientação e a ajuda da minha equipe incrível!

Poder trabalhar em um projeto como este tão no início da minha trajetória na Snyk me ajudou muito a perceber que meus gestores confiam em mim e reconhecem minha grande vontade de contribuir. É muito importante que você e seu gerente estejam alinhados desde o início, especialmente na área de engenharia. Assumir este projeto me permitiu expressar minha opinião, experimentar e também aprender uma nova linguagem de programação, o que é incrível.

Não é todo dia que temos a oportunidade de aprender uma nova linguagem. Alguns engenheiros podem achar isso cansativo, mas outros, como eu, adoram. Nosso mundo está em constante evolução, e novas tecnologias e desafios surgem todos os dias. Por isso, é importante manter nossas habilidades atualizadas e tão abrangentes quanto possível, para sabermos qual é a melhor ferramenta para cada situação. Além disso, aprender enquanto desenvolvemos algo valioso — em vez de apenas escrever um aplicativo de exemplo — é muito empolgante.

JK: Como você descreveria a cultura de engenharia da Snyk como um todo?

SK:O melhor da Snyk, e da cultura de engenharia em particular, é o nível de transparência que temos aqui. Temos visibilidade de quase tudo o que acontece na empresa, então é fácil participar de diferentes projetos e entender o que está acontecendo em outros departamentos. A Snyk está deixando de ser uma pequena startup para se tornar uma empresa de grande porte e, por isso, a cultura de engenharia ainda está sendo construída. Isso torna tudo ainda mais interessante, porque você pode contribuir para esse processo e realmente fazer a diferença. Você pode deixar sua marca e aprender muito com outras pessoas.

Quer construir sua carreira na Snyk? Confira nossas vagas abertas e saiba como é trabalhar na Snyk.