Latest / escovando bits podcast / #71 - Morte ao código complexo: simplicidade como ato de rebeldia
Transcript
- 0:03SPEAKER_01: Assine a Codecom Pro, apoie a Codecom e ganhe vários benefícios.
- 0:17SPEAKER_01: Olá, você está escutando Escovando Beats, o podcast da Codecom.
- 0:29Eu sou o Gabriel e cara,
- 0:31eu nem sei se eu sei escrever códigos complexos,
- 0:34na real.
- 0:35SPEAKER_02: Eu sou o Galeno e ser simples é diferente de ser simples.
- 0:38SPEAKER_02: Fala pessoal,
- 0:39aqui é o Alex e é difícil escrever complexo porque se é
- 0:43complexo eu não vou
- 0:44SPEAKER_02: entender,
- 0:44SPEAKER_02: então é melhor deixar pra lá.
- 0:50SPEAKER_01: Se todo código que tu vê, tu não entende, então todo código é complexo.
- 0:55É,
- 0:55pode ser que demore um pouco mais e eu descubra que agora eu
- 0:58consegui ler.
- 0:59SPEAKER_02: Mas se eu não bati o olho e já não consegui ler,
- 1:01SPEAKER_02: claro que tem familiaridade,
- 1:02SPEAKER_02: um monte de coisa envolvida,
- 1:03SPEAKER_02: mas se é algo que eu teoricamente já sei,
- 1:06SPEAKER_02: e aí eu bato o olho e não consigo entender nada,
- 1:08SPEAKER_02: tem que ter um bom motivo para aquilo existir.
- 1:10SPEAKER_02: Boa.
- 1:11SPEAKER_01: A gente vai só para o nosso Reclames do Plim Plim e volta já.
- 1:17SPEAKER_01: Pergunta sobre arquitetura e engenharia.
- 1:23SPEAKER_02: Só que de software.
- 1:29SPEAKER_01: Neste quadro,
- 1:30trazemos um especialista do ASUS para tirar dúvidas dos devs
- 1:33quando o assunto é
- 1:34SPEAKER_01: arquitetura e engenharia de software.
- 1:36SPEAKER_01: Hoje estamos aqui com a Larissa Martins,
- 1:38SPEAKER_01: Tech Lead,
- 1:39SPEAKER_01: para nos ajudar a sanar as dúvidas que recebemos.
- 1:42SPEAKER_01: Por que é tão difícil entender a parte de negócios como dev?
- 1:45SPEAKER_01: Tem algum jeito de melhorar isso?
- 1:47Eu acho que o principal problema com essa parte de negócio é
- 1:52que fazer software
- 1:54SPEAKER_00: hoje é muito mais do que escrever código.
- 1:57SPEAKER_00: O código é só um meio pelo qual você faz o software ali.
- 2:01SPEAKER_00: A ideia principal disso tudo é resolver um problema.
- 2:04E quando a gente resolve um problema,
- 2:05a gente precisa juntar a nossa técnica
- 2:08SPEAKER_00: a técnica correta ali, com o conhecimento do domínio do produto.
- 2:12SPEAKER_00: E se a gente não dominar o problema que a gente precisa resolver,
- 2:15eu posso ser o melhor técnico possível e o problema não vai ser
- 2:19resolvido,
- 2:20SPEAKER_00: né?
- 2:20SPEAKER_00: Minha solução não vai funcionar.
- 2:22SPEAKER_00: E é normal que engenheiros,
- 2:23SPEAKER_00: principalmente no começo da carreira,
- 2:25SPEAKER_00: a gente tenha aquela ansiedade de codar logo,
- 2:27SPEAKER_00: de ver as coisas saindo,
- 2:29SPEAKER_00: de ter entregas logo.
- 2:31Mas entender o negócio é algo que é primordial para que a gente
- 2:34consiga entregar
- 2:35SPEAKER_00: alguma coisa efetiva.
- 2:37Hoje a gente já tem algumas práticas que ajudam os engenheiros
- 2:40a se aprofundar nisso.
- 2:41SPEAKER_00: Eu,
- 2:42SPEAKER_00: por exemplo,
- 2:42SPEAKER_00: tenho uma mania de quando eu vou fazer uma feature nova,
- 2:46SPEAKER_00: algo grande,
- 2:48SPEAKER_00: eu gosto de desenhar,
- 2:49SPEAKER_00: colocar no papel mesmo ali,
- 2:51SPEAKER_00: fazer aquele desenho dos sistemas,
- 2:52SPEAKER_00: entender onde é que eu tô,
- 2:54SPEAKER_00: onde é que meu domínio vai estar ali.
- 2:55SPEAKER_00: Às vezes até aqueles casos de uso, se acontecer tal coisa.
- 3:01Eu acho que isso ajuda a gente a entender onde tá cada pecinha
- 3:05e se de fato a gente
- 3:06SPEAKER_00: vai conseguir resolver o problema do cliente ou não.
- 3:10Uma coisa que eu costumo fazer também quando eu avalio os PRs
- 3:13aqui no Asas,
- 3:14SPEAKER_00: ou quando eu vou abrir um PR,
- 3:16SPEAKER_00: é ter uma cultura de não descrever o que eu fiz,
- 3:18SPEAKER_00: mas qual que é o problema que eu tô resolvendo com aquele código.
- 3:21SPEAKER_00: Eu acredito que isso é uma forma de documentar, né?
- 3:24Então facilita ali quando alguma pessoa vai ver o código ali a
- 3:28um longo prazo e não
- 3:29SPEAKER_00: tá entendendo direito porque aquilo ali foi feito,
- 3:31SPEAKER_00: consegue entender o que motivou aquela decisão.
- 3:34SPEAKER_00: E eu acho que é uma boa métrica pra gente entender se o desenvolvedor,
- 3:37SPEAKER_00: ele só escreveu o código ou se ele de fato resolveu o problema.
- 3:41SPEAKER_00: Porque se ele escreve o problema, é uma...
- 3:45Uma forma de ver que ele entendeu o que ele tá resolvendo ali a
- 3:49proposta.
- 3:49SPEAKER_00: Então,
- 3:50SPEAKER_00: eu acho que é uma forma legal de refletir,
- 3:53SPEAKER_00: assim,
- 3:53quando você vai abrir o PR e você tentar escrever qual que era
- 3:56o problema,
- 3:56SPEAKER_00: né?
- 3:57SPEAKER_00: O que você tá resolvendo.
- 3:58SPEAKER_00: E hoje a gente tem práticas estruturadas,
- 4:00SPEAKER_00: assim,
- 4:00SPEAKER_00: falando de arquitetura de software,
- 4:02SPEAKER_00: que ajuda também a trazer...
- 4:04SPEAKER_00: é mais essa linguagem de domínio para dentro da engenharia de software.
- 4:08A gente tem muitas empresas que utilizam a abordagem de Domain
- 4:11Drive Design,
- 4:12que ele traz uma modelagem já pensada mais em aproximar a
- 4:16linguagem técnica mesmo
- 4:17SPEAKER_00: da linguagem de negócio.
- 4:18SPEAKER_00: E eu acho que isso ajuda muito.
- 4:20SPEAKER_00: No fim das contas,
- 4:21SPEAKER_00: quando a gente consegue enxergar esse problema com clareza,
- 4:26SPEAKER_00: o código deixa de ser só execução e ele passa a ser uma solução real.
- 4:30SPEAKER_00: Então, acho que é bem válido.
- 4:43O Perguntas de Engenharia e Arquitetura,
- 4:45Socket Software,
- 4:46é patrocinado pelo ASUS.
- 4:47Acesse o link na descrição do episódio para saber mais sobre as
- 4:50vagas disponíveis
- 4:51SPEAKER_01: para a área de engenharia de software.
- 5:00SPEAKER_01: Estamos de volta.
- 5:01SPEAKER_01: O tema de hoje,
- 5:02SPEAKER_01: caso você não esteja olhando pro seu celular,
- 5:05SPEAKER_01: ou olhando pro seu Apple Watch,
- 5:08SPEAKER_01: ou olhando pra telinha do carro,
- 5:10SPEAKER_01: sei lá.
- 5:10SPEAKER_01: Como que é o tema que a gente colocou?
- 5:12SPEAKER_01: Pô, nem lembro.
- 5:14SPEAKER_01: Morte é o código complexo.
- 5:15SPEAKER_01: Simplicidade como ato de rebeldia.
- 5:17SPEAKER_02: Olha aí, ó. Aí, o tema aqui não é simples, né?
- 5:20SPEAKER_02: Um tema bem complexo.
- 5:22SPEAKER_01: Um tema bem complexo.
- 5:23Mas eu queria entender primeiro que vocês me expliquem o que é
- 5:27complexidade de código.
- 5:28Cara,
- 5:28acho que complexidade é qualquer coisa que seja muito difícil
- 5:33de entender.
- 5:34SPEAKER_02: Isso vale pra código, isso vale pra qualquer coisa na vida.
- 5:38Uma obra de arte pode ser uma obra de arte complexa se ela tem
- 5:41muitas camadas ou
- 5:41SPEAKER_02: que você tem que se perder muito tempo olhando pra entender ela.
- 5:45Tem muitas facetas,
- 5:46tem muitos detalhes,
- 5:47muitos poréns,
- 5:48muitas curvas,
- 5:50muitas nuances,
- 5:51muitas...
- 5:52SPEAKER_02: coisas,
- 5:52SPEAKER_02: assim,
- 5:52SPEAKER_02: acho que a complexidade no código meio que vai para esse caminho também,
- 5:56SPEAKER_02: sabe,
- 5:56SPEAKER_02: tipo,
- 5:57SPEAKER_02: tem muitas coisinhas,
- 5:58SPEAKER_02: muita coisa chamando outra coisa,
- 6:00SPEAKER_02: tem muita variável,
- 6:01SPEAKER_02: muito processo,
- 6:02SPEAKER_02: muito,
- 6:03SPEAKER_02: às vezes,
- 6:03SPEAKER_02: muita microtimização,
- 6:05SPEAKER_02: muito detalhezinho,
- 6:06SPEAKER_02: assim,
- 6:06SPEAKER_02: que gera uma complexidade que deixa o negócio difícil,
- 6:11SPEAKER_02: assim,
- 6:11SPEAKER_02: deixa algo que poderia ser fácil,
- 6:14SPEAKER_02: ele vira algo difícil.
- 6:17SPEAKER_02: Eu acho que é nessa linha mesmo.
- 6:19SPEAKER_02: Tipo,
- 6:19SPEAKER_02: quando eu penso em código complexo,
- 6:22SPEAKER_02: tem uma relação de quem está lendo e qual é o código,
- 6:25SPEAKER_02: né?
- 6:25SPEAKER_02: Porque,
- 6:25SPEAKER_02: por exemplo,
- 6:26SPEAKER_02: muito provavelmente,
- 6:27SPEAKER_02: vou usar esses nomes meio estranhos que a gente usa hoje em dia,
- 6:29SPEAKER_02: tipo sênior,
- 6:30SPEAKER_02: etc.
- 6:30SPEAKER_02: Vamos imaginar que um sênior ou qualquer coisa que vem depois disso,
- 6:33SPEAKER_02: mais especializado,
- 6:34SPEAKER_02: escreve um código.
- 6:35SPEAKER_02: Se a leitura é de um júnior,
- 6:37SPEAKER_02: de um estagiário,
- 6:38SPEAKER_02: talvez tudo pareça complexo,
- 6:40SPEAKER_02: até por uma questão de familiaridade.
- 6:42Mas eu acho que quando inverte,
- 6:43aí eu acho que é mais fácil dizer se é complexo.
- 6:45SPEAKER_02: Por exemplo,
- 6:46SPEAKER_02: tem um seno ali no código do Júlio e ele fala não estou entendendo nada,
- 6:49SPEAKER_02: pode ser um gap geracional,
- 6:50SPEAKER_02: né?
- 6:51SPEAKER_02: É código da geração alfa,
- 6:52mas no geral é porque talvez tenham mais camadas de
- 6:56interpretação ou faça muito
- 6:58SPEAKER_02: mais,
- 6:58tenha muito mais ginástica ali envolvida do que precisa para
- 7:00chegar na solução.
- 7:02SPEAKER_01: Mas vocês dizem,
- 7:02SPEAKER_01: assim,
- 7:03SPEAKER_01: que tipo,
- 7:03SPEAKER_01: sei lá,
- 7:04um cara que vai programar e ele separa muito código ou escreve
- 7:08muitas funções
- 7:09SPEAKER_01: separadas,
- 7:10SPEAKER_01: isso é deixar o código complexo também?
- 7:13SPEAKER_02: Ou não?
- 7:15SPEAKER_02: Sendo bem sênior aqui, eu vou dizer que depende, né?
- 7:17SPEAKER_02: Tipo, se tu tem motivo pra fazer isso, sim, né?
- 7:20SPEAKER_02: Mas se você não tem, aí não faz sentido, né?
- 7:23SPEAKER_02: Tipo,
- 7:23SPEAKER_02: você tem que pensar,
- 7:24SPEAKER_02: por exemplo,
- 7:25SPEAKER_02: em Java que você cria,
- 7:26SPEAKER_02: cada arquivo basicamente é uma classe,
- 7:28SPEAKER_02: né?
- 7:28SPEAKER_02: Se tu for começar a separar cada pedaço do código e for seguir muito,
- 7:31SPEAKER_02: acho que é o princípio do Solid,
- 7:32SPEAKER_02: que você tem que ter umas separações de responsabilidade,
- 7:36SPEAKER_02: acho que o S do Solid,
- 7:37SPEAKER_02: você tem que ter cada função faz uma coisinha só.
- 7:41SPEAKER_02: Se tu for pensar nisso,
- 7:43SPEAKER_02: uma classe para cada coisinha,
- 7:44SPEAKER_02: por exemplo,
- 7:44SPEAKER_02: você vai ter que ficar dando um control click ali
- 7:49SPEAKER_02: O tempo todo.
- 7:50SPEAKER_02: Então,
- 7:50SPEAKER_02: por mais que as funções estejam pequenas e simples,
- 7:54SPEAKER_02: esse pedacinho de código talvez seja simples,
- 7:56SPEAKER_02: você entender uma rotina inteira se torna um processo complexo.
- 7:59SPEAKER_02: Pode ser uma solução,
- 8:01SPEAKER_02: na verdade,
- 8:01SPEAKER_02: em alguns casos,
- 8:02para você ter um reaproveitamento de código e daí deixar outras
- 8:04coisas mais
- 8:05SPEAKER_02: simples,
- 8:05SPEAKER_02: mas também pode ser algo complexo porque você separou demais.
- 8:08SPEAKER_02: Você acaba tendo que juntar peças de um puzzle ou assim.
- 8:11SPEAKER_01: Sim,
- 8:12SPEAKER_01: e outra coisa que eu ia falar,
- 8:14SPEAKER_01: e a complexidade,
- 8:16SPEAKER_01: ela é perigosa,
- 8:18SPEAKER_01: tipo,
- 8:18a gente tem que evitar a complexidade só porque ela vai ser
- 8:21complexa para as outras
- 8:23SPEAKER_01: pessoas entenderem o código ou ela também pode ter outros sintomas,
- 8:27SPEAKER_01: tipo,
- 8:27SPEAKER_01: sei lá,
- 8:27SPEAKER_01: ter mais bugs ou ter performance PR?
- 8:31SPEAKER_02: Eu acho que os dois são verdade.
- 8:32Porque quando a gente pensa em complexidade,
- 8:35sempre tem aquela divisão,
- 8:35né?
- 8:35SPEAKER_02: Se a complexidade era necessária ou ela é acidental.
- 8:38SPEAKER_02: Aí eu acho que vai ao encontro do que você está dizendo,
- 8:40SPEAKER_02: que é,
- 8:41SPEAKER_02: bem,
- 8:41se realmente a solução é complexa a ponto de precisar de
- 8:45complexidade que envolve o
- 8:47SPEAKER_02: código ser complexo,
- 8:48SPEAKER_02: Talvez você não vá fugir da complexidade porque ela é necessária.
- 8:51SPEAKER_02: Então, beleza.
- 8:52SPEAKER_02: A gente sabe o porquê daquilo.
- 8:53SPEAKER_02: Existe uma intenção clara.
- 8:54SPEAKER_02: E se fizer diferente daquilo, a gente perde algo.
- 8:56SPEAKER_02: Aí esse algo pode ser performance ou outro tipo de ganho.
- 9:00SPEAKER_02: Mas quando ela é acidental, não, né?
- 9:02SPEAKER_02: Porque ainda que tenha esse fator social, é mais difícil de ler, mas...
- 9:05SPEAKER_02: No tempo isso compõe um problema, né?
- 9:07Porque se essa parte é complexa e no futuro você tem uma
- 9:10segunda parte complexa,
- 9:11SPEAKER_02: no futuro você tem uma terceira,
- 9:12SPEAKER_02: daqui a pouco elas se falam,
- 9:13SPEAKER_02: isso forma uma solução,
- 9:14tende a chegar no dia que a pessoa que não está acostumada a
- 9:18código legado ou
- 9:19alguma coisa mais complexa que a média vai dar a sugestão de
- 9:23tem que reescrever.
- 9:24SPEAKER_02: Então, ter que reescrever normalmente não é a solução.
- 9:27Mas às vezes a gente está num buraco tão sem saída que o custo
- 9:31do refactoring com
- 9:32SPEAKER_02: qualidade versus reescrever talvez valha a pena.
- 9:35SPEAKER_02: E aí quando a gente pensa o que é complexo,
- 9:37SPEAKER_02: talvez a contraposição seja discutir o que é simples,
- 9:40SPEAKER_02: mas aí vamos vendo.
- 9:42Mas eu acho que de fato um código muito complexo traz uma série
- 9:45de problemas,
- 9:46SPEAKER_02: principalmente débito técnico,
- 9:47SPEAKER_02: que você vai gastar tempo de alguém para ler isso depois no futuro,
- 9:51SPEAKER_02: então se você escrever algo complexo para algo que era simples,
- 9:54SPEAKER_02: a pessoa vai ficar horas ali lendo,
- 9:55SPEAKER_02: tentando entender,
- 9:56ou ela vai te consultar e fazer você gastar seu tempo de novo
- 9:59com aquilo para...
- 10:00SPEAKER_02: Ela entendeu o que você escreveu.
- 10:02SPEAKER_02: Também já era a própria questão de bugs.
- 10:04SPEAKER_02: Quando é difícil de entender,
- 10:05SPEAKER_02: você pode não ver alguma nuance,
- 10:07SPEAKER_02: alguma coisa,
- 10:08SPEAKER_02: algum detalhe que você pode passar despercebido.
- 10:11SPEAKER_02: de teste que você não percebeu,
- 10:12SPEAKER_02: porque enfim,
- 10:13você tinha tanta coisa na cabeça naquele momento que você tinha
- 10:16que colocar muita
- 10:17SPEAKER_02: coisa na cabeça,
- 10:17SPEAKER_02: no caso,
- 10:18SPEAKER_02: porque você tinha que entender aquele código,
- 10:19SPEAKER_02: que você acaba esquecendo algum cenário,
- 10:21SPEAKER_02: acaba deixando passar alguma coisa,
- 10:23SPEAKER_02: esquece de testar determinada coisa,
- 10:25SPEAKER_02: então acho que um código muito complexo,
- 10:28SPEAKER_02: de fato,
- 10:29SPEAKER_02: vai trazer mais bugs,
- 10:30SPEAKER_02: com certeza.
- 10:30SPEAKER_02: E tem muito da EgoTrip também, né?
- 10:32Às vezes o código só é complexo porque alguém que acabou de
- 10:35aprender algumas
- 10:36SPEAKER_02: features da linguagem quer usar pra dizer que usou.
- 10:39SPEAKER_02: Então existe essa,
- 10:40SPEAKER_02: em momentos,
- 10:41uma competição velada de quem é mais hardcore entendedor da
- 10:44linguagem específica.
- 10:46E aí o código fica complexo como uma sinalização de eu sou mais
- 10:49inteligente.
- 10:50SPEAKER_02: Só que, na verdade, você tá provando o oposto, né?
- 10:51SPEAKER_02: Você tá provando que você não consegue fazer de um jeito simples.
- 10:54SPEAKER_02: É,
- 10:54SPEAKER_02: isso até é uma história engraçada,
- 10:56SPEAKER_02: assim,
- 10:56SPEAKER_02: porque eu lembro que tinha um cara que trabalhava comigo,
- 10:58SPEAKER_02: assim,
- 10:59SPEAKER_02: eu não lembro qual foi o contexto,
- 11:01SPEAKER_02: assim,
- 11:01SPEAKER_02: mas eu fiz um PR lá,
- 11:03SPEAKER_02: eu subi,
- 11:03SPEAKER_02: depois ele pegou meu Slack e perguntou assim,
- 11:05SPEAKER_02: pô,
- 11:05SPEAKER_02: cara,
- 11:05SPEAKER_02: por que que tu não usou uma mona daqui?
- 11:08SPEAKER_02: E eu, que caralho é uma mona?
- 11:10SPEAKER_02: É sempre eles, né, cara?
- 11:12É sempre os doidão do funcional que quer ficar empurrando um
- 11:14negócio que não precisa no código.
- 11:16Sabe,
- 11:16tipo,
- 11:16o cara descobriu que era uma monada,
- 11:18agora eu queria aplicar em tudo,
- 11:20assim.
- 11:20SPEAKER_02: E aí ele me explicou o que que era,
- 11:21SPEAKER_02: e eu,
- 11:22SPEAKER_02: cara,
- 11:22SPEAKER_02: porque acho que vai ficar muito mais complexo do que tá,
- 11:25SPEAKER_02: e agora tu pensa um júnior,
- 11:26SPEAKER_02: entendeu,
- 11:26SPEAKER_02: o que que é uma monada,
- 11:27SPEAKER_02: sabe?
- 11:28SPEAKER_02: Beleza,
- 11:28SPEAKER_02: ela pode ter um caso de uso,
- 11:30SPEAKER_02: assim,
- 11:30SPEAKER_02: uma coisa que ela funcione,
- 11:31SPEAKER_02: mas pra esse caso ele vai deixar mais complexo,
- 11:33SPEAKER_02: ele pode ficar bonito,
- 11:34SPEAKER_02: pode ficar algo que tu vai mostrar com a tua mãe depois,
- 11:36SPEAKER_02: alguma coisa assim,
- 11:37SPEAKER_02: mas ele vai deixar o código mais complexo do que ele precisa,
- 11:40SPEAKER_02: porque é um contexto que não é muito usado a você fazer isso,
- 11:43SPEAKER_02: né?
- 11:43SPEAKER_02: É,
- 11:43SPEAKER_02: e inclusive tem essa parte do fator como esse time é composto,
- 11:48SPEAKER_02: quem são as pessoas que mantêm o software.
- 11:50Porque vão ter casos onde usar uma feature específica ou uma
- 11:54técnica específica vai
- 11:56SPEAKER_02: de encontro a ter mais corretude,
- 11:58SPEAKER_02: de ser mais elegante.
- 11:59SPEAKER_02: Mas o ponto é, para quem?
- 12:01SPEAKER_02: Porque ele pode ser elegante em abstrato,
- 12:03SPEAKER_02: para alguém que você nunca ouviu falar ou que não existe,
- 12:06SPEAKER_02: olhar o código e falar nossa,
- 12:08SPEAKER_02: você usou a coisa que é muito elegante,
- 12:09SPEAKER_02: agora só tem três linhas ao invés de vinte.
- 12:11SPEAKER_02: Mas o time que mantém,
- 12:13ele tem condições de olhar para aquilo e retirar esse benefício
- 12:18ou da elegância ou
- 12:19SPEAKER_02: da feature?
- 12:19SPEAKER_02: Às vezes não.
- 12:21Então ser um pouco mais,
- 12:23não declarativo,
- 12:24mas se você for um pouco mais específico,
- 12:26SPEAKER_02: positivo, né?
- 12:27SPEAKER_02: Falar exatamente o que você quer,
- 12:29SPEAKER_02: ao invés de tentar não fazer esses equilíbrios de,
- 12:31SPEAKER_02: nossa,
- 12:31SPEAKER_02: se eu escrever,
- 12:32SPEAKER_02: quanto menos código,
- 12:33SPEAKER_02: melhor,
- 12:34SPEAKER_02: né?
- 12:34SPEAKER_02: Tipo, a super one-liner que resolve tudo.
- 12:36SPEAKER_02: Eu acho que a gente devia evitar isso pensando em quem vai ler.
- 12:39SPEAKER_02: E quem vai ler não é um leitor abstrato, né?
- 12:41SPEAKER_02: Do tipo, qual é a média de leitores de código do Brasil?
- 12:44SPEAKER_02: Não é assim que a gente pensa.
- 12:46SPEAKER_02: Quem são as pessoas que mantêm o código hoje ou num futuro observável?
- 12:49SPEAKER_02: E aí que vem um balanço, que eu acho que é uma conversa difícil, que é
- 12:52Se a gente colocar todas as partes do código de forma muito
- 12:56fácil de entender,
- 12:57consequentemente o todo vai ser mais difícil de ler porque é
- 13:01uma nuvem muito grande
- 13:02SPEAKER_02: de coisas óbvias.
- 13:03SPEAKER_02: Mas ao contrário,
- 13:04SPEAKER_02: também é verdade nesse trade-off que é.
- 13:06SPEAKER_02: Se você usar um código altamente declarativo,
- 13:08SPEAKER_02: onde você pega cinco linhas que diz exatamente o que deveria acontecer,
- 13:12SPEAKER_02: é muito difícil entender as partes.
- 13:13Então existe um equilíbrio entre o que você quer entender mais
- 13:17rápido,
- 13:17o todo ou as partes.
- 13:19Aí depende de qual é a característica do software,
- 13:21como que ele é mantido.
- 13:22SPEAKER_02: Quando tiver um bug, o que você prefere?
- 13:24Só reescrever mais rápido porque é três linhas de novo ou
- 13:27entender tudo o que está acontecendo?
- 13:28Isso não é um problema óbvio,
- 13:30mas é uma escolha que você tem que ter todo dia.
- 13:32SPEAKER_01: Sim,
- 13:32e eu lembro que uma vez eu ouvi uma frase que falava que a
- 13:36simplicidade não é o
- 13:39SPEAKER_01: primeiro trabalho,
- 13:39SPEAKER_01: é a última revisão.
- 13:41SPEAKER_01: Então, basicamente, até a gente fez um posting brincando sobre isso na...
- 13:47SPEAKER_01: no Instagram da Codecom, que é vomita, depois refatoria.
- 13:50SPEAKER_01: Tipo,
- 13:50primeiro tu vai lá e escreve o código do jeito que tá na tua
- 13:53cabeça pra fazer ele e
- 13:55SPEAKER_01: depois tu vai melhorando sempre com esse pensamento
- 14:00Não sei se vocês têm alguma técnica que vocês usam,
- 14:03assim,
- 14:04pra evitar escrever código complexo.
- 14:05É,
- 14:06eu acho que essa que você descreveu é perfeita,
- 14:09assim,
- 14:09tipo,
- 14:09eu uso ao direto mesmo.
- 14:10SPEAKER_02: Primeiro eu tento escrever,
- 14:11SPEAKER_02: ou,
- 14:11SPEAKER_02: tipo,
- 14:11SPEAKER_02: às vezes eu escrevo na mão mesmo,
- 14:13SPEAKER_02: assim,
- 14:13SPEAKER_02: eu não escrevo o código,
- 14:14SPEAKER_02: né?
- 14:14SPEAKER_02: Escrevo mais ou menos o passo a passo que ele tem que fazer,
- 14:16SPEAKER_02: assim,
- 14:16SPEAKER_02: tipo,
- 14:16SPEAKER_02: o que seria o algoritmo.
- 14:17SPEAKER_02: E aí eu vou transformando isso em código,
- 14:20vou vendo mais ou menos algumas coisas que eu acho que está
- 14:22para ir melhorando e
- 14:23SPEAKER_02: depois no final tento pensar,
- 14:25SPEAKER_02: dou uma olhada geral assim e vejo,
- 14:26SPEAKER_02: pô,
- 14:26SPEAKER_02: tá bom,
- 14:27SPEAKER_02: dá para entender,
- 14:28SPEAKER_02: sabe?
- 14:28SPEAKER_02: Tipo, eu consigo explicar isso aqui fácil.
- 14:31Acho que essa técnica de botar para fora primeiro para resolver
- 14:33logo e depois
- 14:34SPEAKER_02: refatorar costuma funcionar.
- 14:36SPEAKER_02: bem.
- 14:36SPEAKER_02: Eu acho que às vezes...
- 14:37SPEAKER_02: Porque se tu às vezes tenta fazer o contrário,
- 14:39SPEAKER_02: assim,
- 14:40SPEAKER_02: você tenta pensar muito em design,
- 14:41SPEAKER_02: tem até um termo que eles usam,
- 14:42SPEAKER_02: né?
- 14:43SPEAKER_02: Paralysis by analysis.
- 14:44SPEAKER_02: Quando você fica paralisado pra ficar analisando demais.
- 14:47SPEAKER_02: Tanto tempo pensando,
- 14:48SPEAKER_02: tentando chegar na solução perfeita,
- 14:50SPEAKER_02: assim,
- 14:50SPEAKER_02: que no fim você pode até,
- 14:51SPEAKER_02: na verdade,
- 14:52SPEAKER_02: acabar criando complexidade por ter pensado demais,
- 14:55SPEAKER_02: assim.
- 14:55SPEAKER_02: Porque você fez um caminho mental que outras pessoas não fizeram.
- 14:58SPEAKER_02: Essa ideia de vomitar uma solução e depois você ir meio que pulindo ela,
- 15:02SPEAKER_02: assim,
- 15:02SPEAKER_02: eu acho que ela tende a funcionar bem.
- 15:03SPEAKER_02: Você até
- 15:04SPEAKER_02: Porque, às vezes, você precisa entregar rápido, né?
- 15:05SPEAKER_02: Então,
- 15:06SPEAKER_02: às vezes,
- 15:06SPEAKER_02: você entregar alguma coisa funcionando,
- 15:08SPEAKER_02: por mais que seja feio,
- 15:09SPEAKER_02: acaba sendo melhor,
- 15:12SPEAKER_02: né?
- 15:12SPEAKER_02: E aí, depois, os outros podem até te ajudar a refatorar, né?
- 15:14SPEAKER_02: Se for o caso...
- 15:15SPEAKER_02: Eles vão olhar pro teu código e falar,
- 15:16SPEAKER_02: pô,
- 15:17SPEAKER_02: tenta fazer isso aqui desse jeito e tal.
- 15:19Às vezes,
- 15:19o próprio trabalho de simplificar o código não precisa ser tão
- 15:22solitário,
- 15:22assim.
- 15:23SPEAKER_02: Você pode ter a ajuda de outras pessoas, né?
- 15:24SPEAKER_02: É,
- 15:24SPEAKER_02: inclusive tem uma coisa que se chama The Unix Way,
- 15:28SPEAKER_02: que exatamente vai na linha disso que eles falam.
- 15:30SPEAKER_02: Make it work, make it right, make it fast.
- 15:33SPEAKER_02: Ou seja, primeiro você tem que fazer funcionar, né?
- 15:35SPEAKER_02: Funciona ou não funciona?
- 15:36SPEAKER_02: Beleza.
- 15:37Mas funciona certo,
- 15:38porque vão ter alguns ad cases e outras coisas que você vai ter
- 15:41que lidar.
- 15:42SPEAKER_02: Tipo assim, agora ele é correto, tem a corretude que você precisa, sim.
- 15:45SPEAKER_02: Agora que finalmente a gente chegou em algum lugar,
- 15:47SPEAKER_02: a gente pode pensar em fazer ele ficar mais rápido.
- 15:48SPEAKER_02: Ou seja, a gente não otimiza antes de começar o trabalho.
- 15:53SPEAKER_02: E aí quando a gente pensa em otimização,
- 15:54SPEAKER_02: a gente tem que lembrar que tempo do mundo real também é otimização.
- 15:58SPEAKER_02: Então como é que a gente ganha tempo no mundo real?
- 15:59SPEAKER_02: Quando a gente cria abstração, né?
- 16:01SPEAKER_02: Se a gente cria abstração,
- 16:01a gente não tem que lidar de novo com tudo aquilo que já foi
- 16:04abstraído por nós ou
- 16:05SPEAKER_02: por outras pessoas,
- 16:06SPEAKER_02: do tipo uma biblioteca,
- 16:08SPEAKER_02: a forma de modelar o sistema.
- 16:09Então tudo isso,
- 16:10todos esses tipos de abstrações servem para a gente ganhar
- 16:12tempo.
- 16:13Só se a gente tentar ganhar tempo no primeiro minuto da
- 16:15modelagem ou do software...
- 16:17SPEAKER_02: provavelmente a gente está otimizando.
- 16:18SPEAKER_02: E aí quando a gente pensa em otimização,
- 16:19SPEAKER_02: é muito fácil a gente levar isso para o mundo do benchmark,
- 16:22SPEAKER_02: quão rápido é o código,
- 16:23SPEAKER_02: mas otimização tem outras facetas.
- 16:25SPEAKER_02: Por exemplo, essa de abstrair cedo.
- 16:27E aí que vem o ponto de lembrar que tem linguagens que deixam
- 16:30isso mais difícil e mais fácil.
- 16:32SPEAKER_02: Por exemplo,
- 16:33SPEAKER_02: infelizmente vou ter que falar dele,
- 16:34SPEAKER_02: mas assim,
- 16:35SPEAKER_02: quando a gente vai olhar para o Java,
- 16:36SPEAKER_02: pelo menos os Java antes das 25 versões que ele tem,
- 16:40SPEAKER_02: você precisa dizer qual é a sua interface antes.
- 16:43SPEAKER_02: Você não pode declarar ela depois que o código já existe.
- 16:45SPEAKER_02: Você não tem essa opção.
- 16:46SPEAKER_02: Porque as interfaces em Java são nominais, né?
- 16:48SPEAKER_02: Você tem que dizer, implementes tal coisa.
- 16:51SPEAKER_02: Porque se não tiver isso escrito, não vai implementar e pronto, acabou.
- 16:54SPEAKER_02: Tem outras linguagens onde esse tipo de uso de interface é estrutural.
- 16:58SPEAKER_02: Então, tipo, se você tem as mesmas assinaturas, vai rolar.
- 17:01SPEAKER_02: Aí em umas linguagens é duct type, em outras se chama de outra coisa.
- 17:04SPEAKER_02: Mas o que eu quero dizer com isso tudo?
- 17:06SPEAKER_02: Se você tem que saber qual é a tua abstração antes,
- 17:09então o jeito de pensar quando você está nessas linguagens meio
- 17:12que não é tão bom,
- 17:14porque você tem que imaginar como vai ser usado em N casos
- 17:17antes mesmo de ter o
- 17:18SPEAKER_02: primeiro.
- 17:19SPEAKER_02: Então,
- 17:19SPEAKER_02: teoricamente,
- 17:20SPEAKER_02: não quer dizer que é uma regra,
- 17:21SPEAKER_02: quando você programa em Java,
- 17:22SPEAKER_02: você está otimizando cedo demais.
- 17:24SPEAKER_02: Mas isso é uma característica da linguagem.
- 17:26Isso serve para ser Sharp e outras coisas que você tem que
- 17:28nominalmente dizer.
- 17:30Essa classe ou o nome da coisa que for a linguagem implementa
- 17:34explicitamente essa interface.
- 17:35SPEAKER_02: E aí isso traz um problema, né?
- 17:37SPEAKER_02: Porque de uma hora para outra você tem que saber qual é o segundo,
- 17:40SPEAKER_02: terceiro,
- 17:40SPEAKER_02: quarto caso que aquilo vai ser usado sem conhecer os casos.
- 17:46SPEAKER_02: Eu acho que isso até é um bom exemplo.
- 17:49Não é porque a linguagem tem um paradigma que você é obrigado a
- 17:52ter esse paradigma
- 17:53SPEAKER_02: na sua cabeça também.
- 17:54Então o próprio Java é um bom exemplo de quando você faz uma
- 17:58programação muito
- 17:59orientada à interface e às vezes você nem tem um código que é
- 18:02tão reutilizável,
- 18:03SPEAKER_02: que você vai precisar dessas interfaces depois,
- 18:05SPEAKER_02: você acaba...
- 18:06SPEAKER_02: criando uma complexidade desnecessária.
- 18:07Então,
- 18:08agora,
- 18:08para toda classe que você for criar,
- 18:09você vai ter que criar uma interface.
- 18:11SPEAKER_02: Então, às vezes, você só precisa de uma classe mesmo.
- 18:14SPEAKER_02: Você só vai ter um caso que vai utilizar isso.
- 18:16Acho que até uma das críticas que fazem em cima do clean code é
- 18:20justamente isso.
- 18:20SPEAKER_02: Ele acaba gerando muito código,
- 18:22SPEAKER_02: muita complexidade,
- 18:23SPEAKER_02: às vezes,
- 18:23SPEAKER_02: desnecessária para ter um código,
- 18:25SPEAKER_02: abre aspas,
- 18:26SPEAKER_02: limpo.
- 18:26SPEAKER_02: Mas é um...
- 18:27SPEAKER_02: É um limpo, às vezes, para um tipo de utilidade específica.
- 18:30SPEAKER_02: É uma utilidade no sentido,
- 18:31SPEAKER_02: às vezes,
- 18:32SPEAKER_02: mais de você não ficar tão preso,
- 18:33SPEAKER_02: às vezes,
- 18:34SPEAKER_02: a frameworks ou a detalhes de implementação,
- 18:37SPEAKER_02: coisas mais específicas,
- 18:39SPEAKER_02: integrações.
- 18:40SPEAKER_02: Ele fica mais limpo nesse sentido,
- 18:41SPEAKER_02: mas às vezes não fica tão limpo para quem for ler,
- 18:43SPEAKER_02: por exemplo.
- 18:43SPEAKER_02: Então é bem o que o Alex falou, sabe, de...
- 18:45Às vezes você otimizar é otimizar tempo de leitura de outros
- 18:49devs lendo o seu código.
- 18:51Você otimizar eles entenderem o seu código e justamente não
- 18:55sofrendo coisas com
- 18:56bugs e não seguir necessariamente as boas práticas de
- 18:59organização de código,
- 19:00SPEAKER_02: fazer um 5S do código,
- 19:01SPEAKER_02: sabe?
- 19:02SPEAKER_02: Deixar as coisas com gavetinhas corretas, com as labels corretas, etc.
- 19:06SPEAKER_02: O problema do Clean Code é que ele existe, né?
- 19:08SPEAKER_02: Esse que é a principal crítica.
- 19:09SPEAKER_02: O Clean Code é que ele foi escrito, né?
- 19:12SPEAKER_01: O Bruno Rocha,
- 19:13SPEAKER_01: ele veio aqui,
- 19:13SPEAKER_01: participou,
- 19:14SPEAKER_01: ele falou que ele já leu o Clean Code várias vezes,
- 19:17SPEAKER_01: até outras versões que tem dele.
- 19:19SPEAKER_01: E ele, tipo, ele usa pra, tipo, saber o que não fazer, assim, também, né?
- 19:25SPEAKER_01: Tipo,
- 19:25SPEAKER_01: ele interpreta aquilo e tem a própria...
- 19:28SPEAKER_01: Só que tem muita gente que lê o Clean Code e leva aquilo como,
- 19:31SPEAKER_01: tipo,
- 19:31SPEAKER_01: não,
- 19:31SPEAKER_01: essas são as regras universais,
- 19:33SPEAKER_01: eu não posso...
- 19:35SPEAKER_01: Não posso fazer nada de errado.
- 19:36Acho que você tem que ter essa sabedoria de saber quando
- 19:39implementar ou não,
- 19:40SPEAKER_02: de quando ele de fato vai fazer sentido ou não.
- 19:42SPEAKER_02: Porque tem contextos que você vai precisar de um reaproveitamento e,
- 19:45SPEAKER_02: cara,
- 19:45SPEAKER_02: uma interface vai te resolver muita coisa.
- 19:47SPEAKER_02: Um exemplo prático é quando você vai trabalhar,
- 19:49SPEAKER_02: por exemplo,
- 19:49com manipulação de arquivo e você não sabe se o arquivo vai ser
- 19:52salvo em disco,
- 19:52SPEAKER_02: no S3 ou num pendrive,
- 19:55SPEAKER_02: tá ligado?
- 19:56Você tem uma interface que vai basicamente te permitir ter essa
- 20:00maleabilidade de escolher...
- 20:01SPEAKER_02: onde que você vai plugar,
- 20:02SPEAKER_02: assim,
- 20:03SPEAKER_02: então você tem quase como se fosse um adaptadorzinho mesmo,
- 20:06SPEAKER_02: assim,
- 20:06SPEAKER_02: que dependendo do que,
- 20:08SPEAKER_02: onde você for implementar,
- 20:09SPEAKER_02: né,
- 20:09SPEAKER_02: você tem uma base em comum entre essas três classes,
- 20:12SPEAKER_02: por exemplo,
- 20:12SPEAKER_02: então,
- 20:13SPEAKER_02: nesse caso faz sentido você ter uma interface,
- 20:14SPEAKER_02: agora para outras coisas,
- 20:15SPEAKER_02: às vezes não.
- 20:16SPEAKER_01: E quando o Alex estava falando,
- 20:18eu também lembrei daquela biblioteca famosa JavaScript chamada
- 20:22Underscore,
- 20:23SPEAKER_01: se vocês já passaram por isso?
- 20:25mas basicamente é um underline e ele é tipo underline o nome da
- 20:30função é underline
- 20:31e daí ela tem várias na verdade o nome da classe é underline e
- 20:34daí ela tem várias
- 20:35funções mas tipo é horrível assim eu já passei por isso no
- 20:38código e daí tipo tá o
- 20:39que que faz isso é tipo um underline ponto slug sei lá e daí
- 20:43ele faz o slug da
- 20:44SPEAKER_01: parada daí tipo sei lá
- 20:46SPEAKER_01: Eu acho muito...
- 20:47SPEAKER_01: Ah,
- 20:47é tipo um compilado de um monte de função utilitária que você
- 20:51pode usar em qualquer
- 20:52SPEAKER_02: lugar,
- 20:52SPEAKER_02: tipo isso.
- 20:52SPEAKER_02: É, geralmente de texto, isso.
- 20:55SPEAKER_02: Entendi, entendi.
- 20:56SPEAKER_02: É, JavaScript é isso aí, né?
- 20:58SPEAKER_02: Esse mundinho aí.
- 20:58SPEAKER_02: Não tem como fugir muito, não.
- 21:00SPEAKER_02: É a caixa de Pandora da programação, hein?
- 21:02Era para ser usado no browser,
- 21:04mas aí inventaram de jogar isso em qualquer lugar.
- 21:06SPEAKER_02: A main que tem o WebAssembly agora, que aí ninguém precisa mais usar.
- 21:10SPEAKER_02: Mas beleza.
- 21:13SPEAKER_01: Teve outra coisa que eu vi no artigo recente também,
- 21:16SPEAKER_01: que fala sobre que a maior parte dos códigos é sem graça.
- 21:21SPEAKER_02: Tomara, eu prefiro que seja assim mesmo.
- 21:23SPEAKER_01: Não, mas é verdade, né?
- 21:25SPEAKER_01: É verdade.
- 21:25SPEAKER_01: Só que tem muita gente que fica nessa pira de,
- 21:28SPEAKER_01: tipo,
- 21:28SPEAKER_01: querer criar coisas magníficas e fazer códigos incríveis,
- 21:34SPEAKER_01: né?
- 21:35SPEAKER_01: Eu não sei se vocês sentem isso também, ou já sentiram antigamente.
- 21:39Não sei se vocês têm alguma coisa assim de como resistir a essa
- 21:42tentação de tentar
- 21:44SPEAKER_01: não fazer um código chato,
- 21:45SPEAKER_01: tá ligado?
- 21:46SPEAKER_02: Acho que é meio que uma rebeldia contra o próprio ego, assim, tá ligado?
- 21:49SPEAKER_02: A gente botou esse rótulo de que a gente é engenheiro, né?
- 21:52SPEAKER_02: E aí a gente bota na cabeça que a gente tem que fazer engenharia.
- 21:55SPEAKER_02: Não é bem isso, né?
- 21:56SPEAKER_02: Tipo,
- 21:57SPEAKER_02: eu acho que,
- 21:58SPEAKER_02: eu não sei,
- 21:58SPEAKER_02: pelo menos pra mim,
- 21:59SPEAKER_02: assim,
- 21:59SPEAKER_02: a simplicidade é um negócio que é até gratificante,
- 22:01SPEAKER_02: sabe?
- 22:02SPEAKER_02: Que,
- 22:02SPEAKER_02: tipo,
- 22:02sabe quando você olha pra um problema complexo e você resolve
- 22:05ele de um jeito
- 22:05SPEAKER_02: simples,
- 22:06SPEAKER_02: etc?
- 22:09SPEAKER_02: um negócio complexo de um jeito muito simples.
- 22:12Que é diferente de quando você pega um problema complexo e
- 22:14resolve de um jeito complexo.
- 22:15SPEAKER_02: Você fica pensando que você é um maluco, basicamente.
- 22:17Porque você olha pra aquilo lá e pensa cara,
- 22:19como é que eu cheguei nessa solução,
- 22:20sabe?
- 22:21SPEAKER_02: Aquela velha piada, né?
- 22:22Tipo,
- 22:22quando eu comecei isso aqui,
- 22:24Deus e eu sabíamos o que estávamos fazendo.
- 22:25SPEAKER_02: Agora só Deus sabe.
- 22:26Porque às vezes é um processo tão complexo assim que até te
- 22:29explicar pra outra pessoa,
- 22:31sei lá.
- 22:31SPEAKER_02: Não é um...
- 22:32SPEAKER_02: Pelo menos pra mim,
- 22:33SPEAKER_02: assim,
- 22:34SPEAKER_02: eu não consigo olhar pra aquilo dali e pensar,
- 22:35SPEAKER_02: cara,
- 22:36SPEAKER_02: eu fiz um bom trabalho,
- 22:36SPEAKER_02: sabe?
- 22:37SPEAKER_02: Porque é um negócio tão... É uma engenhoca, você fez uma engenhoca, sabe?
- 22:40SPEAKER_02: Você não se orgulha de uma engenhoca.
- 22:42Mas essa parada de código complexo é uma parada...
- 22:45Escrever código simples,
- 22:47na real.
- 22:47SPEAKER_01: É uma parada meio mestre Miyagi,
- 22:49SPEAKER_01: assim,
- 22:50SPEAKER_01: que quanto mais conhecimento tu tem,
- 22:53SPEAKER_01: mais código simples tu consegue escrever?
- 22:55SPEAKER_01: Ou,
- 22:55SPEAKER_01: tipo,
- 22:56é uma parada que tu já consegue fazer desde quando começou a
- 22:59aprender a programar,
- 23:00SPEAKER_01: assim?
- 23:00É,
- 23:00eu não sei,
- 23:01porque quando a gente tá começando,
- 23:03a gente não tem referencial,
- 23:04né?
- 23:04SPEAKER_02: Então, todo código, ele só existe, né?
- 23:06SPEAKER_02: Ele não é nem simples e nem difícil.
- 23:08Quando você tá literalmente conversando,
- 23:10tudo é complexo,
- 23:10porque,
- 23:11sei lá,
- 23:12né?
- 23:12SPEAKER_02: Tem um if dentro do fork, o que será que é isso?
- 23:14SPEAKER_02: E aí é complexo porque você não está acostumado.
- 23:17SPEAKER_02: Aí vão ter algumas coisas que vão ser familiaridade, né?
- 23:20E outras coisas vão ser aprendizado que você vai conseguir
- 23:22levar para outros lugares.
- 23:23SPEAKER_02: Então, com o passar do tempo, o ecossistema onde você está inserido, né?
- 23:28SPEAKER_02: Eu vou dar um exemplo hipotético.
- 23:30SPEAKER_02: Não tão hipotético assim, mas muito hipotético.
- 23:32SPEAKER_02: Imagina que você passou a vida inteira trabalhando no HSBC,
- 23:35em vez de numa startup ou em qualquer feng que as pessoas
- 23:38gostam de dizer que é o
- 23:39SPEAKER_02: melhor lugar do mundo.
- 23:40SPEAKER_02: Provavelmente,
- 23:41SPEAKER_02: o código mais simples que você viu,
- 23:43SPEAKER_02: ele tem várias complexidades acidentais e vários dogmas.
- 23:46SPEAKER_02: Tipo,
- 23:46SPEAKER_02: um pouquinho de clean code,
- 23:47SPEAKER_02: um pouquinho de coisas tipo da Microsoft,
- 23:49SPEAKER_02: event source,
- 23:50SPEAKER_02: essas coisas.
- 23:51SPEAKER_02: Então,
- 23:51SPEAKER_02: se a tua visão de mundo é só existe esses três meio que jeitos de fazer,
- 23:56SPEAKER_02: a tua noção de simples pode ser,
- 24:00SPEAKER_02: eu já fiz isso aqui tantas vezes que se tornou simples,
- 24:02SPEAKER_02: é uma questão de costume,
- 24:03SPEAKER_02: ou não tem como ser mais simples que isso,
- 24:04SPEAKER_02: porque eu nunca vi.
- 24:06Então,
- 24:06se for mais simples que isso,
- 24:08pode ser lido,
- 24:08inclusive,
- 24:08como errado.
- 24:09SPEAKER_02: Tipo assim, como assim não tem todas essas proteções que eu não vou usar?
- 24:13SPEAKER_02: Essa é uma forma de ver.
- 24:15SPEAKER_02: E qual é a pergunta?
- 24:16Porque eu acho que eu falei de um cenário hipotético,
- 24:18mas eu não respondi ela.
- 24:20Eu tava perguntando sobre quanto mais experiente você é,
- 24:24mais fácil fica escrever código.
- 24:26SPEAKER_02: Ah, sim, com certeza.
- 24:27SPEAKER_02: Então, e é por isso que eu disse isso.
- 24:29Porque você pode ter menos experiência e ter passado por
- 24:33lugares onde você
- 24:33conseguiu aprender ou com pessoas ou com cenários que
- 24:36demonstraram que essa
- 24:37SPEAKER_02: simplicidade é possível e qual é os efeitos dela,
- 24:40SPEAKER_02: né?
- 24:40Tipo,
- 24:41se fizer desse jeito,
- 24:41eu ganho isso,
- 24:42perco aquilo,
- 24:42tenho aqueles trade-offs.
- 24:43SPEAKER_02: Mas, de qualquer maneira, você entendeu...
- 24:46meio que por osmose ou por empiria que existe algo que dá pra
- 24:50chamar de elegante.
- 24:51SPEAKER_02: Com o tempo, você começa a associar características, né?
- 24:54SPEAKER_02: Ah,
- 24:54SPEAKER_02: então quando eu não preciso disso,
- 24:56SPEAKER_02: ou não tenho que fazer aquilo,
- 24:57SPEAKER_02: ou consigo atingir X,
- 24:59SPEAKER_02: então provavelmente isso é mais simples.
- 25:00SPEAKER_02: E aí fica aquela coisa meio no sentimento.
- 25:02SPEAKER_02: Dá pra descrever o que é simplicidade.
- 25:04SPEAKER_02: Vou deixar pro final.
- 25:05SPEAKER_02: Mas no geral, eu acho que sim.
- 25:07SPEAKER_02: Mais experiência te torna mais apto a fazer coisas mais simples.
- 25:11Mas o simples,
- 25:12tipo,
- 25:13Holy Grail do simples é difícil porque isso depende do que você
- 25:16já viu.
- 25:16Eu acho que você consegue fazer o mais simples porque você tem
- 25:18uma mirilha de coisas.
- 25:19SPEAKER_02: Tipo assim, eu vi 50 jeitos diferentes.
- 25:21SPEAKER_02: Tem o mais complexo e o mais simples.
- 25:23SPEAKER_02: Então a experiência deixa você fazer o mais simples?
- 25:25SPEAKER_02: Eu acho que sim.
- 25:26SPEAKER_02: Só que o seu simples pode ser diferente do meu.
- 25:27SPEAKER_02: Eu acho que essa aqui é a coisa que deixa confuso.
- 25:30SPEAKER_02: O Holy Grail é só o Uncle Bob, né?
- 25:32SPEAKER_02: É, falta ele conseguir.
- 25:33SPEAKER_02: Ele tá atrás até hoje.
- 25:35SPEAKER_02: É,
- 25:35mas eu acho que a simplicidade é uma coisa que leva tempo pra
- 25:39você aprender,
- 25:40SPEAKER_02: assim,
- 25:40SPEAKER_02: e eu acho que é uma questão de maturidade nos dois sentidos,
- 25:43SPEAKER_02: assim,
- 25:43SPEAKER_02: maturidade profissional e até emocional mesmo,
- 25:46SPEAKER_02: porque,
- 25:46SPEAKER_02: querendo ou não,
- 25:47SPEAKER_02: às vezes a simplicidade envolve até um pouco de empatia com outra pessoa,
- 25:50SPEAKER_02: né,
- 25:51SPEAKER_02: com quem que vai ler esse código,
- 25:52SPEAKER_02: com quem que
- 25:53SPEAKER_02: Ou até uma empatia com o seu eu futuro,
- 25:55SPEAKER_02: de tipo,
- 25:55SPEAKER_02: cara,
- 25:56no futuro eu vou ter que voltar nisso aqui e eu preciso
- 25:58entender isso aqui rápido.
- 25:59SPEAKER_02: Eu acho que são coisas que você vai pegando meio que no tato, sabe?
- 26:03Conforme você vai convivendo,
- 26:04você vai vendo o que as outras pessoas fazem com você,
- 26:07sabe?
- 26:07SPEAKER_02: Virou um papo de psicologia, né?
- 26:08SPEAKER_02: Psicólogo.
- 26:09SPEAKER_02: Tipo, como os outros te tratam através do código.
- 26:11SPEAKER_02: Porque código é linguagem, é comunicação, então.
- 26:14SPEAKER_02: Como os outros te tratam no código ali.
- 26:17SPEAKER_02: E como você trata os outros, sabe?
- 26:19SPEAKER_02: Então, você quer que as pessoas te entendam rápido, sabe?
- 26:22Que a coisa que você faça,
- 26:23que você está fazendo,
- 26:24seja facilmente entendível.
- 26:26SPEAKER_02: Acho que é um exercício até de empatia.
- 26:28SPEAKER_02: Preocupar com quem vai revisar SPR, com quem vai ler isso depois.
- 26:31SPEAKER_02: Acho que isso demanda maturidade.
- 26:35SPEAKER_01: E onde vocês acham que entra a complexidade e a abstração de código?
- 26:40SPEAKER_01: Tipo assim, vocês têm alguma técnica também sobre isso?
- 26:43SPEAKER_01: Tipo, quando abstrair?
- 26:45SPEAKER_01: Quando eu tô abstraindo demais?
- 26:46SPEAKER_01: Quando eu devo abstrair?
- 26:48SPEAKER_01: Quando não?
- 26:49SPEAKER_01: Cara, não sei se tem um macete.
- 26:51SPEAKER_01: Tipo, entra numa parte mais técnica, assim.
- 26:53SPEAKER_02: Sei,
- 26:53SPEAKER_02: não sei se tem um macete assim,
- 26:54mas o que geralmente funcionou pra gente era você não abstrai
- 26:58isso que você não
- 26:58SPEAKER_02: precisa.
- 26:58SPEAKER_02: Então,
- 26:59SPEAKER_02: você às vezes tá pensando muito no futuro,
- 27:02SPEAKER_02: assim,
- 27:02SPEAKER_02: tipo,
- 27:03SPEAKER_02: ah,
- 27:03SPEAKER_02: pode ser que alguém no futuro vai precisar reutilizar isso,
- 27:05SPEAKER_02: ou pode ser que a gente precise colocar essa feature depois no futuro.
- 27:09SPEAKER_02: Você tem certeza que você vai precisar disso?
- 27:11SPEAKER_02: Não, então não faz isso agora.
- 27:12SPEAKER_02: Então, resolve de um jeito simples, depois você refatora, sabe?
- 27:15SPEAKER_02: Acho que...
- 27:15SPEAKER_02: Isso é mais fácil para quem trabalha com um serviço online,
- 27:19SPEAKER_02: que você pode atualizar o código com alguma facilidade,
- 27:21SPEAKER_02: você sobe um novo container lá,
- 27:22SPEAKER_02: um código novo.
- 27:23SPEAKER_02: Então, nessa realidade, você pode modificar o seu código depois também.
- 27:29SPEAKER_02: Às vezes,
- 27:29SPEAKER_02: se resolver de um jeito mais simples agora,
- 27:31você tem menos coisa para explicar para os outros do que se
- 27:36você estivesse pensando
- 27:36SPEAKER_02: em uma abstração futura que vai vir daqui seis meses,
- 27:39SPEAKER_02: um ano,
- 27:39SPEAKER_02: pode ser que nem venha.
- 27:40Então você foca só no que você tem que fazer agora e abstrai só
- 27:43quando de fato
- 27:44SPEAKER_02: precisa,
- 27:44SPEAKER_02: quando você sabe que vai ter um contexto para utilizar essa abstração.
- 27:47Eu acho que é isso,
- 27:48eu acho que a abstração tem que emergir do que você precisa
- 27:51abstrair.
- 27:52SPEAKER_02: Vão ter cenários como esse que você só tem um cenário,
- 27:56SPEAKER_02: então você não tem por que ficar pensando em como vão ser os outros.
- 27:58SPEAKER_02: Aí vai ter um momento que você vê que tem um segundo jeito de fazer.
- 28:02SPEAKER_02: E aí eu tenho uma regra pra mim,
- 28:03SPEAKER_02: né,
- 28:03SPEAKER_02: que eu acho que ela é universal,
- 28:04SPEAKER_02: que é,
- 28:05SPEAKER_02: eu só abstraio quando eu conheço o terceiro caso,
- 28:07SPEAKER_02: antes eu não faço.
- 28:08Antes eu copio e colo,
- 28:09se for o caso,
- 28:09e troco os nomes e vamos ver o que acontece.
- 28:11SPEAKER_02: Porque pode ser que seja só uma grande coincidência no início,
- 28:13SPEAKER_02: que as coisas são parecidas,
- 28:14SPEAKER_02: mas elas não são tipo versões da mesma coisa,
- 28:17SPEAKER_02: elas só são parecidas.
- 28:18SPEAKER_02: E aí quando eu chego no terceiro caso,
- 28:20SPEAKER_02: aí eu penso,
- 28:21SPEAKER_02: peraí,
- 28:21SPEAKER_02: isso agora realmente é tudo a mesma coisa ou não?
- 28:24SPEAKER_02: Isso é uma forma de ver.
- 28:25Mas aí tem um caso que o Daliano trouxe,
- 28:27que é,
- 28:28vão ter momentos que você não pode fazer isso.
- 28:30SPEAKER_02: Por exemplo,
- 28:30se você estiver falando como vai ser um sistema embarcado que
- 28:34não tem como fazer
- 28:34SPEAKER_02: atualização,
- 28:35SPEAKER_02: depois que está lá no chip já era,
- 28:37SPEAKER_02: meio que você tem que saber de antemão,
- 28:40SPEAKER_02: o que dá,
- 28:40SPEAKER_02: o que não dá,
- 28:41qual é o tipo de abstração que você vai criar para conseguir se
- 28:44comunicar ainda da
- 28:44SPEAKER_02: mesma forma.
- 28:45SPEAKER_02: Só que aí eu acho que quando chega nesse cenário,
- 28:47SPEAKER_02: ou cenários parecidos com esse,
- 28:49o tempo de planejamento e o estudo em cima das possibilidades é
- 28:53bem grande e é
- 28:54SPEAKER_02: sério.
- 28:54SPEAKER_02: Não é tipo, vai, vai, vai, pega o card do gira, não é isso, né?
- 28:57SPEAKER_02: Porque quando a gente tem um cenário de mais velocidade,
- 29:00SPEAKER_02: a abstração precisa emergir com o tempo,
- 29:02SPEAKER_02: porque senão você já não tem tempo.
- 29:04SPEAKER_02: E aí você vai se enganar que você vai fazer uma boa abstração,
- 29:07SPEAKER_02: que é a clássica abstração de eu vou trocar o banco de dados,
- 29:10SPEAKER_02: aí quando você troca você tem que trocar as interfaces.
- 29:12SPEAKER_02: É esse o caso,
- 29:12porque foi tão pouco planejado ou com tão pouca experiência
- 29:16sobre o segundo e
- 29:17SPEAKER_02: terceiro caso,
- 29:18SPEAKER_02: que a abstração só existe para você ficar confortável.
- 29:21SPEAKER_02: Então você,
- 29:22SPEAKER_02: teoricamente,
- 29:22SPEAKER_02: está comprando tempo,
- 29:24SPEAKER_02: tentando comprar algum tempo com isso,
- 29:25SPEAKER_02: meio que ou sabendo que nunca vai ter a segunda versão,
- 29:28SPEAKER_02: ou quando chegar na segunda versão,
- 29:30SPEAKER_02: meio que tanto faz porque você vai ter que reescrever tudo.
- 29:32SPEAKER_02: Então, quando que eu abstraio?
- 29:33SPEAKER_02: Em casos concretos é quando aparece o terceiro caso.
- 29:36Em casos onde aquilo não deveria ser o escopo do dia a dia das
- 29:40pessoas programando
- 29:41SPEAKER_02: ou do time,
- 29:42SPEAKER_02: disciplinas específicas,
- 29:43SPEAKER_02: né?
- 29:43Imagina assim,
- 29:44eu não preciso que todo mundo do meu time saiba a criptografia.
- 29:47Eu não preciso que todo mundo do meu time saiba como exatamente
- 29:50se conecta com o
- 29:51SPEAKER_02: banco de dados,
- 29:52SPEAKER_02: fora chamar a função.
- 29:53SPEAKER_02: Então,
- 29:53SPEAKER_02: essas coisas estarem abstraídas,
- 29:54SPEAKER_02: eu acho que é ok,
- 29:55SPEAKER_02: porque,
- 29:56SPEAKER_02: apesar de relevantes,
- 29:58SPEAKER_02: elas não são o que você precisa fazer no dia a dia,
- 30:00SPEAKER_02: porque esse problema já foi resolvido.
- 30:02SPEAKER_02: O que é diferente de eu criar uma abstração para o meu domínio,
- 30:06SPEAKER_02: que é criar um conjunto de classes,
- 30:07SPEAKER_02: um modelo mental,
- 30:08SPEAKER_02: essa é a mais perigosa para mim,
- 30:10SPEAKER_02: porque...
- 30:10SPEAKER_02: Se eu planejei,
- 30:11SPEAKER_02: mesmo que ainda em conjunto ou não,
- 30:13SPEAKER_02: mas normalmente as pessoas acabam fazendo sozinhas,
- 30:15SPEAKER_02: esse tipo de abstração de domínio,
- 30:17SPEAKER_02: como a minha aplicação vai funcionar,
- 30:18SPEAKER_02: eu estou inventando uma visão de mundo.
- 30:20Eu estou criando um modelo mental que a partir de amanhã alguém
- 30:23vai ter que tentar
- 30:24SPEAKER_02: pensar igual a mim para conseguir continuar desenvolvendo.
- 30:27SPEAKER_02: E aí em cenários mais rápidos,
- 30:29SPEAKER_02: aí eu vou falar qualquer empresa que tem OKR,
- 30:31SPEAKER_02: esse tipo de coisa...
- 30:32Você vai ter que fazer mais rápido do que você vai poder parar
- 30:34e remodelar e pensar
- 30:36SPEAKER_02: qual é a abstração correta daqui para frente.
- 30:38SPEAKER_02: O que vai gerar?
- 30:39Você vai ter projetos grandes que vão ter níveis de abstração
- 30:42mais e menos
- 30:42SPEAKER_02: sofisticada dentro da mesma codebase.
- 30:45SPEAKER_02: Ou seja,
- 30:45SPEAKER_02: se for para ter esse tipo de bagunça,
- 30:48SPEAKER_02: eu prefiro que seja uma abstração muito pequena ou que não tenha.
- 30:51SPEAKER_02: Porque aí, pelo menos, eu sei o que está acontecendo.
- 30:53Porque imagina,
- 30:54eu te falo assim,
- 30:55isso aqui é um gerenciador de construção de carro.
- 30:58SPEAKER_02: Isso aqui é...
- 30:59SPEAKER_02: O negócio que cria prego, você fala, caralho, é muito longe um do outro.
- 31:02SPEAKER_02: Sim,
- 31:03mas no mundo real você vai chegar nesse cenário se a abstração
- 31:06tentar ser muito
- 31:08SPEAKER_02: sofisticada,
- 31:09SPEAKER_02: o que não é uma coisa necessariamente ruim,
- 31:10SPEAKER_02: em projetos que são rápidos,
- 31:12que eles precisam estar mudando e precisam estar tendo
- 31:15correspondência com esses
- 31:16SPEAKER_02: desafios de mercado e as palavrinhas em inglês,
- 31:18SPEAKER_02: market fit,
- 31:19SPEAKER_02: essas coisas.
- 31:19SPEAKER_02: Então, não sei se vale a pena.
- 31:21SPEAKER_02: Tem linguagens que ajudam e deixam mais difícil fazer esse tipo de coisa.
- 31:24SPEAKER_01: Alex,
- 31:25SPEAKER_01: lá no começo da conversa,
- 31:27SPEAKER_01: tu falou sobre a complexidade inerente,
- 31:31SPEAKER_01: complexidade,
- 31:32SPEAKER_01: como que é?
- 31:33SPEAKER_01: Acidental.
- 31:34É,
- 31:34mas tipo assim,
- 31:34eu fiquei pensando,
- 31:36tu falou sobre banco de dados,
- 31:37por exemplo.
- 31:38Daí imagina que uma pessoa lá pegou uma tarefa de criar um
- 31:41produto novo...
- 31:43SPEAKER_01: E ela precisa fazer essa configuração inicial ali do banco de dados.
- 31:48SPEAKER_01: Como que ela decide se,
- 31:49SPEAKER_01: tipo,
- 31:50SPEAKER_01: pô,
- 31:50eu já vou criar essa configuração de um jeito que é plug and
- 31:53play para um dia,
- 31:54SPEAKER_01: se alguém quiser trocar o banco de dados,
- 31:57SPEAKER_01: fique mais fácil?
- 31:58SPEAKER_01: Ou não,
- 31:59eu vou fazer aqui do jeito para resolver com o nosso banco de
- 32:02dados atual e foda-se
- 32:03SPEAKER_01: o futuro?
- 32:04SPEAKER_01: Porque é complexo de mudar isso, né?
- 32:06SPEAKER_01: Ou sei lá, não sei se tu tem outro exemplo, né?
- 32:08Mas tipo,
- 32:09pô,
- 32:09sei lá,
- 32:09uma feature muito foda que talvez pode ser que aconteça.
- 32:14SPEAKER_01: Tipo, sei lá, um dev pleno que pegou essa tarefa pra fazer.
- 32:17SPEAKER_01: Como que ele pode decidir se ele deixa complexo ou não?
- 32:22Se ele tiver uma escolha,
- 32:23deixar complexo ou não,
- 32:24a resposta é sempre não,
- 32:25né?
- 32:26Porque se ele sabe que ele vai deixar complexo,
- 32:27acho que ele não deveria.
- 32:28SPEAKER_01: Não,
- 32:29SPEAKER_01: mas eu tô falando dessa ideia ali do inerente ou não,
- 32:31SPEAKER_01: tipo,
- 32:32SPEAKER_01: será que eu preciso deixar complexo pra facilitar?
- 32:35SPEAKER_01: Tipo,
- 32:35SPEAKER_01: eu acho que,
- 32:36SPEAKER_01: eu sei que vai de desencontro do que o Galeno falou,
- 32:39SPEAKER_01: de tipo,
- 32:39SPEAKER_01: ah,
- 32:40SPEAKER_01: o futuro foda-se,
- 32:41SPEAKER_01: mas,
- 32:42SPEAKER_01: pô,
- 32:43SPEAKER_01: imagina que é uma tarefa que realmente possa impactar,
- 32:45SPEAKER_01: igual essa do banco de dados,
- 32:47SPEAKER_01: né,
- 32:47SPEAKER_01: sei lá.
- 32:47SPEAKER_02: Ah, não, não, não.
- 32:48SPEAKER_02: Eu entendi, eu entendi.
- 32:49Mas é que o meu ponto é justamente se a escolha é eu posso
- 32:51deixar complexo ou não,
- 32:52SPEAKER_02: a resposta é sempre não.
- 32:53SPEAKER_02: Mas aí se o ponto é é complexo, então não tem como responder não.
- 32:56SPEAKER_02: Porque é complexo.
- 32:57SPEAKER_02: Então vai ter algum nível de complexidade ali.
- 33:00Aí a discussão que pode ter é é tão complexo quanto precisa ou
- 33:03vai ficar mais complexo ainda?
- 33:04SPEAKER_02: Que aí que é a parte do acidental.
- 33:06SPEAKER_02: Porque se já é complexo, não tem como ficar simples.
- 33:08SPEAKER_02: Não tem como, acabou.
- 33:10SPEAKER_02: O meu ponto agora é,
- 33:11eu faço o mínimo aceitável por progredir ou eu tento pensar um
- 33:15pouco como é que eu
- 33:16SPEAKER_02: deixo isso mais fácil ou talvez,
- 33:18SPEAKER_02: entre aspas,
- 33:18SPEAKER_02: mais complexo,
- 33:19mas mais simples de digerir por alguns detalhes para outras
- 33:22pessoas que vão vir
- 33:23SPEAKER_02: depois,
- 33:24SPEAKER_02: ou nas próximas tarefas,
- 33:25SPEAKER_02: ou os próximos times que vão lidar com isso.
- 33:27Aí a discussão é justamente aonde você está e qual é a cultura
- 33:31desse lugar.
- 33:31Porque a gente fala de código como se fosse uma coisa muito
- 33:34high-tech,
- 33:35meu Deus,
- 33:35eu sou nerd.
- 33:36SPEAKER_02: Mas, na verdade, o código só serve para falar com outra pessoa.
- 33:38Porque a máquina não precisa do código que você escreve,
- 33:40ela precisa do bináriozão no final.
- 33:43SPEAKER_02: Tanto faz o que você escreveu com aquela linguagenzinha bonita.
- 33:46SPEAKER_02: Dado isso, como é que eu diria?
- 33:48SPEAKER_02: Se você tem,
- 33:49SPEAKER_02: no geral,
- 33:50SPEAKER_02: a gente está falando de médias,
- 33:51SPEAKER_02: porque tudo vai ter exceção para qualquer coisa.
- 33:53Se você tem pessoas que conseguiriam evoluir daquele ponto que
- 33:57você parou em
- 33:57SPEAKER_02: diante,
- 33:58SPEAKER_02: com pouca orientação,
- 33:59SPEAKER_02: porque esse é o tipo de pessoas que estão à sua volta,
- 34:02SPEAKER_02: na verdade eu faria o mínimo aceitável,
- 34:04SPEAKER_02: e eu não tô falando fazer errado,
- 34:05SPEAKER_02: nem fazer com bug,
- 34:06SPEAKER_02: nem fazer com risco de segurança.
- 34:07SPEAKER_02: O mínimo aceitável é progredir.
- 34:08Aí você deixa anotado quais foram as motivações,
- 34:10até onde você foi,
- 34:11e alguém vai entender.
- 34:12SPEAKER_02: Se tu não escrever nada, vai parecer só que você fez sacanagem.
- 34:14SPEAKER_02: Mas o ideal é você deixar declarado.
- 34:16SPEAKER_02: Por que eu fiz dessa forma e o que eu queria chegar?
- 34:18Se você tem um time que provavelmente você é uma das pessoas
- 34:21mais experientes,
- 34:22você sabe que as outras pessoas ainda não chegaram nesse lugar
- 34:24de saber fazer as
- 34:25SPEAKER_02: escolhas.
- 34:27Se ela vê algo sem estrutura,
- 34:28ela não vai conseguir,
- 34:29quando precisar,
- 34:30criar uma estrutura.
- 34:31SPEAKER_02: Porque assim, todo mundo já começou sem saber nada.
- 34:34SPEAKER_02: Então eu tive um dia na minha vida que eu olhei para o projeto.
- 34:37SPEAKER_02: Se o projeto fosse três arquivos, ele jamais ia ter uma pasta.
- 34:40SPEAKER_02: Porque para que tem que ter uma pasta...
- 34:41SPEAKER_02: Se alguém mais inteligente que eu só botou três arquivos.
- 34:44SPEAKER_02: Você não tem nem condições de dizer qual é o correto.
- 34:46SPEAKER_02: Vou fazer uma vírgula dentro disso aí.
- 34:47SPEAKER_02: E é por isso que os dogmas existem.
- 34:50Por que alguém lê,
- 34:51sei lá,
- 34:52o próprio Clean Code ou leu alguma coisa sobre arquitetura no
- 34:55geral?
- 34:56SPEAKER_02: Tipo, ah, li o livro do Hexagonal, li o livro do Clean Architecture.
- 34:59SPEAKER_02: Aí ela fala, agora eu sei fazer e só tem esse jeito no mundo para fazer.
- 35:02SPEAKER_02: porque antes ela não tinha nenhum.
- 35:04SPEAKER_02: Normalmente é esse o caso.
- 35:05SPEAKER_02: Então se ela não tem nenhum,
- 35:06SPEAKER_02: é melhor usar aquilo que ela sabe e ela tem algum respaldo de dizer.
- 35:09SPEAKER_02: Alguém ou uma legião de alguém diz que se eu fizer isso aqui tá tudo bem.
- 35:13SPEAKER_02: Aí ela sai do eu não sei nada pra eu sei alguma coisa.
- 35:16SPEAKER_02: Aí ela pode acabar entrando em cenários onde ela vai ver a segunda,
- 35:19SPEAKER_02: a terceira e começar a ver que tem diferenças.
- 35:21SPEAKER_02: Ou só virar o dogma mesmo, né?
- 35:23SPEAKER_02: Se agarra em um e nunca mais pode trocar.
- 35:24Mas quanto mais ela vê essas coisas,
- 35:26ela vai ficando experiente a ponto de ter a decisão.
- 35:28SPEAKER_02: Só que se a gente tem essas pessoas,
- 35:29SPEAKER_02: aí a gente está no caso A,
- 35:31SPEAKER_02: que é a pessoa que pode olhar para aquilo e falar,
- 35:32SPEAKER_02: não,
- 35:33SPEAKER_02: chegou o momento onde a gente tem que ter essa mudança.
- 35:35SPEAKER_02: O segundo caso é, a pessoa não sabe o que fazer com aquilo depois.
- 35:38SPEAKER_02: E aí você vai ter uma decisão.
- 35:40SPEAKER_02: Você vai deixar pronto o suficiente para ela usar e igualtar.
- 35:44SPEAKER_02: E só quando você voltar com essa reestrutura vai acontecer...
- 35:46Ou o que acontece nos cenários mega enterprise e vai de terno e
- 35:50gravata para o
- 35:51SPEAKER_02: trabalho que é,
- 35:52eu vou deixar todas as caixinhas prontas porque quando precisar
- 35:55a caixinha já está
- 35:56SPEAKER_02: lá,
- 35:56SPEAKER_02: é só botar o arquivo.
- 35:57SPEAKER_02: Ou a camada já está lá e é só fazer.
- 35:59SPEAKER_02: E é por isso que muita gente às vezes reclama de o seguinte,
- 36:02SPEAKER_02: eu estou num projeto e eu só quero salvar a informação.
- 36:05SPEAKER_02: E aí eu tenho várias indireções e várias camadas.
- 36:08SPEAKER_02: Tem mais de um motivo disso acontecer.
- 36:09SPEAKER_02: O mais comum é, às vezes tu é ruim e não sabe.
- 36:12SPEAKER_02: Porque se chegou nesse ponto,
- 36:14é porque talvez você não fosse a pessoa que conseguiria chegar
- 36:17nessas camadas e
- 36:18SPEAKER_02: precisasse.
- 36:19SPEAKER_02: Não sei se é o caso.
- 36:20SPEAKER_02: Mas tem o caso dois.
- 36:21SPEAKER_02: Trauma de quem tá criando.
- 36:23Porque a pessoa tá tão acostumada a lidar com pessoas que não
- 36:26conseguem chegar num
- 36:28SPEAKER_02: design ou numa estrutura que ela é intencional,
- 36:30SPEAKER_02: que ela deixa as caixas prontas desde o dia um,
- 36:32SPEAKER_02: porque ela fala,
- 36:33SPEAKER_02: eu não sei quem vai mexer nessa porra,
- 36:34SPEAKER_02: mas quando mexer,
- 36:35SPEAKER_02: já tá tudo formatado,
- 36:36SPEAKER_02: é só usar.
- 36:37SPEAKER_02: Então, assim, isso está errado?
- 36:39SPEAKER_02: Não sei se está errado.
- 36:40SPEAKER_02: Errado e errado é muito difícil dizer, né?
- 36:42Como pauta moral,
- 36:43acho que não dá para contar,
- 36:44mas tem motivo para essas coisas acontecerem.
- 36:46SPEAKER_02: Não tem tipo assim,
- 36:47hoje eu acordei e vou fazer uma arquitetura que todo mundo vai
- 36:50ter muito trabalho
- 36:51SPEAKER_02: porque tem várias pastas.
- 36:52SPEAKER_02: Ninguém faz isso, pô.
- 36:53SPEAKER_02: Tirando, sei lá, os psicopatas.
- 36:55SPEAKER_02: Mas,
- 36:55SPEAKER_02: no geral,
- 36:56as pessoas fazem essas múltiplas camadas desde o dia 1 porque
- 37:00existe um cenário
- 37:01SPEAKER_02: dentro da empresa onde...
- 37:03SPEAKER_02: É meio que sabido e às vezes é velado,
- 37:05SPEAKER_02: porque assim,
- 37:05SPEAKER_02: no foguetinho do Slack não existe falar que as pessoas não sabem,
- 37:08SPEAKER_02: né?
- 37:08SPEAKER_02: Mas a gente sabe que tem pessoas que não sabem.
- 37:10SPEAKER_02: Coisas.
- 37:11SPEAKER_02: E eu sou uma delas.
- 37:12SPEAKER_02: Tem várias coisas que eu não sei.
- 37:13SPEAKER_02: Mas se eu fosse menos experiente, saberia menos ainda.
- 37:15SPEAKER_02: Dado isso,
- 37:16se eu dou o projeto e eu sei que vão ter tipo um monte de pleno
- 37:19pra baixo e eles
- 37:20SPEAKER_02: não têm condições de fazer essa arquitetura evoluir,
- 37:23SPEAKER_02: porque é fofo,
- 37:24SPEAKER_02: né?
- 37:24SPEAKER_02: Tu falar arquitetura evolutiva.
- 37:25SPEAKER_02: Se ninguém sabe evoluir, não é evolutiva.
- 37:27SPEAKER_02: Vai ficar parado na pedra.
- 37:28SPEAKER_02: Se ninguém sabe fazer isso funcionar, o que vai acontecer?
- 37:31SPEAKER_02: Vai ficar uma posta, vai aparecer um shell script o negócio inteiro.
- 37:34SPEAKER_02: Logo,
- 37:34é por isso que as caixinhas estão prontas desde o início e é
- 37:36por isso que as
- 37:37pessoas amam ler os livros do Uncle Bob ou qualquer coisa
- 37:41parecida e fazer
- 37:41SPEAKER_02: idêntico.
- 37:42Porque pelo menos elas sabem que em alguma visão de mundo
- 37:45aquilo está correto.
- 37:46SPEAKER_02: E aí a discussão é, vou fazer complexo ou vou fazer não complexo?
- 37:49Eu acho que às vezes você faz complexo porque as pessoas que
- 37:52vão vir depois não vão
- 37:53SPEAKER_02: conseguir fazer complexo se for preciso.
- 37:55SPEAKER_02: Então no dia que necessitar da complexidade, não vai ter como chegar lá.
- 37:59SPEAKER_02: Vai ficar só bagunçado, que é pior do que complexo.
- 38:05SPEAKER_01: Isso não tem a ver com a parada que o Galeno falou também de empatia?
- 38:08SPEAKER_01: Querendo ou não,
- 38:10SPEAKER_01: ao mesmo tempo que tu tá xingando todo mundo,
- 38:12SPEAKER_01: falando que as pessoas não têm capacidade,
- 38:14SPEAKER_01: são burros,
- 38:14SPEAKER_01: não sei o que lá,
- 38:15SPEAKER_01: tu tá sendo empático com essas pessoas?
- 38:17Não,
- 38:17pô,
- 38:17eu não xingo,
- 38:18não sou aqui,
- 38:18só que às vezes as pessoas não sabem.
- 38:20SPEAKER_02: Eu não falo, você tem que ser muito idiota.
- 38:22SPEAKER_02: Não, eu não faço isso não.
- 38:24SPEAKER_01: Não, mas entendeu, né?
- 38:26SPEAKER_01: Tipo assim,
- 38:27SPEAKER_01: eu estou sendo empático como um dev senior,
- 38:29SPEAKER_01: um staff,
- 38:30SPEAKER_01: sei lá,
- 38:31SPEAKER_01: de fazer uma parada complexa no meu código,
- 38:34SPEAKER_01: porque quando as pessoas usarem isso,
- 38:36pra elas vai ser mais fácil do que elas terem que entender o
- 38:40que eu tô fazendo,
- 38:41SPEAKER_01: sabe?
- 38:42SPEAKER_01: Então, mas aí que tá.
- 38:43SPEAKER_02: Alguém pode fazer isso por mais de um motivo.
- 38:44SPEAKER_02: Um motivo pode ser,
- 38:46SPEAKER_02: estou preocupado com que as pessoas mantenham esse projeto com qualidade,
- 38:50SPEAKER_02: logo vou deixar as estruturas pra elas.
- 38:51SPEAKER_02: Sou bondoso.
- 38:52SPEAKER_02: Tem o segundo caso, que é, eu só sei fazer desse jeito.
- 38:55SPEAKER_02: Quando eu aprendi sobre essas coisas,
- 38:58SPEAKER_02: eu aprendi,
- 38:58SPEAKER_02: sei lá,
- 38:58SPEAKER_02: no blog da AWS,
- 38:59SPEAKER_02: que fala que pra ter uma coisa simples tem que usar cinco produtos.
- 39:02E aí eu fiz certificação,
- 39:04e aí eu tenho que provar que tudo que eu aprendi faz sentido.
- 39:06SPEAKER_02: Então eu tenho que usar tudo.
- 39:07É tipo,
- 39:08olhando pro final da foto,
- 39:10eu acho que você não tem como dizer qual foi a intenção.
- 39:12Mas existem motivos não tão bons e motivos bem empáticos para
- 39:16essa coisa acontecer.
- 39:17SPEAKER_02: Mas você que está recebendo isso,
- 39:19SPEAKER_02: você pode olhar e falar assim,
- 39:20SPEAKER_02: porra,
- 39:21SPEAKER_02: que merda,
- 39:21SPEAKER_02: que projeto enorme,
- 39:22SPEAKER_02: eu só queria salvar o banco.
- 39:23SPEAKER_02: Às vezes o cara teve uma boa intenção,
- 39:26SPEAKER_02: porque na cabeça dele era óbvio,
- 39:27SPEAKER_02: mas no fim ele acabou tornando um negócio complexo,
- 39:29SPEAKER_02: ele não levou em conta o que os outros sabiam.
- 39:31Esse exemplo da AWS é muito bom,
- 39:33o cara querer meter um SNS com SQS conectado num Dynamo com
- 39:37SPEAKER_02: um milhão de tecnologias e o cara só sabe PHP e mais que ele.
- 39:40SPEAKER_02: Às vezes você tem que pensar no outro assim, deixar sempre para o outro.
- 39:43SPEAKER_02: Ou se tiver que ser essa arquitetura mesmo,
- 39:45SPEAKER_02: aí você documenta,
- 39:47SPEAKER_02: sei lá,
- 39:47SPEAKER_02: dá um jeito depois para esse cara conseguir entender o que você fez.
- 39:50SPEAKER_02: Inclusive o DHH,
- 39:52SPEAKER_02: que agora ele está começando a entrar para uma onda meio errada,
- 39:54SPEAKER_02: mas vamos falar só do que ele faz,
- 39:56SPEAKER_02: não do que ele é.
- 39:57SPEAKER_02: Ele tem um blog post que se chama Mercadores de Complexidade.
- 40:01SPEAKER_02: Ele explora um pouco,
- 40:02SPEAKER_02: tipo assim,
- 40:03SPEAKER_02: às vezes vai ser lido ou vai ser vendido para você uma ideia de que essa
- 40:08SPEAKER_02: complexidade é a solução.
- 40:10SPEAKER_02: É o jeito correto de fazer,
- 40:11porque olha aqui quantas coisas estão chegando e fazendo a sua
- 40:15solução ficar
- 40:15SPEAKER_02: perfeitamente.
- 40:16SPEAKER_02: É só tu ver, qualquer blueprint da AWS usa cinco, seis coisas.
- 40:20SPEAKER_02: Na verdade, você provavelmente não precisa de nada.
- 40:21SPEAKER_02: E quando eu digo nada, é. Dá para ser uma coisa só que resolve.
- 40:24SPEAKER_02: Cara, é assustador.
- 40:25Quando eu vejo aquele,
- 40:26ah,
- 40:26veja a arquitetura que a Netflix usa,
- 40:29tá ligado?
- 40:29SPEAKER_02: Aí você vê que,
- 40:30SPEAKER_02: tipo,
- 40:31SPEAKER_02: 15 coisas diferentes,
- 40:32SPEAKER_02: assim,
- 40:32SPEAKER_02: coisas que não tem nem como pesquisar no Google.
- 40:35SPEAKER_01: Tem que ser amigo de um cara da Amazon pra ter acesso.
- 40:39SPEAKER_02: Exatamente.
- 40:40SPEAKER_02: Quando a gente pensa nessa parte de mercadores de complexidade,
- 40:43ele está falando muito sobre a ideia de que se vendeu com a
- 40:45cloud é simples,
- 40:46mas na verdade é muito mais simples você ter um servidor e
- 40:48manter ele se você for
- 40:49SPEAKER_02: pensar na complexidade que você vai chegar no final,
- 40:51SPEAKER_02: tanto que eles saíram da cloud,
- 40:52SPEAKER_02: é um caso deles.
- 40:53SPEAKER_02: Mas se a gente levar isso para o código que a gente está falando,
- 40:55SPEAKER_02: a gente tem vários mercadores de complexidade.
- 40:58SPEAKER_02: Porque tem um monte de gente falando que o jeito de fazer o código é X.
- 41:02SPEAKER_02: Porque se você falar assim,
- 41:03SPEAKER_02: cara,
- 41:03SPEAKER_02: é só usar essa linha,
- 41:04SPEAKER_02: é só gravar no banco e beleza,
- 41:05SPEAKER_02: tá funcionando.
- 41:06SPEAKER_02: Não brilha, não é massa pra caralho.
- 41:08SPEAKER_02: Não tem todo o equilibrismo de falar que aquilo ali funciona.
- 41:13SPEAKER_02: E a gente teve um caso na CodeCon Select, né?
- 41:15Lá no Pioneer que eu tava,
- 41:16alguém falou assim,
- 41:17porra,
- 41:17a gente usou event sourcing no projeto.
- 41:20SPEAKER_02: E era um projeto muito simples.
- 41:21SPEAKER_02: A gente não consegue mais manter o projeto.
- 41:23SPEAKER_02: Tipo, uma mudança simples demora alguns dias pra ser feita.
- 41:27SPEAKER_02: Entenda,
- 41:27SPEAKER_02: se você procurar sobre event sourcing,
- 41:29SPEAKER_02: tirando os haters,
- 41:30SPEAKER_02: tipo oficialmente haters,
- 41:31SPEAKER_02: mas se tu for pegar a média de como as pessoas estão falando sobre,
- 41:34SPEAKER_02: parece que é a solução para todos os problemas.
- 41:36SPEAKER_02: E quando eu quero dizer todos os problemas,
- 41:37qualquer pessoa que está um pouquinho mais alinhada com o
- 41:40design vai falar,
- 41:41SPEAKER_02: eu sei que não é.
- 41:42SPEAKER_02: Mas não é para você a conversa, é para quem pode cair nesse conto.
- 41:44SPEAKER_02: Se você for olhar os blog posts e as pessoas se promovendo,
- 41:47SPEAKER_02: parece que se você fizer desse jeito,
- 41:48SPEAKER_02: nunca mais você vai ter problema porque resolve tudo.
- 41:50SPEAKER_02: Vai ter features que você nunca teve antes.
- 41:52SPEAKER_02: Você pode fazer query voltando no tempo.
- 41:54SPEAKER_02: Você pode fazer várias coisas.
- 41:56SPEAKER_02: Boa, eu não preciso de nada disso.
- 41:57SPEAKER_02: E agora?
- 41:57SPEAKER_02: Ah, mas se você precisar, já está lá.
- 41:59SPEAKER_02: E aí, talvez, venha o lance da boa intenção.
- 42:01Ah,
- 42:02você é empático para fazer com o event sourcing porque vai
- 42:04chegar nesse dia.
- 42:05SPEAKER_02: Boa.
- 42:05SPEAKER_02: Aí acontece o quê?
- 42:07SPEAKER_02: não precisava e o cara vai numa conferência pra falar fudeu,
- 42:10eu tô usando aquele negócio que resolver todos os problemas e
- 42:13agora só é difícil de
- 42:14SPEAKER_02: manter então assim,
- 42:15SPEAKER_02: tem gente pra cacete vendendo o curso falando,
- 42:19SPEAKER_02: é com event sourcing que faz porque se eu te falar
- 42:21SPEAKER_02: É só fazer.
- 42:22SPEAKER_02: Demora duas horas e tu já aprendeu?
- 42:24SPEAKER_02: Eu não vou poder te cobrar muito caro, né?
- 42:26SPEAKER_02: Eu preciso de alguma coisa que demora 20 horas pra eu te ensinar.
- 42:28SPEAKER_02: Que aí tu pensa, cara, eu estudei pra caralho, passei a semana fazendo.
- 42:32SPEAKER_02: Nossa, tem vários detalhes, né?
- 42:33SPEAKER_02: Agora, é isso.
- 42:34SPEAKER_02: São mercadores de complexidade.
- 42:36SPEAKER_02: Fazer
- 42:37SPEAKER_02: simples não é muito atrativo, né?
- 42:39SPEAKER_02: Tipo, ninguém gosta de, nossa, realmente, você só resolveu.
- 42:43SPEAKER_02: Não é nem vendável, né?
- 42:44SPEAKER_02: Do ponto de vista de marketing,
- 42:46SPEAKER_02: de falar que fez alguma coisa,
- 42:47SPEAKER_02: você não vai pra uma conferência e falar assim,
- 42:49SPEAKER_02: então,
- 42:50SPEAKER_02: eu escrevi esse arquivo aqui,
- 42:51SPEAKER_02: ele tem 16 linhas e é isso aí,
- 42:52SPEAKER_02: acabou o problema.
- 42:54SPEAKER_02: Não é a QCon que vai querer isso.
- 42:55SPEAKER_02: Vão ser conferências mais ativas sobre fazer bons designs.
- 42:59Na QCon é como eu usei tudo que a AWS oferece e da GCP porque
- 43:03era multi-cloud.
- 43:03SPEAKER_02: Aí todo mundo, uau, que solução massa.
- 43:06SPEAKER_02: Às vezes nem precisa, pô.
- 43:08SPEAKER_01: E eu fiquei pensando também no papel do Code Review.
- 43:11SPEAKER_01: Tipo,
- 43:11SPEAKER_01: principalmente assim,
- 43:12SPEAKER_01: pô,
- 43:13SPEAKER_01: eu quero começar a evitar códigos complexos na minha empresa,
- 43:17SPEAKER_01: eu estou cuidando do meu,
- 43:19SPEAKER_01: mas tem pessoas aqui que não estão.
- 43:22SPEAKER_01: Então, como que as pessoas podem usar mais o Code Review, assim, para...
- 43:26SPEAKER_01: E melhorando esse codebase bugado aí que eles estão...
- 43:30SPEAKER_02: Eu tenho uma ideia,
- 43:31SPEAKER_02: mas eu não sei se ela é a melhor ideia.
- 43:33SPEAKER_02: Code review sem guideline nenhum, tipo o que a empresa espera.
- 43:36E quando eu digo empresa,
- 43:37pode ser um time,
- 43:38um grupo de times,
- 43:39algo maior ou a empresa inteira.
- 43:41Se tu não tem guideline nenhum,
- 43:42todo code review é um coder versus 30 reviewers.
- 43:46SPEAKER_02: Porque vira um debate de quem está certo baseado em subjetividade.
- 43:50SPEAKER_02: Baseado em, eu trabalhei na empresa X e lá era certo fazer isso.
- 43:53SPEAKER_02: Eu li o livro Y e é assim que deveria ser feito.
- 43:56SPEAKER_02: A discussão,
- 43:57SPEAKER_02: ela não é formatada em vamos para frente sim ou não,
- 44:00SPEAKER_02: ou qual é o critério para isso aqui passar,
- 44:01SPEAKER_02: mesmo que tenha problemas talvez de estética,
- 44:04SPEAKER_02: não de corretude.
- 44:05SPEAKER_02: Então assim,
- 44:06SPEAKER_02: code review sem nenhum guideline,
- 44:08SPEAKER_02: tipo assim,
- 44:08SPEAKER_02: esse é o mínimo que a gente olha,
- 44:09SPEAKER_02: esse é o mínimo que a gente espera de formato e etc.
- 44:12SPEAKER_02: É discussão, é tipo rim, é quem tem mais persuasão.
- 44:15SPEAKER_01: É basicamente isso.
- 44:17SPEAKER_01: Poxa,
- 44:17SPEAKER_01: eu trabalhei numa empresa que era essa parada assim,
- 44:21SPEAKER_01: de tipo,
- 44:21SPEAKER_01: tu mesmo merge aí ao teu PR,
- 44:23SPEAKER_01: que eu achava mó estranho.
- 44:24Mas eu lembro que era tipo assim,
- 44:26tu só precisava de um code review aprovado e tu mergeava.
- 44:30SPEAKER_01: Daí tipo,
- 44:31SPEAKER_01: tinha vários PRs abertos lá,
- 44:33SPEAKER_01: que ia lá uns dev sênior de dois anos,
- 44:36SPEAKER_01: comentava só um LGTM,
- 44:38SPEAKER_01: looks good to me,
- 44:40SPEAKER_01: aprovava,
- 44:41SPEAKER_01: e o código assim,
- 44:43SPEAKER_01: a Deus dará,
- 44:43SPEAKER_01: né?
- 44:44SPEAKER_01: É loucura, né?
- 44:45SPEAKER_01: Tem muita empresa que deve ser assim, né, cara?
- 44:47SPEAKER_02: Deve ser, meio anarquista.
- 44:49SPEAKER_02: Não sei se precisa de guidelines também, assim, seria bom, né?
- 44:51Acho que no Asus lá tinha muito guideline,
- 44:55assim,
- 44:55de tipo,
- 44:55ah,
- 44:56manter simples,
- 44:57sabe?
- 44:57SPEAKER_02: Da teoria do bom escoteiro,
- 44:59SPEAKER_02: de sempre tentar deixar o lugar mais organizado do que quando você pegou.
- 45:02SPEAKER_02: Isso é legal,
- 45:02SPEAKER_02: assim,
- 45:03SPEAKER_02: pra fomentar uma cultura e tudo mais,
- 45:04SPEAKER_02: mas às vezes eu acho que o guideline é a tua opinião,
- 45:06SPEAKER_02: cara.
- 45:08SPEAKER_02: Se tu
- 45:08SPEAKER_02: sente que tu não tá conseguindo entender o que você tá lendo, sabe?
- 45:12SPEAKER_02: Aquele vídeo do Clóvis de Barros Filhos,
- 45:14SPEAKER_02: como esse cara escreveu algo que eu não consigo entender,
- 45:17SPEAKER_02: sabe?
- 45:18Às vezes o problema tá de fato na escrita do cara e às vezes é
- 45:21só a tua opinião de
- 45:22SPEAKER_02: cara,
- 45:22SPEAKER_02: eu não tô conseguindo entender isso aqui.
- 45:23SPEAKER_02: É o suficiente pra
- 45:25SPEAKER_02: a pessoa ter que olhar aquilo dali com um pouco mais de cuidado,
- 45:28SPEAKER_02: assim,
- 45:28SPEAKER_02: ainda mais se tu tem algum nível maior de senioridade,
- 45:30SPEAKER_02: assim,
- 45:31SPEAKER_02: se tu já é pleno,
- 45:31SPEAKER_02: já é sênior,
- 45:32SPEAKER_02: você tem um pouco mais de bagagem pra ver que aquilo dali,
- 45:36SPEAKER_02: na verdade,
- 45:36SPEAKER_02: tá uma maçaroca,
- 45:37SPEAKER_02: né,
- 45:37SPEAKER_02: tem um código espaguete,
- 45:38SPEAKER_02: assim,
- 45:39SPEAKER_02: que tá tudo enrolado,
- 45:40SPEAKER_02: você não sabe onde começa,
- 45:41SPEAKER_02: onde termina cada filme.
- 45:43SPEAKER_02: E aí você usa sua própria experiência como base pra isso,
- 45:46SPEAKER_02: tipo,
- 45:46SPEAKER_02: ah,
- 45:47SPEAKER_02: tentar chegar na solução mais simples junto com a pessoa que escreveu PR.
- 45:50SPEAKER_02: É, eu acho que o caminho da colaboração é importante.
- 45:56SPEAKER_01: Pra não virar essa parada que o Alex comentou, eu acho que é isso aí.
- 46:00SPEAKER_01: É tipo, tu ter essa empatia também no Code Review, né?
- 46:03SPEAKER_01: De questionar, né?
- 46:04SPEAKER_01: Ao invés de falar, não, faça desse jeito.
- 46:06SPEAKER_01: Vai lá e fala, pô, por que que tu resolveu fazer desse jeito, né?
- 46:09SPEAKER_01: Eu não entendi direito o que que esse código tá fazendo.
- 46:12Às vezes a pessoa fez daquele jeito porque foi o único meio que
- 46:15ela encontrou para
- 46:16SPEAKER_02: fazer com o Danilo.
- 46:17SPEAKER_02: E às vezes você chegar com outra ideia ou se dispor a ajudar ela,
- 46:20SPEAKER_02: você consegue dar uma ideia para ela e ajudar ela no próprio processo de
- 46:24SPEAKER_02: aprendizado.
- 46:25Eu acho que a forma como eu mais aprendi a escrever um código
- 46:28mais organizado foi
- 46:28SPEAKER_02: justamente com base no que os outros me diziam que estava ruim.
- 46:31Eu tinha um professor de design que falou que o melhor cliente
- 46:35que ele teve,
- 46:35SPEAKER_02: entre aspas,
- 46:36foi o cliente que mais se aclamava porque era um cliente que
- 46:38reclamava com
- 46:39SPEAKER_02: argumento.
- 46:39SPEAKER_02: E meio que isso foi ensinando ele a criar,
- 46:42SPEAKER_02: artes um pouco melhores,
- 46:44SPEAKER_02: assim,
- 46:44SPEAKER_02: tipo,
- 46:44SPEAKER_02: ele prestava sensações sobre a mente,
- 46:46SPEAKER_02: detalhes que antes ele não prestava.
- 46:48Então foi nesse ciclo de feedback que ele foi se tornando um
- 46:51profissional melhor.
- 46:52SPEAKER_02: É,
- 46:52SPEAKER_02: no geral,
- 46:52SPEAKER_02: eu acho que tem empresas e empresas,
- 46:54SPEAKER_02: né,
- 46:54SPEAKER_02: vão ter lugares onde,
- 46:56SPEAKER_02: na média,
- 46:56SPEAKER_02: todo mundo tem uma mesma visão de mundo,
- 46:58SPEAKER_02: pelo menos de tecnologia,
- 47:00SPEAKER_02: e vão ter coisas que são dadas,
- 47:02SPEAKER_02: né,
- 47:02SPEAKER_02: tipo,
- 47:02SPEAKER_02: todo mundo meio que concorda com elas.
- 47:04SPEAKER_02: Mas vão ter vários outros lugares que não.
- 47:06SPEAKER_02: E aí por que eu acho que tem que ter algum nível de guia?
- 47:09SPEAKER_02: E quando eu digo guia, não precisa ser 80 páginas.
- 47:11SPEAKER_02: Às vezes pode ser 3 parágrafos, às vezes pode ser 80 páginas.
- 47:14SPEAKER_02: Por quê?
- 47:14SPEAKER_02: Porque se a gente pensar assim, tem alguém mais experiente revisando.
- 47:17SPEAKER_02: Imagina que sou literalmente eu.
- 47:19SPEAKER_02: E aí foi
- 47:21SPEAKER_02: Imagina se eu comento assim, isso não segue solid.
- 47:23SPEAKER_02: Aí,
- 47:23SPEAKER_02: tipo,
- 47:23hierarquicamente eu vou falar um negócio que uma massa de
- 47:27pessoas concorda,
- 47:28SPEAKER_02: não precisa,
- 47:29SPEAKER_02: e aí se tornou aquilo que deve ser feito.
- 47:31Por isso que eu acho que tem que ter um baseline mínimo de
- 47:34quais são as regras que
- 47:35a gente não quer quebrar e quais são as regras que a gente quer
- 47:37continuar seguindo.
- 47:38SPEAKER_02: Todo o resto eu acho que continua sendo subjetivo.
- 47:40SPEAKER_02: Mas se não tiver o mínimo,
- 47:41a gente pode sofrer de pessoas com mais posição hierárquica ou
- 47:45pessoas com mais
- 47:46SPEAKER_02: influência...
- 47:48SPEAKER_02: social ali com as pessoas vão meio que ditar o que elas preferem e não
- 47:52necessariamente o que é melhor porque a visão de um é simples
- 47:55assim o Galeno foi lá
- 47:56SPEAKER_02: e fez um negócio simples aí eu falo ah não,
- 47:58você tinha que ter usado essas três coisas se ele fosse muito
- 48:01inexperiente ele
- 48:01SPEAKER_02: podia pensar caralho,
- 48:02SPEAKER_02: realmente eu não tô usando as paradas que tem que ser usado
- 48:05SPEAKER_02: E aí ele vai lá e faz o curso de aprender a fazer difícil,
- 48:08SPEAKER_02: achando que tá aprendendo a fazer melhor.
- 48:10SPEAKER_02: E aí, a partir de amanhã, ele passa a fazer isso.
- 48:11Aí quando ele tem mais três anos de experiência,
- 48:13ele faz isso com quem tem um.
- 48:14SPEAKER_02: E aí tem essa cascata de...
- 48:16SPEAKER_02: Ninguém tá realmente discutindo como deveria ser feito,
- 48:18SPEAKER_02: qual é a intenção que o projeto deveria.
- 48:20SPEAKER_02: É meio que vira folclore.
- 48:21SPEAKER_02: Quem tá ali na época, fala qual é a direção, né?
- 48:24SPEAKER_02: E não qual é a direção que o projeto deveria tomar.
- 48:27SPEAKER_02: Eu sempre lembro daquele caso do... Acho que foi contigo, né, Gabriel?
- 48:31SPEAKER_02: O cara falou que senior não...
- 48:34SPEAKER_02: Foi só isso o comentário do cara.
- 48:35SPEAKER_02: Caralho, o que isso quer dizer, meu Deus do céu?
- 48:38SPEAKER_02: É, não lembro o que foi, assim.
- 48:39SPEAKER_02: Era um código JavaScript e o cara só,
- 48:41SPEAKER_02: tipo,
- 48:42SPEAKER_02: botou...
- 48:43SPEAKER_02: Ah,
- 48:44SPEAKER_02: tá,
- 48:44SPEAKER_02: porque tem que chamar as funçãozinhas do JavaScript,
- 48:46SPEAKER_02: né?
- 48:47SPEAKER_02: For it, essas coisas, tá, entendi.
- 48:48SPEAKER_02: Map, tá, entendi.
- 48:50SPEAKER_02: É, é meio dodói da cabeça esse cara.
- 48:51SPEAKER_02: Eu já...
- 48:51SPEAKER_02: Teve um movimento no meio dos anos 2000 que era...
- 48:54SPEAKER_02: Não podia usar if na orientação objeto,
- 48:56SPEAKER_02: era no if,
- 48:56SPEAKER_02: alguma coisa assim.
- 48:57SPEAKER_02: Porque tudo tinha que ser polimórfico.
- 48:59SPEAKER_02: Tudo, tudo, o tempo inteiro, o código...
- 49:00SPEAKER_02: código tinha que ser só reto e o if acontece no runtime.
- 49:04SPEAKER_02: Esse é o problema, né?
- 49:05SPEAKER_02: Imagina se esse cara tem 10 anos de experiência,
- 49:07SPEAKER_02: na época eu tenho 2,
- 49:08SPEAKER_02: ele ia falar e você ia falar,
- 49:08SPEAKER_02: caralho,
- 49:09SPEAKER_02: pode crer,
- 49:09SPEAKER_02: você não quer só fazer o if.
- 49:11SPEAKER_01: Mas e o Elsie, o Elsie, qual que é a opinião de vocês?
- 49:13SPEAKER_01: Usa ou não usa?
- 49:14SPEAKER_01: Opa, caralho.
- 49:18SPEAKER_01: Diz que senior não usa else também, né?
- 49:20SPEAKER_02: É, né?
- 49:21SPEAKER_02: É tudo early return.
- 49:22SPEAKER_02: Eu não sei de onde essas coisas saíram.
- 49:23SPEAKER_02: Do Twitter.
- 49:24SPEAKER_02: Mas eu sou do grupo do early return.
- 49:26SPEAKER_02: Mas acho que a ideia do curso do Alex ali é boa.
- 49:28SPEAKER_02: Aprenda a fazer o difícil.
- 49:30SPEAKER_02: Acho que a gente vai fazer uma mentoria disso.
- 49:32SPEAKER_01: Vamos lançar um curso.
- 49:34SPEAKER_02: Curso da Codecom.
- 49:35SPEAKER_01: Não, a maioria já é assim.
- 49:36SPEAKER_02: Faz um curso de como fazer simples.
- 49:38É.
- 49:38SPEAKER_01: Mas eu ia falar, vocês têm alguma indicação?
- 49:41Eu anotei aqui o artigo que o Alex sugeriu,
- 49:45do G88,
- 49:46sobre os mercadores da complexidade.
- 49:49Eu queria indicar também o artigo do Mineto,
- 49:52que ele passou hoje cedo para a gente,
- 49:53que
- 49:54SPEAKER_01: Ele deu a sugestão desse tema, mas não pôde vir hoje.
- 49:56SPEAKER_01: Que ele fez sobre isso, né?
- 49:59SPEAKER_01: Sobre design, software e complexidade no blog da PicPay.
- 50:02SPEAKER_01: E a gente também fez um no blog da CodeCon lá.
- 50:06SPEAKER_01: Que o título é Complexidade de Código é Ruim.
- 50:08SPEAKER_01: Não sei se vocês têm algum outro livro.
- 50:11SPEAKER_02: Acho que a gente pode desindicar CleanCode, não ler CleanCode.
- 50:16SPEAKER_02: E fugir de algumas coisas.
- 50:18SPEAKER_01: Ou leia, mas interprete, né?
- 50:20SPEAKER_02: É.
- 50:24SPEAKER_01: como produto do seu tempo.
- 50:25SPEAKER_01: É,
- 50:26SPEAKER_01: eu acho que pode ler depois que você for experiente e pensar,
- 50:29SPEAKER_02: ah,
- 50:29SPEAKER_02: isso aqui é legal,
- 50:30SPEAKER_02: eu não tinha pensado nisso antes.
- 50:32SPEAKER_02: Porra, o que é isso?
- 50:32SPEAKER_02: Acho que tem que ter a crítica pra ler, né?
- 50:35SPEAKER_02: Porque se você ler sem a crítica, vira mandamentos, né?
- 50:38SPEAKER_02: Tipo, cada coisa que tá escrita é algo que deve ser feito.
- 50:40SPEAKER_02: Porque lembrando,
- 50:41SPEAKER_02: se tu não tem nenhuma ideia sobre aquilo,
- 50:43SPEAKER_02: a única ideia que existe é a única ideia que tem pra fazer.
- 50:46SPEAKER_02: Eu tenho três livros pra indicar que tem a ver com esse tema.
- 50:48SPEAKER_02: Três livros de Matoque.
- 50:50SPEAKER_02: Um se chama...
- 50:51SPEAKER_02: The Practice of Programming.
- 50:52Eu não sei se tem em português,
- 50:53mas seria tipo como a prática da programação.
- 50:56SPEAKER_02: É um livro do Rob Pike e do Brian Kerrigan.
- 50:59SPEAKER_02: Pra mim, esse livro é o Clean Code antes do Clean Code, tá?
- 51:02SPEAKER_02: Ele fala coisas que o Clean Code tentou falar, mas falou errado.
- 51:05Esse é um bom livro pra quem não quer ler o Clean Code,
- 51:08The Practice of Programming.
- 51:09SPEAKER_02: O outro, que é mais jovem... É o que tem um cachorrinho na capa, assim.
- 51:13SPEAKER_02: Um cachorrinho... É, é, um cachorrinho meio linguiça, é. É ele mesmo.
- 51:16SPEAKER_02: Ah, boa, boa.
- 51:17SPEAKER_02: Não leia esse livro pensando que é pra hoje em dia.
- 51:19SPEAKER_02: Lembra que esse livro foi escrito há 20 anos atrás.
- 51:21SPEAKER_02: Então tem coisa tipo assim... Pô, sabia que dá pra versionar o código?
- 51:24SPEAKER_02: Só pula.
- 51:24SPEAKER_02: Vai pras coisas que tu vê que é atemporal.
- 51:26SPEAKER_02: Não seja dodói pra falar... Ah, o livro é velho.
- 51:29SPEAKER_02: Tá?
- 51:29SPEAKER_02: Boa.
- 51:29SPEAKER_02: Livro mais recente.
- 51:31SPEAKER_02: Tem o do Kent Beck, que se chama Tidy First.
- 51:33SPEAKER_02: Esse livro é bom e ele é super fininho.
- 51:35SPEAKER_02: Não deve ter 80 páginas.
- 51:37SPEAKER_02: É bem de boa de ler.
- 51:38SPEAKER_02: Tem capítulo de duas páginas.
- 51:39SPEAKER_02: Tu pode abrir, ler duas e amanhã ler duas.
- 51:42SPEAKER_02: Aí pra quem é mais hardcore...
- 51:44SPEAKER_02: Vocês lembram que tem um livro que todo mundo fala assim,
- 51:46SPEAKER_02: você tem que ler esse livro,
- 51:47SPEAKER_02: Pragmatic Programming?
- 51:48SPEAKER_02: Então, beleza.
- 51:49SPEAKER_02: Só que esse livro também tem uns 20 ou 30 anos, né?
- 51:51O mesmo autor fez outro livro e o nome do livro é literalmente
- 51:54Simplicity.
- 51:56SPEAKER_02: E ele é desse ano.
- 51:57Então,
- 51:57se alguém quiser ler alguma coisa mais atualizada,
- 51:59eu recomendo esse.
- 52:00E por último,
- 52:00tem uma talk que foi o keynote da GoferCon de 2025,
- 52:05que fui eu que falei.
- 52:06SPEAKER_02: E é literalmente sobre simplicidade,
- 52:07SPEAKER_02: aí eu exploro simplicidade do ponto de vista quais são os elementos,
- 52:11SPEAKER_02: como é que você identifica,
- 52:12por que é importante e quando que você não tem como ficar mais
- 52:16simples do que já
- 52:17SPEAKER_02: está.
- 52:17SPEAKER_02: Aí eu tive que, infelizmente, falar de mim mesmo hoje.
- 52:19SPEAKER_02: Desculpa.
- 52:20SPEAKER_02: Eu acho que para além disso,
- 52:22dá para recomendar ler os PR dos Amiguinho e ver se você
- 52:25aprende alguma coisa com
- 52:26SPEAKER_02: isso.
- 52:26SPEAKER_02: Com esse olhar crítico tentando pensar em simplicidade.
- 52:29SPEAKER_02: E é isso aí.
- 52:31Ah,
- 52:31o Alex falou que ia falar o significado de simples no final do
- 52:35podcast.
- 52:36SPEAKER_01: Ah, é verdade, simplicidade, né?
- 52:37SPEAKER_01: O Alex deixou pro final aí o clickbait.
- 52:40SPEAKER_02: Então, tem uma talk, isso tá lá na Meta Talk, né?
- 52:44Na talk eu falo de outra talk,
- 52:46mas tem uma talk de um cara que se chama George Whitesides.
- 52:51E aí ele fez um TED Talk que se chama Simplicidade Nós
- 52:53Reconhecemos Quando A Vemos.
- 52:55SPEAKER_02: E aí ele falou várias coisas.
- 52:57SPEAKER_02: E aí eu tenho o compilado.
- 52:58SPEAKER_02: O compilado,
- 52:59SPEAKER_02: basicamente,
- 52:59SPEAKER_02: que ele tá dizendo,
- 53:01SPEAKER_02: em uma frase só,
- 53:01SPEAKER_02: depois vocês vão ver com calma,
- 53:02SPEAKER_02: porque tem uma talk pra vocês assistirem.
- 53:04SPEAKER_02: Ele diz o seguinte,
- 53:05SPEAKER_02: simplicidade envolve criar componentes que são,
- 53:07SPEAKER_02: aí tem as características,
- 53:08SPEAKER_02: confiáveis,
- 53:09SPEAKER_02: fáceis de entender,
- 53:11SPEAKER_02: que podem ser combinados ou empilhados,
- 53:13SPEAKER_02: depende de como você quer combinar,
- 53:15SPEAKER_02: para formar outros sistemas.
- 53:17SPEAKER_02: E aí,
- 53:17SPEAKER_02: esses sistemas maiores que você está formando,
- 53:20SPEAKER_02: eles podem ser até mais complexos,
- 53:22SPEAKER_02: mas eles vão ser previsíveis.
- 53:23SPEAKER_02: E aí,
- 53:24SPEAKER_02: uma característica,
- 53:25SPEAKER_02: se fosse falar em uma palavra,
- 53:26SPEAKER_02: assim,
- 53:26SPEAKER_02: para quão simples pode ser,
- 53:28SPEAKER_02: é quão acessível o código é.
- 53:30SPEAKER_01: Bom demais.
- 53:31SPEAKER_01: A gente não pode ir, né?
- 53:32SPEAKER_02: Porra, graças a Deus.
- 53:43SPEAKER_01: Você escutou Escovando Bits, o podcast da Codecom.
- 53:46Siga a Codecom nas redes sociais,
- 53:48assine nossa newsletter e participe dos nossos eventos.
- 53:50SPEAKER_01: Você encontra todos os links no site codecom.dev.
- 53:54SPEAKER_01: Valeu e até a próxima.
- 53:56SPEAKER_03: Falou!
- 53:56SPEAKER_03: Falou!
- 54:04SPEAKER_01: Esse podcast foi editado pela BZT.