Estou muito feliz por aprender a usar a minha mente de programador para outras coisas que não são programar. Que a mesma clareza que preciso ter para programar posso usar para compor um discurso ou ensinar as pessoas a compreender alguma coisa em específico.

Que com uma boa comunicação e boas analogias é possível trazer compreensão mesmo que superficial para as pessoas mais leigas sobre os assuntos mais complexos.

A linguagem de programação funciona da mesma maneira. Ela só abstrai para não escrevermos códigos de máquina. Então, por que não conseguimos compilar o mesmo código na cabeça de todas pessoas?

Essa semana apresentei um RDTalk intitulado “Tech for non tech people”. E a ideia era explicar um pouco dos termos técnicos do dia a dia dos desenvolvedores para outras áreas da Resultados Digitais, então pensei em praticar mais essas analogias que representassem bem cada cenário e como poderia contar histórias ao invés de simplesmente explicar os termos.

Está difícil de lembrar? Aponte para fatos mais marcantes que sua própria talk!

Pense em como o dia a dia das pessoas podem lembrar os problemas reais.

O exemplo dos background workers:

Troughput é a medida de capacidade de um determinado recurso. Isso parece simples e podemos comparar a vazão de um cano. Mas usando um contexto mais complexo de background workers aproveitei para mostrar também filas, workers, jobs e overhead.

Inicialmente fiz uma [evolução das imagens dos slides] para mostrar o exemplo via imagens para mostrar o que era throughput. Mas quando fiz uma piada usando o próprio elevador da RD, o exemplo se tornou realmente remarcante.

tech-for-non-techs-77-638

Quando você consegue usar um exemplo de uma experiência já vivida, acredito que facilita muito a assimilação. Todos que estavam lá sofrem esperando todos os dias pela lentidão e limite de pessoas (throughput) de cada elevador. Então quando usei esse exemplo, senti que valeu mais do que toda aquela organização dos slides para mostrar o funcionamento.

Outro aspecto que ficou fácil de entender é o nível de acoplamento de determinados recursos na aplicação, enfim não é fácil de colocarmos um ‘terceiro’ elevador no edifício. Na aplicação a mesma coisa. Certos recursos acabam se engessando na construção e é mais complexo fazer a substituição ou melhorar significativamente sem grandes mudanças.

Também aproveitei para tentar mostrar um pouco dos principais desafios da arquitetura enquanto escalando uma aplicação.

tech-for-non-techs-83-638

Exemplo deploy comparando a filme velocidade máxima

Falando do processo de deploy enquanto ensaiava minha apresentação em casa, a Tânia, me perguntou por que era tão perigoso esse processo de deploy?

Todos assistiram ao filme velocidade máxima e essa foi uma boa relação para explicar o processo de deploy.

tech-for-non-techs-52-638

Digamos que o RDStation é o ônibus que não pode parar, e o deploy é: queremos trocar algumas peças desse ônibus. Então como fazemos para trocar com o ônibus andando?

Transferimos as pessoas de ônibus como no filme do velocidade máxima, sem parar o ônibus.

tech-for-non-techs-53-638

Exemplo do Rollout Gradual a lá deploy canário:

O deploy canário foi inspirado no uso de canários para medir a sensibilidade do ar dentro de espaços de mineração.

Basicamente se o canário morria os operários saiam para não morrer também. A sensibilidade dos pulmões do canário é maior então eles morrem mais facilmente intoxicados.

tech-for-non-techs-55-638

Essa história foi um exemplo realmente marcante para mim. Sabia sobre o deploy canário mas acabei ouvindo a história que inspirou o nome apenas esses dias. Isso tornou o contexto ainda mais fácil de lembrar dos perigos e objetivos da história.

E você que tipo de artifícios usa para fazer suas talks? Não deixe de comentar!

Jônatas Davi Paganini

Jônatas Davi Paganini

Developer and writer passionate about PostgreSQL, TimescaleDB, and building better systems. Currently sharing knowledge about time series databases and system architecture.