Latest / escovando bits podcast / #69 - Desenvolvimento sustentável: Como escrever código que envelhece bem ft. Bruno Rocha
Transcript
- 0:03SPEAKER_02: Assine a Codicom Pro, apoie a Codicom e ganhe vários benefícios.
- 0:17SPEAKER_02: Olá, você está escutando Escovando Beats, o podcast da Codicom.
- 0:23Codicom
- 0:29Eu sou o Gabriel e eu não sei o que falar na introdução desse
- 0:32episódio,
- 0:33desculpa.
- 0:34Aqui é o Alexandre e o meu código é tão reciclável que ele tá
- 0:39indo direto pro Recycle Bin.
- 0:40E eu sou o Bruno Rocha e eu espero que o meu código envelheça
- 0:44melhor do que eu.
- 0:50SPEAKER_02: O cara comendo um Hot Pocket no café da manhã com um Monster.
- 0:56SPEAKER_02: Eu vi um cara que faz isso no Twitter.
- 0:58SPEAKER_02: Ele bota lá.
- 0:59SPEAKER_02: Café da manhã.
- 1:00SPEAKER_02: É um Hot Pocket e um Monster.
- 1:01SPEAKER_02: Esse bicho vai morrer com 35 anos.
- 1:04Esse aí vai ser aquela típica exceção que nem a avó do cara que
- 1:08fumou até os 95 e
- 1:09SPEAKER_01: não morreu de câncer,
- 1:10SPEAKER_01: sabe?
- 1:12SPEAKER_01: Esse cara é a típica exceção da regra.
- 1:13SPEAKER_02: É verdade.
- 1:14SPEAKER_02: O cara trata o código com o maior amor.
- 1:16SPEAKER_02: O computador limpa tudo bonitinho.
- 1:18SPEAKER_02: Vai lá e come isso aí no café da manhã.
- 1:20SPEAKER_02: Não faz nada.
- 1:21SPEAKER_02: E o hardware dele ele não trata bem, né?
- 1:25SPEAKER_02: A gente vai só para o nosso intervalo comercial e já volto.
- 1:31SPEAKER_00: Pergunta sobre arquitetura e engenharia.
- 1:37SPEAKER_00: Só que de software.
- 1:43SPEAKER_02: Neste quadro,
- 1:44trazemos um especialista do ASUS para tirar dúvidas dos devs
- 1:47quando o assunto é
- 1:47SPEAKER_02: arquitetura e engenharia de software.
- 1:50SPEAKER_02: Hoje estamos aqui com a Larissa Martins,
- 1:52SPEAKER_02: Tech Lead,
- 1:53SPEAKER_02: para nos ajudar a sanar as dúvidas que recebemos.
- 1:56SPEAKER_02: Deploy Sem Medo Existe,
- 1:58o que realmente ajuda a ter confiança para colocar uma feature
- 2:01nova em produção?
- 2:02SPEAKER_00: Eu não gostaria exatamente a palavra mesmo.
- 2:04SPEAKER_00: Eu acho que, na verdade, o que acontece mais é a insegurança.
- 2:07SPEAKER_00: E eu acho que é um sentimento super genuíno, né?
- 2:11Principalmente quando a gente ainda tá conhecendo o produto ou
- 2:13tá mexendo em uma
- 2:14SPEAKER_00: parte do sistema que a gente sabe que é muito crítica,
- 2:16SPEAKER_00: né?
- 2:17SPEAKER_00: Eu acredito que o ponto seja que essa insegurança nunca vai sumir 100%.
- 2:20SPEAKER_00: Não sei se isso é bom ou ruim de falar pras pessoas.
- 2:24SPEAKER_00: Mas o que acontece é que a gente vai ganhando confiança, né?
- 2:27SPEAKER_00: Então,
- 2:27SPEAKER_00: com o tempo essa insegurança,
- 2:28SPEAKER_00: ela vai diminuindo e vai se tornando um pouco mais confiança.
- 2:32SPEAKER_00: E tem algumas coisas que ajudam a gente, né?
- 2:34SPEAKER_00: Algumas práticas que ajudam a gente a ganhar confiança.
- 2:37SPEAKER_00: Uma delas é a questão dos testes, né?
- 2:40Então,
- 2:40quando a gente tem uma suite de testes bem preparada ali,
- 2:43que tem uma cobertura boa...
- 2:45SPEAKER_00: A gente sente uma segurança um pouco maior,
- 2:47porque a gente tem certeza que o nosso código passou ali por
- 2:49toda aquela suite e
- 2:51SPEAKER_00: tem um aval ali da suite que deu boa,
- 2:54SPEAKER_00: né,
- 2:54SPEAKER_00: que a chance de dar problema em produção é menor.
- 2:58SPEAKER_00: E também tem uma observabilidade boa,
- 3:00SPEAKER_00: né,
- 3:00SPEAKER_00: então eu ter monitores,
- 3:02SPEAKER_00: ter logs que me ajudam a entender ali a saúde do sistema.
- 3:06SPEAKER_00: que vão me trazer essa segurança que,
- 3:08SPEAKER_00: não que necessariamente não vá quebrar,
- 3:10SPEAKER_00: mas se quebrar,
- 3:11SPEAKER_00: eu vou ter esse retorno de uma forma mais rápida ali,
- 3:13SPEAKER_00: vão impactar bem menos o usuário.
- 3:16Então a gente consegue criar essas blindagens ali pra aumentar
- 3:19a nossa confiança.
- 3:20SPEAKER_00: Música
- 3:31O Perguntas de Engenharia e Arquitetura Socket Software é
- 3:34patrocinado pelo ASUS.
- 3:35Acesse o link na descrição do episódio para saber mais sobre as
- 3:38vagas disponíveis
- 3:39SPEAKER_02: para a área de engenharia de software.
- 3:48SPEAKER_02: E já estamos de volta, hoje a gente tá aqui com o Bruno Rocha, né?
- 3:52SPEAKER_02: Bruno, a gente tava conversando aqui, tu tá 10 anos na Red Hat, né?
- 3:56SPEAKER_02: Quer contar quem tu é também, pessoal que não te conhece?
- 3:58Sim,
- 3:59então,
- 3:59eu tô 10 anos na Red Hat,
- 4:01já passei por alguns times e projetos diferentes...
- 4:05SPEAKER_02: Hoje eu sou principal engineer no Ansible,
- 4:08SPEAKER_02: né,
- 4:08SPEAKER_02: Ansible é uma plataforma de automação,
- 4:10SPEAKER_02: então eu tenho uma plataforma web e uma estrutura de sistema distribuído,
- 4:16SPEAKER_02: a gente trabalha muito com eventos e essas coisas,
- 4:18SPEAKER_02: então eu trabalho mais na parte de arquitetura,
- 4:21SPEAKER_02: né,
- 4:21SPEAKER_02: para esse...
- 4:22SPEAKER_02: para esse sistema.
- 4:23É uma equipe grande,
- 4:24a gente tem 180 e poucos devs trabalhando só no Ansible,
- 4:29né?
- 4:30SPEAKER_02: E no restante da Red Hat são mais de 19 mil trabalhando na companhia.
- 4:36SPEAKER_02: E na Red Hat já passei pelos times de qualidade de software,
- 4:38SPEAKER_02: foi uma das áreas que eu trabalhei por mais tempo,
- 4:41SPEAKER_02: antes de vir para trabalhar na parte de arquitetura e engenharia.
- 4:44SPEAKER_02: E é isso,
- 4:44SPEAKER_02: eu tô trabalhando com open source,
- 4:46SPEAKER_02: software livre,
- 4:47SPEAKER_02: Linux,
- 4:48SPEAKER_02: desde ali do comecinho dos anos 2000,
- 4:50SPEAKER_02: e é isso que eu gosto de fazer,
- 4:52SPEAKER_02: né?
- 4:52SPEAKER_02: Até brinco que é meio que uma,
- 4:54SPEAKER_02: é tipo,
- 4:56SPEAKER_02: é quase que um...
- 4:57SPEAKER_02: Eu tava até tentando fazer um diagnóstico esses dias,
- 5:00SPEAKER_02: né?
- 5:00SPEAKER_02: Eu vi lá que tem uma galera que é assim,
- 5:02SPEAKER_02: tipo,
- 5:02SPEAKER_02: tem gente que é viciado em ficar jogando jogo,
- 5:05SPEAKER_02: videogame,
- 5:06SPEAKER_02: eu sou meio que maluco,
- 5:07SPEAKER_02: viciado de ficar fuçando em computador,
- 5:09SPEAKER_02: né?
- 5:09SPEAKER_02: Então...
- 5:10Me dá um terminal no Linux e umas coisas pra eu configurar que
- 5:13eu já fico feliz,
- 5:14sabe?
- 5:14SPEAKER_02: Eu já me divirto só fuçando e selecionando coisa e vendo se quebra.
- 5:19SPEAKER_02: E tive a felicidade de transformar isso em profissão, né?
- 5:23SPEAKER_02: Então é isso aí.
- 5:23SPEAKER_01: Quebrador de código profissional.
- 5:25SPEAKER_01: Cara, pessoas normais têm que gostar de fazer isso, cara.
- 5:28SPEAKER_01: Quem não gosta é que é anormal, entendeu?
- 5:30SPEAKER_01: Deixa eu fazer uma pergunta aleatória porque eu sou o saudosista aqui.
- 5:33SPEAKER_01: Quantos fees listo já foi?
- 5:34SPEAKER_02: Ah, no Fizzle eu fui seis.
- 5:37SPEAKER_02: Muito bom.
- 5:37SPEAKER_01: Eu espero que você sinta a mesma saudade que eu, daquele evento, cara.
- 5:41SPEAKER_01: Eu falo pro Gabriel, ele tem que fazer a Codecom Open Source agora.
- 5:44SPEAKER_01: Só pra gente reviver as chamas do Fizzle no Brasil.
- 5:47SPEAKER_02: Cara,
- 5:48SPEAKER_02: eu acho que,
- 5:48SPEAKER_02: eu não sei,
- 5:49SPEAKER_02: eu acho que isso é muito o reflexo,
- 5:51SPEAKER_02: assim,
- 5:51SPEAKER_02: de como a indústria,
- 5:52SPEAKER_02: né?
- 5:53SPEAKER_02: Eu acho que a gente passou por uma fase onde Open Source,
- 5:56SPEAKER_02: Free Software,
- 5:56SPEAKER_02: era uma coisa que tinha uma magia,
- 5:58SPEAKER_02: um negócio diferente,
- 5:59SPEAKER_02: especial,
- 5:59SPEAKER_02: assim,
- 5:59SPEAKER_02: né?
- 6:00SPEAKER_02: Hoje em dia, a gente tá numa outra fase.
- 6:02SPEAKER_02: Esses eventos estão acontecendo, mas com outra cara, né?
- 6:04SPEAKER_02: Mas eu acho que ia ser legal ter algo.
- 6:06SPEAKER_01: É que meio que o open source virou normal também, né?
- 6:09SPEAKER_01: Ficou muito mais normal, não é mais algo outsider assim, né?
- 6:12SPEAKER_01: Virou tipo, é o que há, né?
- 6:13SPEAKER_02: É, é o default, né?
- 6:15Tipo,
- 6:15eu lembro que na época dos primeiros fiz,
- 6:17tipo,
- 6:17era muito impressionante.
- 6:18SPEAKER_02: Você fala assim,
- 6:19SPEAKER_02: nossa,
- 6:19SPEAKER_02: tem um software aqui que funciona,
- 6:21SPEAKER_02: é muito parecido com aquele lá que é proprietário,
- 6:24SPEAKER_02: que coisa maravilhosa.
- 6:25SPEAKER_02: Hoje em dia é o contrário, né?
- 6:26SPEAKER_02: Quando a gente vê um software, a gente já assume.
- 6:28SPEAKER_02: Não, isso aí deve ter coisa open source no meio.
- 6:30SPEAKER_02: Então ficou meio que mais o comum,
- 6:32SPEAKER_02: mas a nostalgia é muito grande,
- 6:34SPEAKER_02: até porque era uma coisa,
- 6:36SPEAKER_02: eu não sei explicar,
- 6:36SPEAKER_02: não sei encontrar palavras,
- 6:39SPEAKER_02: o movimento de software livre,
- 6:41SPEAKER_02: open source há 15 anos atrás,
- 6:44SPEAKER_02: 15,
- 6:45SPEAKER_02: 20 anos atrás,
- 6:45SPEAKER_02: era um negócio muito louco,
- 6:48SPEAKER_02: dá saudade.
- 6:49SPEAKER_02: Então,
- 6:50SPEAKER_02: o tema do episódio de hoje,
- 6:52SPEAKER_02: se você tá lavando a louça aí ou dirigindo e não conseguiu ler,
- 6:57SPEAKER_02: é desenvolvimento sustentável,
- 6:58SPEAKER_02: como escrever código que envelhece bem.
- 7:00SPEAKER_02: Até por isso que a gente fez essas brincadeiras ali no começo.
- 7:03SPEAKER_02: E quando a gente tava planejando esse episódio,
- 7:05SPEAKER_02: o Alexandre sugeriu,
- 7:06SPEAKER_02: cara,
- 7:07eu acho que a gente tem que trazer uma pessoa que escreve
- 7:09código que precisa
- 7:10SPEAKER_02: funcionar por muito tempo,
- 7:12SPEAKER_02: assim.
- 7:12SPEAKER_02: Tipo,
- 7:12alguém que trabalha com open source ou trabalha num Linux ou
- 7:16trabalha em alguma
- 7:17SPEAKER_02: coisa,
- 7:17SPEAKER_02: daí eu lembrei do Bruno.
- 7:18Eu não sei se tu chegou a trabalhar já em código que foi pra
- 7:23versões de Linux que a
- 7:24SPEAKER_02: Red Hat fez,
- 7:25SPEAKER_02: alguma coisa assim.
- 7:26SPEAKER_02: Sim, né?
- 7:27SPEAKER_02: Sim, sim.
- 7:28SPEAKER_02: Eu trabalhei no time de qualidade, né?
- 7:30SPEAKER_02: Então...
- 7:31SPEAKER_02: Assim,
- 7:31SPEAKER_02: quando eu trabalhei no time de qualidade,
- 7:33eu não atuava diretamente escrevendo o código que ia para o
- 7:36Linux ou para os
- 7:37SPEAKER_02: sistemas todos,
- 7:39SPEAKER_02: mas a gente testava e validava todo o fluxo de entrega e tudo mais desses
- 7:43SPEAKER_02: softwares.
- 7:44SPEAKER_02: Então, de algum jeito tem ali essa parte, né?
- 7:47SPEAKER_02: Mas eu escrevi uma biblioteca em Python antes de eu entrar na Red Hat,
- 7:51SPEAKER_02: que é um projeto open source,
- 7:52SPEAKER_02: chama-se Dynaconf.
- 7:54E o Dynaconf hoje está dentro do top 1% das bibliotecas mais
- 7:58usadas no ecossistema Python.
- 8:00SPEAKER_02: Então é uma biblioteca de configuração que a galera usa geral.
- 8:03SPEAKER_02: Então esse código está rodando em muita coisa que usa Python.
- 8:08SPEAKER_02: E é engraçado,
- 8:09SPEAKER_02: às vezes eu nem imagino alguém vai lá,
- 8:11SPEAKER_02: abre uma issue e fala assim,
- 8:12SPEAKER_02: olha,
- 8:12SPEAKER_02: eu vou olhar,
- 8:13SPEAKER_02: a pessoa trabalha,
- 8:14SPEAKER_02: sei lá,
- 8:15SPEAKER_02: na OpenAI.
- 8:15SPEAKER_02: Eu falo, olha, os caras estão usando.
- 8:17SPEAKER_02: Para confilar internamente nas APIs de...
- 8:20SPEAKER_02: E assim,
- 8:21SPEAKER_02: em agosto agora,
- 8:21SPEAKER_02: a Lib fez...
- 8:23SPEAKER_02: A Lib fez 10 anos em agosto,
- 8:25SPEAKER_02: né?
- 8:26SPEAKER_02: Então,
- 8:26eu comecei a fazer esse projeto um pouquinho antes de eu entrar
- 8:30na Red Hat,
- 8:30SPEAKER_02: em outra empresa que eu trabalhava antes.
- 8:33SPEAKER_02: E é um projeto open source que tem evoluído,
- 8:35SPEAKER_02: assim,
- 8:35SPEAKER_02: com contribuição da galera na comunidade e...
- 8:39SPEAKER_01: Cara,
- 8:39SPEAKER_01: engraçado,
- 8:39eu já usei a da Anacomf e não tinha a mínima ideia que era você
- 8:42que tinha iniciado
- 8:43SPEAKER_01: o projeto.
- 8:44SPEAKER_01: Legal.
- 8:45SPEAKER_01: Deixa eu fazer uma pergunta.
- 8:46SPEAKER_01: A Red Hat é uma empresa que,
- 8:48SPEAKER_01: assim,
- 8:49SPEAKER_01: todo mundo que é do mundo open source,
- 8:51SPEAKER_01: todo mundo de TI conhece a Red Hat,
- 8:53SPEAKER_01: né?
- 8:53Mas acho que ela não é uma empresa mainstream,
- 8:55assim,
- 8:56no sentido como a Oracle talvez seja,
- 8:58né?
- 8:58SPEAKER_01: De que está em todos os lugares, tem propaganda, sei lá...
- 9:02SPEAKER_01: em grandes eventos e tal.
- 9:05SPEAKER_01: Mas,
- 9:05SPEAKER_01: em compensação,
- 9:06a Red Hat também é uma empresa que é muito conhecida por fazer
- 9:08software estável.
- 9:10SPEAKER_01: Então,
- 9:11SPEAKER_01: a gente tem desde o sistema operacional até outros produtos que têm essa
- 9:17SPEAKER_01: preocupação de serem produtos que sejam longevos e estáveis.
- 9:21SPEAKER_01: Pensando nesses grandes sistemas,
- 9:22SPEAKER_01: tu falou que trabalhou no time de qualidade e tal,
- 9:25SPEAKER_01: essa preocupação é uma preocupação que vem
- 9:27SPEAKER_01: desde o dev lá dentro e passa por todo o time,
- 9:30SPEAKER_01: ela é uma coisa que é top-down e tem que fazer e pronto,
- 9:34SPEAKER_01: como é que é essa cultura,
- 9:35SPEAKER_01: começando talvez especificamente pela Red Hat?
- 9:38SPEAKER_02: Olha,
- 9:38SPEAKER_02: eu acho que isso tem a ver com um negócio,
- 9:40SPEAKER_02: um modelo de negócio da Red Hat,
- 9:42SPEAKER_02: porque a Red Hat trabalha com open source,
- 9:44SPEAKER_02: a missão da Red Hat é fomentar as comunidades,
- 9:47SPEAKER_02: né,
- 9:47SPEAKER_02: fazer com que o desenvolvimento aconteça no upstream,
- 9:50SPEAKER_02: né,
- 9:50SPEAKER_02: ajudar o upstream a inovar,
- 9:53SPEAKER_02: né,
- 9:53SPEAKER_02: então a gente tem aí,
- 9:54SPEAKER_02: por exemplo,
- 9:55SPEAKER_02: o Fedora Linux,
- 9:56SPEAKER_02: a gente tem a parte do Ansible,
- 9:59SPEAKER_02: que é toda open source,
- 10:00SPEAKER_02: está toda lá no GitHub,
- 10:02SPEAKER_02: a parte do Kubernetes,
- 10:03SPEAKER_02: né,
- 10:03que a Red Hat é uma das empresas aí que fez parte das
- 10:06definições do que é hoje o
- 10:08SPEAKER_02: Kubernetes,
- 10:08SPEAKER_02: né,
- 10:08E aí,
- 10:09por outro lado,
- 10:09o modelo de negócio da Red Hat é produtizar essas plataformas.
- 10:13Então,
- 10:14a gente pega o que é upstream e transforma no que a gente chama
- 10:16de downstream.
- 10:17SPEAKER_02: E o downstream, ele é uma versão enterprise daquilo que já é livre.
- 10:22Aí você pensa,
- 10:23como é que você vai convencer alguém a pagar você por uma coisa
- 10:26que já é livre?
- 10:27SPEAKER_02: Então aí que está o diferencial?
- 10:29SPEAKER_02: O diferencial é justamente fazer com que aquilo envelheça bem,
- 10:32fazer com que aquilo entregue um pouco mais de resiliência e de
- 10:36garantias para quem
- 10:37SPEAKER_02: está pagando.
- 10:38SPEAKER_02: Então como é um sistema baseado em subscrição,
- 10:41SPEAKER_02: o pagante,
- 10:42SPEAKER_02: a empresa que decide contratar Red Hat pagar por uma subscrição,
- 10:46O que ela está comprando não é o software,
- 10:47ela poderia simplesmente baixar e instalar.
- 10:49SPEAKER_02: O que ela está comprando é o fato da gente testar,
- 10:52SPEAKER_02: então tem até o tried,
- 10:56SPEAKER_02: tested and trusted,
- 10:57SPEAKER_02: que é o nosso três T's.
- 10:59SPEAKER_02: Então a gente usa o software,
- 11:01SPEAKER_02: a gente melhora,
- 11:02a gente fomenta a comunidade para que aquilo se desenvolva e
- 11:06mantenha-se a...
- 11:08SPEAKER_02: atualizado, né?
- 11:09SPEAKER_02: Mantenha-se sem ficar defasado.
- 11:12SPEAKER_02: A gente testa aquilo muito, né?
- 11:15SPEAKER_02: Então,
- 11:15SPEAKER_02: os testes são feitos em todos os níveis,
- 11:17SPEAKER_02: desde o teste ali de ter que usar em hardware diferente,
- 11:21SPEAKER_02: dependendo do que você estiver trabalhando.
- 11:23SPEAKER_02: E o trusted é porque a gente fornece contratos, né?
- 11:26SPEAKER_02: De suporte,
- 11:27SPEAKER_02: onde os clientes têm ali SLA,
- 11:29SPEAKER_02: equipe de suporte,
- 11:30SPEAKER_02: equipe especializada para responder a incidentes,
- 11:32SPEAKER_02: disaster recovery,
- 11:33SPEAKER_02: esse tipo de coisa.
- 11:34SPEAKER_02: Então,
- 11:35SPEAKER_02: Toda a estrutura é baseada em pensar que o software tem que ser estável,
- 11:39SPEAKER_02: porque tem que ser estável.
- 11:40SPEAKER_02: Se ele não for estável,
- 11:41SPEAKER_02: das duas uma,
- 11:42SPEAKER_02: ou a gente perde o trusted,
- 11:44SPEAKER_02: ou a gente tem que arcar com o custo que aquilo vai dar,
- 11:48SPEAKER_02: porque é o que a gente está vendendo.
- 11:49SPEAKER_02: Então, para minimizar esse custo, quanto mais estável, melhor.
- 11:52SPEAKER_02: Então,
- 11:52SPEAKER_02: é uma preocupação que vem já como,
- 11:54SPEAKER_02: não só como cultura,
- 11:56SPEAKER_02: mas como parte do modelo de negócio.
- 11:58O que faz o drive do business em si é que o software tem que
- 12:01ser estável e confiável.
- 12:06SPEAKER_02: O que tu acha que define um código que envelhece bem?
- 12:09SPEAKER_02: Ele é a mesma coisa que ser código limpo, sei lá, algo assim?
- 12:13SPEAKER_02: Ah, agora a gente pode entrar em polêmica, né?
- 12:15SPEAKER_02: A polêmica do Clean Code.
- 12:18SPEAKER_02: Bom, eu pessoalmente não sou um grande fã do Clean Code, né?
- 12:22SPEAKER_02: Já li duas vezes o livro.
- 12:23SPEAKER_02: O livro e todas as coisas em volta dele.
- 12:25SPEAKER_02: Eu acho excelente como um guia de referência e de sugestões, né?
- 12:30SPEAKER_02: Mas acho que o que tá ali, né?
- 12:32SPEAKER_02: Só pra fazer esse adendo.
- 12:33SPEAKER_02: Não é para ser seguido a risca porque tem outras variáveis, né?
- 12:36SPEAKER_02: Então não é simples, né?
- 12:38Acho que essa receita não é simples de você simplesmente chegar
- 12:40e falar assim,
- 12:41SPEAKER_02: olha,
- 12:41SPEAKER_02: escreva código limpo,
- 12:42SPEAKER_02: escreva código seguindo solid e essas receitas todas.
- 12:47SPEAKER_02: Eu acho que você tem que saber usar essas ferramentas,
- 12:50SPEAKER_02: esses frameworks,
- 12:51essas técnicas e encaixar elas dentro do principal que é o seu
- 12:55objetivo de
- 12:56SPEAKER_02: business,
- 12:57SPEAKER_02: né?
- 12:57SPEAKER_02: Então nem sempre a empresa que está desenvolvendo, ela quer...
- 13:01SPEAKER_02: quer pagar pelo clean, entendeu?
- 13:02SPEAKER_02: Porque fazer clean code, ele tem custo, entendeu?
- 13:05SPEAKER_02: Fazer software altamente testado é custo, né?
- 13:08SPEAKER_02: Fazer isso.
- 13:09SPEAKER_02: Então, uma coisa tem que balancear na outra.
- 13:11SPEAKER_02: Então,
- 13:11eu acho que o que define hoje o software que envelhece bem é
- 13:14ele ser um software
- 13:16SPEAKER_02: que entrega,
- 13:17SPEAKER_02: primeiro,
- 13:17SPEAKER_02: o que ele precisa entregar,
- 13:18SPEAKER_02: né?
- 13:19Não adianta o software que é mais lindo,
- 13:21que segue todas as boas práticas...
- 13:25e simplesmente não atingir o objetivo,
- 13:28é meio que um desperdício,
- 13:29talvez.
- 13:30SPEAKER_02: Eu já vi muito isso acontecer,
- 13:31SPEAKER_02: aquela coisa assim,
- 13:32SPEAKER_02: tipo,
- 13:32SPEAKER_02: nossa,
- 13:33SPEAKER_02: esse software é lindo,
- 13:33SPEAKER_02: mas ninguém usa,
- 13:34SPEAKER_02: né?
- 13:35SPEAKER_02: Tem um meme que a gente fez na Codecom,
- 13:38SPEAKER_02: um cara com uma colher gigantesca,
- 13:39SPEAKER_02: assim,
- 13:40SPEAKER_02: comendo sucrilhos,
- 13:41SPEAKER_02: e daí a colher estava escrita assim,
- 13:43SPEAKER_02: tipo,
- 13:43SPEAKER_02: ah,
- 13:43SPEAKER_02: microserviços,
- 13:45SPEAKER_02: sei lá,
- 13:46SPEAKER_02: todas essas paradas e,
- 13:47SPEAKER_02: tipo,
- 13:47SPEAKER_02: o seu software com zero usuário.
- 13:50SPEAKER_02: Exato.
- 13:51SPEAKER_02: Aqui é aquela ferramentinha que você faz com muito preciosismo,
- 13:54SPEAKER_02: seguindo todas as regras e tudo mais,
- 13:56SPEAKER_02: e no fim tem um usuário e é você mesmo,
- 13:58SPEAKER_02: o usuário,
- 13:58SPEAKER_02: sabe?
- 14:00SPEAKER_02: Mas eu acho que assim,
- 14:01SPEAKER_02: pensando em código que,
- 14:02SPEAKER_02: digamos assim,
- 14:03SPEAKER_02: que envelhece bem e que,
- 14:06SPEAKER_02: basicamente,
- 14:07SPEAKER_02: vamos definir o que é envelhecer bem.
- 14:08SPEAKER_02: O que é um código que envelhece bem?
- 14:10SPEAKER_02: Na minha opinião,
- 14:11SPEAKER_02: acho que é um código que,
- 14:13SPEAKER_02: no futuro,
- 14:14ele vai causar menos prejuízo e ele vai conseguir responder à
- 14:18mudança de escopo.
- 14:19SPEAKER_02: Porque o que a gente definiu hoje,
- 14:21SPEAKER_02: daqui a cinco anos,
- 14:22SPEAKER_02: provavelmente,
- 14:23SPEAKER_02: a não ser que você esteja numa indústria muito estável,
- 14:26SPEAKER_02: digamos assim,
- 14:26SPEAKER_02: que você está trabalhando lá,
- 14:28SPEAKER_02: Existem algumas indústrias que não mudam há 30 anos, né?
- 14:31SPEAKER_02: Então não tem muito o que inovar.
- 14:32SPEAKER_02: Você falar a palavra inovação, né?
- 14:34Dependendo do banco que você tiver,
- 14:35os caras vão até falar,
- 14:36tira essa pessoa da sala,
- 14:37entendeu?
- 14:41SPEAKER_02: Inovar é muito complicado.
- 14:42SPEAKER_02: Mas na indústria de software,
- 14:44SPEAKER_02: de um modo geral,
- 14:45SPEAKER_02: a gente...
- 14:46SPEAKER_02: 5 anos é um tempo assim que,
- 14:47SPEAKER_02: meu,
- 14:48SPEAKER_02: às vezes faz o pivô de todo o modelo de negócio de uma empresa.
- 14:53E se você fizer um software que não responde bem a essas
- 14:56mudanças de escopo,
- 14:57SPEAKER_02: de objetivo,
- 14:58SPEAKER_02: eu acho que você está fazendo um software que não envelhece bem.
- 15:01SPEAKER_02: Ele pode ser lindo.
- 15:02SPEAKER_02: Então eu acho que não é só questão de qualidade.
- 15:03Eu acho que você pode ter lá aquela coisa maravilhosa feita na
- 15:07melhor linguagem
- 15:07SPEAKER_02: possível,
- 15:08SPEAKER_02: seguindo todos os preceitos e documentações e tudo mais,
- 15:11SPEAKER_02: só que chega ali no segundo tempo onde vem um requisito de negócio,
- 15:17SPEAKER_02: onde olha,
- 15:17SPEAKER_02: agora a gente vai ter que ir para esse outro caminho.
- 15:19SPEAKER_02: e simplesmente o software é o problema, o código é o problema.
- 15:24Eu lembro que eu até fiz aqui a palestra de AI no Meetup da
- 15:27Codecom e o meu título
- 15:29SPEAKER_02: era lá que o código é o problema sempre foi o problema,
- 15:32SPEAKER_02: não é a solução.
- 15:33E nesse caso,
- 15:33o software lindo acaba sendo o problema,
- 15:35porque você ingesta o seu produto.
- 15:39SPEAKER_02: Assim,
- 15:39SPEAKER_02: olha,
- 15:39SPEAKER_02: tudo bem,
- 15:40SPEAKER_02: a gente quer ir para esse caminho,
- 15:41SPEAKER_02: mas não pode,
- 15:42SPEAKER_02: porque é impossível colocar isso naquele software,
- 15:44SPEAKER_02: porque as validações que ele tem não deixam a gente fazer tal coisa.
- 15:48SPEAKER_02: Aí você tem que começar a criar um monte de coisa extra,
- 15:51SPEAKER_02: sair do meio do caminho,
- 15:52SPEAKER_02: criar custo,
- 15:53SPEAKER_02: pendurar coisas em volta,
- 15:54SPEAKER_02: porque aquele software é tão bom,
- 15:56mas de tão bom ele é tão engessado que ele não permite que o
- 16:01produto evolua.
- 16:02Então eu acho que daria para a gente pensar,
- 16:04para resolver essa questão específica,
- 16:07É que a gente tem que pensar em formas de que o nosso código
- 16:12não seja barreira.
- 16:14Eu estou tentando achar uma palavra para exemplificar isso,
- 16:18mas substituível.
- 16:20A gente tem que pensar em código como algo substituível,
- 16:23é isso,
- 16:23não ter esse apego.
- 16:24SPEAKER_02: Mas tipo,
- 16:26SPEAKER_02: eu já ouvi várias pessoas falando sobre isso,
- 16:28SPEAKER_02: de tipo,
- 16:28SPEAKER_02: quando tu vai programar uma parada,
- 16:31SPEAKER_02: tu não pode ficar tentando prever muito o futuro,
- 16:34SPEAKER_02: assim,
- 16:34SPEAKER_02: né?
- 16:35SPEAKER_02: Tu não pode... Mas ao mesmo tempo é tão confuso fazer isso, né?
- 16:39SPEAKER_02: Porque tipo, putz...
- 16:40SPEAKER_02: Sei lá, eu vou criar um novo model lá, um novo service.
- 16:45Como que eu vou,
- 16:46tipo,
- 16:46pensar que ele pode ser substituído no futuro,
- 16:49assim?
- 16:49SPEAKER_02: Como que eu... Sei lá, como tem essa visão, sabe?
- 16:52SPEAKER_02: Não sei se tu consegue explicar isso.
- 16:54SPEAKER_02: Porque pra mim é muito confuso pensar nisso, entendeu?
- 16:57SPEAKER_02: Tipo, putz, eu preciso pensar num código que ele pode ser substituível.
- 17:00SPEAKER_02: Eu acho que aí,
- 17:01SPEAKER_02: nesse caso,
- 17:01SPEAKER_02: para a gente evitar um pouco desse esforço que é pensar muito,
- 17:06eu acho que a gente pode ser um pouco mais conservador e se
- 17:10apegar a padrões bem
- 17:11SPEAKER_02: estabelecidos.
- 17:12Então,
- 17:12por exemplo,
- 17:13se você estiver desenvolvendo um site,
- 17:15um sistema de e-commerce,
- 17:16sei lá,
- 17:17E você sabe que hoje a sua funcionalidade principal é ter ali
- 17:20uma vitrine de
- 17:21SPEAKER_02: produtos,
- 17:22SPEAKER_02: aonde tem filtros e tudo mais,
- 17:24SPEAKER_02: só que você não sabe no futuro o que vão querer fazer,
- 17:26SPEAKER_02: qual a integração que vão querer fazer com outros sistemas.
- 17:29SPEAKER_02: Então, o que você tem que fazer?
- 17:30SPEAKER_02: Primeiro, se apegar a padrões.
- 17:32SPEAKER_02: Então, existem padrões de projetos
- 17:35E talvez hoje eles não façam nenhum sentido para o seu sistema,
- 17:39eles não falem nada,
- 17:40entendeu?
- 17:41SPEAKER_02: Mas se você se aderir a esses padrões,
- 17:43você vai estar deixando aquela abertura para o futuro sem ter
- 17:47que necessariamente
- 17:48SPEAKER_02: se preocupar com o futuro.
- 17:49Então evitar o autocoplamento pode parecer uma besteira logo de
- 17:54início,
- 17:55né?
- 17:55Tipo,
- 17:55olha,
- 17:55por que eu já não coloco minha funcionalidade toda aqui mesmo,
- 17:58né?
- 17:58SPEAKER_02: Dentro desse...
- 18:00desse módulo do sistema e no futuro,
- 18:02se quiser,
- 18:02eu faço copy,
- 18:03paste,
- 18:03removo daqui.
- 18:04SPEAKER_02: Não,
- 18:04já existem padrões bem estabelecidos que não custam a gente
- 18:08implementar de fazer
- 18:10SPEAKER_02: uma arquitetura um pouco mais componível,
- 18:13SPEAKER_02: né?
- 18:14SPEAKER_02: Eu ia perguntar mais uma coisa sobre esse dos padrões.
- 18:17SPEAKER_02: Se tu tem dicas,
- 18:18SPEAKER_02: sei lá,
- 18:18SPEAKER_02: de três padrões que tu acha que são,
- 18:21SPEAKER_02: tipo,
- 18:22SPEAKER_02: obrigatórios,
- 18:22SPEAKER_02: assim,
- 18:23SPEAKER_02: tu usar sempre.
- 18:24SPEAKER_02: Tá, eu acho, assim, que...
- 18:26SPEAKER_02: Quando a gente entra nesse lance dos padrões, tem várias questões.
- 18:30SPEAKER_02: Se você pega aquele livro de padrões de projeto lá do Gang of War,
- 18:33SPEAKER_02: o clássico,
- 18:34SPEAKER_02: aquilo muito se aplica para Java,
- 18:38SPEAKER_02: para um cenário muito específico.
- 18:40SPEAKER_02: Hoje em dia, nem tudo ali faz sentido.
- 18:42Eu costumo falar bastante disso porque eu trabalho muito com
- 18:45Python e pelo menos
- 18:46SPEAKER_02: metade dos padrões de projeto não se aplicam a Python.
- 18:49SPEAKER_02: Por quê?
- 18:50Porque Python é uma linguagem que já tem alguns padrões já
- 18:53intrínsecos na própria
- 18:54linguagem e outros simplesmente não fazem sentido por ser uma
- 18:57linguagem dinâmica,
- 18:59SPEAKER_02: uma linguagem que tem duct typing,
- 19:00SPEAKER_02: essas coisas assim.
- 19:01SPEAKER_02: Então,
- 19:01SPEAKER_02: eu acho que quando eu falo em padrões,
- 19:04eu não estou nem falando tanto desses padrões de projeto que
- 19:08fazem com que a gente
- 19:09SPEAKER_02: fique meio pedante na hora que a gente olha para uma classe,
- 19:12SPEAKER_02: para um objeto e fique pensando não,
- 19:14SPEAKER_02: mas isso aqui não está seguindo o padrão observer,
- 19:16SPEAKER_02: o padrão isso,
- 19:17SPEAKER_02: o padrão aquilo.
- 19:18O que eu estou falando é a gente se apegar mais a protocolos
- 19:21que vão permitir que o
- 19:22SPEAKER_02: nosso sistema,
- 19:23SPEAKER_02: aquilo que a gente desenvolve,
- 19:25SPEAKER_02: consiga ser composto com outras coisas.
- 19:27SPEAKER_02: Então,
- 19:28SPEAKER_02: para dar um exemplo mais simples,
- 19:30SPEAKER_02: dependendo do sistema que você está fazendo,
- 19:33SPEAKER_02: você pode já começar com uma arquitetura de plugins.
- 19:35SPEAKER_02: mesmo que você não tenha plugins.
- 19:37SPEAKER_02: Então,
- 19:37SPEAKER_02: a funcionalidade que você mesmo está desenvolvendo,
- 19:40você já pode criar ela para falar com o core do seu próprio
- 19:44sistema usando uma
- 19:44SPEAKER_02: arquitetura de plugins.
- 19:45SPEAKER_02: Alguns anos atrás,
- 19:46SPEAKER_02: eu diria que isso era loucura,
- 19:48SPEAKER_02: porque você vai estar pagando o preço de estar fazendo essa integração,
- 19:52SPEAKER_02: você tem mais um ponto de falha.
- 19:53SPEAKER_02: Mas hoje em dia,
- 19:54SPEAKER_02: para qualquer tecnologia que você pegar,
- 19:56SPEAKER_02: seja ela framework,
- 19:58SPEAKER_02: runtime,
- 19:59SPEAKER_02: plataforma,
- 20:00SPEAKER_02: você já tem muito bem estabelecidos sistemas que
- 20:03SPEAKER_02: muito bons,
- 20:04SPEAKER_02: que inclusive vão ajudar você a guiar a sua própria definição da sua
- 20:08SPEAKER_02: funcionalidade,
- 20:09SPEAKER_02: porque eles já trabalham muito bem com esse sistema de plugins.
- 20:12Então,
- 20:13se você se apegar a um padrão de plugin,
- 20:15você pode desenvolver hoje e jogar fora amanhã.
- 20:18SPEAKER_02: Você pode fazer estratégias de feature flagging,
- 20:21onde você vai entregar parte do seu deployment rodando uma
- 20:25versão de um plugin em
- 20:26SPEAKER_02: parte.
- 20:26SPEAKER_02: Então, você abre possibilidades para outras coisas.
- 20:29SPEAKER_02: Então, esse tipo de padrão
- 20:32SPEAKER_02: Eu não sei se eu acharia um nome muito científico,
- 20:34SPEAKER_02: técnico para ele,
- 20:35SPEAKER_02: mas é deixar o seu código um pouco mais fácil de compor.
- 20:38E dos princípios de solid,
- 20:41você criar código que seja facilmente substituível.
- 20:44Então essa é uma das dicas que eu procuro seguir e que ela não
- 20:47exige aquele
- 20:49SPEAKER_02: pensamento científico muito aprofundado.
- 20:51SPEAKER_02: E que basta você pensar assim,
- 20:53SPEAKER_02: olha,
- 20:53SPEAKER_02: eu acabei de escrever aqui uma função,
- 20:55SPEAKER_02: uma classe,
- 20:55SPEAKER_02: um módulo,
- 20:56SPEAKER_02: seja o que for.
- 20:56O quão difícil é se eu precisar tirar isso daqui hoje e
- 20:59substituir por outras coisas?
- 21:01SPEAKER_02: E o que eu posso fazer para deixar mais fácil essa substituição?
- 21:05SPEAKER_02: Então, eu posso criar mais funções?
- 21:07SPEAKER_02: Bora fazer mais funções.
- 21:08Eu posso criar um objeto de contexto muito mais estabelecido
- 21:12que possa ser passado?
- 21:13SPEAKER_02: Então, dependendo da linguagem, dá para você fazer isso.
- 21:15SPEAKER_02: Então,
- 21:16SPEAKER_02: quando eu falo de padrões,
- 21:17SPEAKER_02: é você usar da plataforma que você está desenvolvendo os padrões mais
- 21:21SPEAKER_02: estabelecidos,
- 21:22SPEAKER_02: ao invés de tentar fazer tudo
- 21:24SPEAKER_02: digamos assim, sem pensar no futuro, basicamente.
- 21:28SPEAKER_02: Porque hoje pensar no futuro não custa tanto.
- 21:30SPEAKER_02: Muita gente já pensou para a gente nesse tipo de problema aí.
- 21:36SPEAKER_01: Era isso que eu ia trazer até na pergunta anterior,
- 21:37porque a minha percepção é de que quando eu quero construir um
- 21:41software que vai
- 21:41SPEAKER_01: envelhecer bem,
- 21:43SPEAKER_01: eu necessariamente vou apostar em soluções que já são sólidas de mercado.
- 21:47SPEAKER_01: Então assim,
- 21:48SPEAKER_01: no meu caso,
- 21:48SPEAKER_01: por exemplo,
- 21:49SPEAKER_01: e aqui é a minha percepção,
- 21:50quando eu quero fazer um software que eu vou poder fazer
- 21:52manutenção por muito
- 21:53SPEAKER_01: tempo,
- 21:54SPEAKER_01: Eu vou fazer ele em Python e provavelmente se ele envolver back-end,
- 21:57SPEAKER_01: eu vou fazer ele em Django,
- 21:58SPEAKER_01: um por familiaridade,
- 22:00SPEAKER_01: outro porque eu estou no Django desde a versão 0.96.
- 22:03Então eu sei que ele não vai dar um carrinho de pau e virar e
- 22:07abandonar o código.
- 22:09E também sei que é uma plataforma que tem uma preocupação em
- 22:12interface upgrade,
- 22:14SPEAKER_01: mantendo a compatibilidade retroativa.
- 22:18Essa sensação de que quando a gente quer fazer software que
- 22:20envelhece bem,
- 22:21SPEAKER_01: escolher tecnologias que já são consolidadas,
- 22:24SPEAKER_01: já é um bom caminho para iniciar?
- 22:27Ou nem sempre vale a pena apostar na nova versão do framework
- 22:31que surgiu amanhã?
- 22:32SPEAKER_02: Aquela velha resposta de todo mundo, né?
- 22:35SPEAKER_02: Depende.
- 22:37SPEAKER_02: Mas eu concordo com você, por exemplo, ó.
- 22:39Só para deixar bem claro,
- 22:40eu sou um hater do Django,
- 22:43assim,
- 22:43na comunidade.
- 22:45Eu sempre,
- 22:46se for para conversar sobre o Django,
- 22:47eu vou falar um monte de coisa ruim do Django.
- 22:49SPEAKER_02: Mas eu trabalho com o Django hoje,
- 22:51SPEAKER_02: então já tem mais de 10 anos que eu trabalho com o Django,
- 22:54SPEAKER_02: e eu sei que ele é a melhor opção para aquilo que a gente desenvolve.
- 22:57SPEAKER_02: Então,
- 22:58SPEAKER_02: saber separar essa coisa do tipo,
- 23:00SPEAKER_02: olha,
- 23:00SPEAKER_02: eu não gosto dessa tecnologia,
- 23:01SPEAKER_02: mas eu entendo o valor dela,
- 23:03SPEAKER_02: é uma coisa bastante interessante.
- 23:05SPEAKER_02: Então,
- 23:05SPEAKER_02: o valor para mim do Django,
- 23:06SPEAKER_02: por exemplo,
- 23:07SPEAKER_02: entre os que você falou,
- 23:08SPEAKER_02: é que ele é bem estabelecido,
- 23:10SPEAKER_02: né?
- 23:10SPEAKER_02: Então,
- 23:11SPEAKER_02: como tem muita gente que depende dele,
- 23:13SPEAKER_02: é muito difícil a gente pensar assim,
- 23:14SPEAKER_02: olha,
- 23:15SPEAKER_02: amanhã ele vai lançar uma versão 6,
- 23:17SPEAKER_02: né?
- 23:17SPEAKER_02: que quebrou completamente todo mundo.
- 23:20SPEAKER_02: A gente não consegue mais envelhecer e deixar o nosso código.
- 23:23SPEAKER_02: Porque se isso acontecer,
- 23:25você tem pelo menos mais uma centena que está na mesma situação
- 23:29que vai conseguir
- 23:30SPEAKER_02: encontrar uma solução para resolver esse problema.
- 23:32SPEAKER_02: Então,
- 23:33SPEAKER_02: eu acho que vale a pena você se apoiar nos ombros dos gigantes,
- 23:37SPEAKER_02: como dizem,
- 23:37SPEAKER_02: e usar essas ferramentas já prontas.
- 23:40SPEAKER_01: Agora, existem tecnologias
- 23:41Eu só ia comentar que teve uma quebra bem grande para quem
- 23:45trabalha com Python,
- 23:46SPEAKER_01: que foi a virada do Python 2 para o Python 3.
- 23:49SPEAKER_01: E mesmo ela sendo uma quebra bem grande,
- 23:51SPEAKER_01: ela foi uma quebra que foi muito transicionada e bem comunicada,
- 23:56SPEAKER_01: e instruindo as pessoas que queriam fazer o upgrade.
- 23:59SPEAKER_01: Então,
- 24:00SPEAKER_01: quando eu digo,
- 24:00SPEAKER_01: às vezes,
- 24:01SPEAKER_01: se apoiar em uma biblioteca grande,
- 24:02SPEAKER_01: é mais nesse contexto também,
- 24:04SPEAKER_01: claro,
- 24:04SPEAKER_01: de ter mais milhares de pessoas que vão ter problemas.
- 24:06SPEAKER_01: Então, alguém vai te ajudar a achar,
- 24:08Mas acho que empresas e soluções e frameworks que têm essa
- 24:11preocupação de durabilidade também.
- 24:13É,
- 24:13o caso do Python é interessante,
- 24:15porque foi uma mudança relativamente simples.
- 24:17SPEAKER_02: A coisa drástica do Python foi mudar como que as strings eram tratadas,
- 24:21SPEAKER_02: a necessidade de você ter strings e unicode,
- 24:24e agora tudo se transformar de repente em strings e unicode e
- 24:27quebrar código do
- 24:28SPEAKER_02: Python 2.
- 24:29SPEAKER_02: E o jeito que isso foi feito, foi feito durante 10 anos.
- 24:34Então você imagina que para você migrar da versão 2.7 de uma
- 24:38linguagem para a
- 24:38SPEAKER_02: versão 3,
- 24:39SPEAKER_02: demora 10 anos.
- 24:41Num sistema comercial,
- 24:42provavelmente o business teria empurrado isso em seis meses.
- 24:47SPEAKER_02: Como o Python é uma linguagem aberta e que é usada em vários contextos,
- 24:51SPEAKER_02: não tem esse push de negócio,
- 24:54pode ser feita essa orquestração durante 10 anos para que todo
- 24:57mundo migrasse.
- 24:58SPEAKER_02: E a própria comunidade criou ferramentas, né?
- 25:00SPEAKER_02: Existia uma ferramenta chamada SIX,
- 25:02que ela conseguia converter aos poucos gradualmente o seu
- 25:05código de Python 2 para
- 25:07SPEAKER_02: Python 3.
- 25:07SPEAKER_02: E aí você podia rodar tanto no 2 quanto no 3,
- 25:09SPEAKER_02: que ela fazia as conversões ali em tempo de runtime.
- 25:12SPEAKER_02: Hoje em dia não se usa mais porque já está todo mundo no Python 3.
- 25:15SPEAKER_02: Então você ter certeza de que se vai acontecer esse tipo de quebra,
- 25:19SPEAKER_02: a comunidade ou quem te fornece a tecnologia vai te dar essa garantia,
- 25:23SPEAKER_02: né?
- 25:23SPEAKER_02: De você ter ferramentas para evoluir.
- 25:25SPEAKER_02: eu acho super importante, né?
- 25:27SPEAKER_02: É por isso que,
- 25:27SPEAKER_02: assim,
- 25:28SPEAKER_02: é meio que enviesada a minha opinião,
- 25:30SPEAKER_02: mas eu prefiro ferramentas abertas por conta desse motivo,
- 25:33SPEAKER_02: né?
- 25:33Porque é muito mais fácil a comunidade como um todo fazer isso
- 25:37do que colocar um
- 25:38conflito de interesse comercial para empurrar um upgrade ou a
- 25:41mudança de alguma
- 25:42SPEAKER_02: ferramenta naquele estilo do tipo,
- 25:44SPEAKER_02: olha,
- 25:44SPEAKER_02: a gente decidiu que vai ser assim e você se vira,
- 25:47SPEAKER_02: sabe?
- 25:47SPEAKER_02: Você tem que migrar, o problema é seu.
- 25:49SPEAKER_02: E isso tem custo, né?
- 25:51SPEAKER_02: E eu ia complementar, ah, na sua pergunta que você falou do Django,
- 25:55SPEAKER_02: Lembrando que a gente está falando do Django,
- 25:56SPEAKER_02: mas acho que isso se aplica a qualquer outra linguagem e tecnologia.
- 25:59SPEAKER_02: Todas elas têm aquele framework ou aquele ambiente que é o mais famosão,
- 26:04SPEAKER_02: que é o que todo mundo usa.
- 26:05SPEAKER_02: Só que tem um detalhe,
- 26:06SPEAKER_02: fazer isso que o Python fez,
- 26:08SPEAKER_02: por exemplo,
- 26:08SPEAKER_02: que o Django faz,
- 26:09que é ter as suas versões estáveis e arcar com essa questão de
- 26:13demorar para
- 26:14SPEAKER_02: alterar,
- 26:15SPEAKER_02: tem o custo de demorar mais para inovar.
- 26:18SPEAKER_02: de demorar mais para estar no bleeding edge da coisa.
- 26:21SPEAKER_02: O Django,
- 26:22SPEAKER_02: por exemplo,
- 26:23SPEAKER_02: só agora que eles estabilizaram o Channels,
- 26:25que é um negócio que veio sendo usado um tempão para fazer a
- 26:28parte de sync e tudo
- 26:30SPEAKER_02: mais,
- 26:30SPEAKER_02: demorou muito tempo.
- 26:31SPEAKER_02: Então,
- 26:32SPEAKER_02: se você pegar,
- 26:32SPEAKER_02: por exemplo,
- 26:33SPEAKER_02: há uns cinco anos,
- 26:34SPEAKER_02: quando surgiu o FastAPI,
- 26:36SPEAKER_02: deve ter até menos de cinco anos quando o FastAPI começou a ficar famoso,
- 26:40ele começou a ser usado porque ele abraçou comunicação assim
- 26:43que já é logo de cara.
- 26:45SPEAKER_02: Então você olhava para o Django e falava,
- 26:46SPEAKER_02: dá para fazer assim que no Django,
- 26:48SPEAKER_02: mas não é daquele jeito,
- 26:49SPEAKER_02: entendeu?
- 26:50SPEAKER_02: Não parece nativo, é só agora.
- 26:52SPEAKER_02: Então demora para essas coisas acontecerem.
- 26:54SPEAKER_02: E eu estou vendo isso acontecer de novo com AI.
- 26:56SPEAKER_02: Então hoje em dia,
- 26:58SPEAKER_02: se você quiser desenvolver a gente para AI,
- 27:01SPEAKER_02: se você quiser trabalhar com o MCP,
- 27:03SPEAKER_02: com os outros protocolos novos aí da moda,
- 27:07provavelmente,
- 27:08se você está no meio Python,
- 27:09você vai usar o FastAPI,
- 27:11sabe?
- 27:11SPEAKER_02: Que não é tão estável quanto o Django,
- 27:13SPEAKER_02: provavelmente vai ter quebras aí de compatibilidade,
- 27:18SPEAKER_02: mas ele está na crista da onda da inovação,
- 27:21SPEAKER_02: entendeu?
- 27:21SPEAKER_02: Na hora que essas empresas aí,
- 27:24SPEAKER_02: essa indústria lançar um novo protocolo,
- 27:26SPEAKER_02: você pode ter certeza que não vai dar dois dias,
- 27:28SPEAKER_02: já vai ter um
- 27:29SPEAKER_02: alguma coisa ali no FastAPI.
- 27:31Enquanto no Django a gente vai esperar 3,
- 27:334,
- 27:345 anos para estar estabilizado.
- 27:35SPEAKER_02: Então é mais que aquela janela de oportunidade para você aproveitar.
- 27:39SPEAKER_02: Só que esse código que você gera com essas ferramentas mais modernas,
- 27:42SPEAKER_02: ele não é um código feito para envelhecer.
- 27:44SPEAKER_02: Essa que é a questão.
- 27:45Então você quando investe em inovação desse nível,
- 27:48você já tem que contar com esse custo.
- 27:50SPEAKER_02: Você já tem que contar com
- 27:52SPEAKER_02: Eu não estou fazendo isso aqui para durar 10 anos, entendeu?
- 27:55Eu estou fazendo isso daqui para aproveitar a minha janela de
- 27:57oportunidade agora e
- 27:59SPEAKER_02: em algum momento eu vou pagar o débito técnico se ele vier.
- 28:01SPEAKER_02: Pois é,
- 28:02SPEAKER_02: eu ia te perguntar sobre isso também,
- 28:04SPEAKER_02: sobre esse equilíbrio entre inovação e manutembilidade.
- 28:13SPEAKER_02: Eu nem sei se essa palavra existe.
- 28:16SPEAKER_02: Mas existe, né?
- 28:16SPEAKER_02: Manutenibilidade.
- 28:18SPEAKER_02: Manutenibilidade.
- 28:19SPEAKER_02: Isso aí.
- 28:20SPEAKER_02: Tipo,
- 28:20SPEAKER_02: isso é uma parada que...
- 28:22Escrever código que dura é uma preocupação que tem que ser só
- 28:26de pessoas que fazem
- 28:28SPEAKER_02: esses projetos open source que são usados por muitas empresas.
- 28:33Ah,
- 28:33desenvolver um plugin,
- 28:35sei lá,
- 28:35desenvolver uma SDK que muita gente está usando.
- 28:38SPEAKER_02: Ou tu acha que isso é uma parada que qualquer deve fazer?
- 28:42SPEAKER_02: Tipo,
- 28:42Mesmo que trabalhe num produto que é muito inovador,
- 28:44que muda o tempo todo.
- 28:45SPEAKER_02: É, eu acho que qualquer dev tem que fazer, né?
- 28:49SPEAKER_02: É aquela coisa, você tem que fazer o seu best forte, o seu melhor.
- 28:53SPEAKER_02: E você vai sempre balancear isso com o conflito de interesse.
- 28:57SPEAKER_02: A gente como dev,
- 28:58SPEAKER_02: engenheiro,
- 28:59SPEAKER_02: arquiteto,
- 29:00SPEAKER_02: a gente está em constante conflito de interesse com o pessoal de produto,
- 29:05SPEAKER_02: né?
- 29:05SPEAKER_02: A gente costuma dizer, nós estamos juntos, o nosso objetivo é o mesmo...
- 29:09SPEAKER_02: Mas vamos falar bem a verdade,
- 29:11SPEAKER_02: a gente gosta de código bonito,
- 29:13SPEAKER_02: a gente gosta de resolver problemas que são interessantes,
- 29:17SPEAKER_02: a gente gosta de inventar coisas que vão dar orgulho para a gente depois.
- 29:21SPEAKER_02: E o produto,
- 29:22SPEAKER_02: por outro lado,
- 29:23SPEAKER_02: ele está naquele push do tipo,
- 29:25SPEAKER_02: olha,
- 29:25SPEAKER_02: eu preciso entregar logo,
- 29:27SPEAKER_02: eu preciso vender,
- 29:28SPEAKER_02: eu preciso ter uma feature para apresentar lá no meu...
- 29:31na próxima conferência que eu vou fazer para que eu consiga
- 29:34fechar mais alguns contratinhos.
- 29:36SPEAKER_02: Então a gente está nessa... Esse é o trabalho, na verdade.
- 29:39SPEAKER_02: O trabalho é estar nessa fricção e fazer essas concessões,
- 29:43SPEAKER_02: esses trade-offs e negociar com o produto e falar assim,
- 29:46SPEAKER_02: olha,
- 29:47SPEAKER_02: beleza,
- 29:47SPEAKER_02: isso aqui eu vou abrir mão.
- 29:48SPEAKER_02: Eu abro mão da gente fazer testes tier 1, 2 e 3.
- 29:52SPEAKER_02: Vamos entregar o release só com o tier 1 de testes.
- 29:56SPEAKER_02: Vamos fazer só uma... Tudo bem, disso eu abro mão.
- 29:58SPEAKER_02: Tem coisas que os devs não vão abrir mão.
- 30:00SPEAKER_02: Então assim,
- 30:01SPEAKER_02: você tem que saber,
- 30:02SPEAKER_02: é complicado porque é muito mais humano do que técnico,
- 30:04SPEAKER_02: mas você tem que saber alinhar essas coisas.
- 30:06Mas eu acho que ainda assim existe vantagem para quem é
- 30:09desenvolvedor e também para
- 30:11SPEAKER_02: quem é produto.
- 30:12Se você colocar essas coisas de um jeito que vai trazer o
- 30:15benefício do longo prazo
- 30:17SPEAKER_02: e que fique bem comunicado do tipo,
- 30:19SPEAKER_02: olha,
- 30:19SPEAKER_02: se a gente seguir essas práticas agora,
- 30:23SPEAKER_02: a gente vai evitar tais custos.
- 30:25É mais fácil de você convencer quem está ali do lado do
- 30:28produto,
- 30:29dos stakeholders.
- 30:30SPEAKER_02: Então é preciso ter esse data-driven.
- 30:32SPEAKER_02: Mas eu acho que o dev mesmo, na prática, ele consegue fazer coisas.
- 30:35SPEAKER_02: Por exemplo,
- 30:36SPEAKER_02: uma coisa que eu acho que o dev consegue fazer,
- 30:38SPEAKER_02: e eu sempre gosto de falar de sistemas polêmicos,
- 30:41SPEAKER_02: porque eu estou há 15 ou mais anos ouvindo coisas desse tipo,
- 30:45SPEAKER_02: e meio que se tornaram as leis do nosso faroeste chamado BolhaDev.
- 30:50Por exemplo,
- 30:50existe uma lei que diz assim,
- 30:52você não deve comentar código.
- 30:53SPEAKER_02: Acho que todo mundo já ouviu isso.
- 30:55SPEAKER_02: Você coloca comentário no código,
- 30:57SPEAKER_02: quase que a galera quer falar assim,
- 30:59SPEAKER_02: sai daqui,
- 31:00SPEAKER_02: tá muito errado,
- 31:02SPEAKER_02: né?
- 31:02E eu vejo que essa é uma daquelas coisas que o pessoal adotou
- 31:07cegamente,
- 31:08sabe?
- 31:08SPEAKER_02: Sem pensar muito e não faz muito sentido, sabe?
- 31:11SPEAKER_02: A gente tem o comentário de código,
- 31:14SPEAKER_02: ele é uma ferramenta que se for bem usada,
- 31:16SPEAKER_02: ele ajuda o código a envelhecer bem.
- 31:18SPEAKER_02: Sim, sabe?
- 31:19Não dá pra gente simplesmente olhar como uma coisa simples e
- 31:22tenha todas as nuances aí,
- 31:24né?
- 31:25Tipo aquela coisa do Júnior que comenta num um mais um,
- 31:29ele comenta está somando um mais um?
- 31:32SPEAKER_02: Claro que existe esse cenário, né?
- 31:33SPEAKER_02: Da ingenuidade, né?
- 31:35SPEAKER_02: Mas eu acho que a gente não deve levar...
- 31:37SPEAKER_02: esse tipo de coisa como regra,
- 31:39SPEAKER_02: principalmente hoje em dia,
- 31:40SPEAKER_02: que a gente está usando mais AI,
- 31:41SPEAKER_02: mais agentes,
- 31:42SPEAKER_02: mais automação em cima de código,
- 31:44SPEAKER_02: você transformar o código em algo que possa ser lido mais facilmente,
- 31:49SPEAKER_02: ajuda ele a envelhecer muito bem.
- 31:50SPEAKER_02: Então,
- 31:51SPEAKER_02: eu tenho hoje um pensamento em que ele ainda não está 100% formado,
- 31:57SPEAKER_02: mas eu tenho visto,
- 31:58SPEAKER_02: eu tenho lido muita coisa,
- 31:59SPEAKER_02: inclusive do pessoal mais famoso aí,
- 32:01SPEAKER_02: que são os nossos filósofos devs,
- 32:03SPEAKER_02: tipo o
- 32:04SPEAKER_02: o Uncle Bob, etc.
- 32:06SPEAKER_02: Eu tenho visto até esses caras falarem coisas nesse sentido,
- 32:09SPEAKER_02: que é,
- 32:09SPEAKER_02: por exemplo,
- 32:10SPEAKER_02: quanto mais documentação o software tem,
- 32:12SPEAKER_02: talvez pior seja.
- 32:14SPEAKER_02: E quando eu falo documentação,
- 32:16é aquela documentação clássica em que você tem um lugar
- 32:19separado do código para
- 32:20SPEAKER_02: você ir consultar o que o código faz.
- 32:22SPEAKER_02: Então,
- 32:23SPEAKER_02: meio que é um antepadrão que a gente meio que adotou,
- 32:25SPEAKER_02: talvez para deixar a responsabilidade de documentar para depois.
- 32:28SPEAKER_02: Mas eu vejo que,
- 32:29SPEAKER_02: visto que o melhor código que eu tenho visto,
- 32:32SPEAKER_02: que eu tenho passado na minha carreira nesses anos,
- 32:35SPEAKER_02: é aquele código que eu não preciso ir para outro lugar para entender ele.
- 32:38SPEAKER_02: O contexto dele está no próprio código.
- 32:40SPEAKER_02: Então, a documentação é o código.
- 32:42Se o código em si não é expressivo o suficiente para você ler
- 32:46uma expressão daquela
- 32:48SPEAKER_02: linguagem e saber o que ela está fazendo...
- 32:50SPEAKER_02: Beleza, toda linguagem tem comentário.
- 32:53SPEAKER_02: Então você coloca ali quatro,
- 32:55SPEAKER_02: cinco,
- 32:55SPEAKER_02: seis linhas de comentário bem feito,
- 32:57SPEAKER_02: bem estruturado,
- 32:58porque a gente passa uma carreira inteira aprendendo como
- 33:00escrever sintaxe da
- 33:01SPEAKER_02: linguagem muito bem escrita,
- 33:03SPEAKER_02: como passar dos linters até espaçamento.
- 33:08SPEAKER_02: Tudo isso a gente leva numa boa.
- 33:10SPEAKER_02: Agora,
- 33:10SPEAKER_02: quando vem a questão vamos escrever comentários bem escritos,
- 33:14SPEAKER_02: é sempre uma questão que pega muita gente,
- 33:16SPEAKER_02: né?
- 33:17SPEAKER_02: E aquela coisa,
- 33:17SPEAKER_02: se você estruturar bem o comentário,
- 33:19SPEAKER_02: o comentário ele vive junto com o código,
- 33:21SPEAKER_02: ele evolui junto com o código,
- 33:23SPEAKER_02: ele explica o código e ajuda a gente a entender o futuro.
- 33:26SPEAKER_02: Então eu vou dizer que parece uma coisa simples,
- 33:29mas foram muitas vezes que eu peguei código alheio de oito anos
- 33:33atrás e que olhando
- 33:34SPEAKER_02: para aquilo ali eu olhava e falava assim,
- 33:36SPEAKER_02: eu não tenho a menor ideia do que esse negócio está fazendo.
- 33:39SPEAKER_02: Vamos achar algum comentário, alguma mensagem de comite.
- 33:42SPEAKER_02: Se tivesse colocado...
- 33:43SPEAKER_02: Daí tu vai ver o comentário é não toque,
- 33:45SPEAKER_02: isso funciona,
- 33:46SPEAKER_02: eu não sei porquê.
- 33:49SPEAKER_02: Olha, acontece, né?
- 33:51SPEAKER_02: Mas eu acho que essa coisa da gente evitar o comentário vem disso, né?
- 33:54Que eu não sei a verdade de onde surgiu,
- 33:57mas tem anos que eu escuto essa coisa.
- 33:58SPEAKER_02: Não é do Código Limpo também?
- 34:00SPEAKER_02: Não é do Clean Code isso?
- 34:01SPEAKER_02: Eu acho que o Código Limpo
- 34:03SPEAKER_02: ele foi mal interpretado nesse ponto.
- 34:05Porque eu acho que talvez o que o código limpo queira dizer é
- 34:07exatamente isso que
- 34:08SPEAKER_02: eu falei de outro jeito.
- 34:10SPEAKER_02: Que é assim,
- 34:11você deve escrever o seu código de um jeito tão expressivo que
- 34:15você não precise do
- 34:16SPEAKER_02: comentário.
- 34:17SPEAKER_02: Entendi.
- 34:17SPEAKER_02: Então,
- 34:18SPEAKER_02: por exemplo,
- 34:18SPEAKER_02: ao invés de eu ter uma variável chamada EC,
- 34:21SPEAKER_02: eu chamo aquela variável de Enabled Components.
- 34:24SPEAKER_02: Aí eu não preciso botar um comentário dizendo o que significa esse.
- 34:27SPEAKER_02: Então você usar a nomenclatura que tenha significado.
- 34:30SPEAKER_02: Mas ele não quis dizer não use comentário.
- 34:33SPEAKER_02: Não quis dizer não use comentário, exatamente.
- 34:35SPEAKER_02: Aquela coisa do tipo,
- 34:36SPEAKER_02: ao invés de você ter números mágicos no meio do seu código,
- 34:39SPEAKER_02: você abrir o código e tem lá uns 54,
- 34:41SPEAKER_02: você criar lá uma constante chamada refresh interval.
- 34:46SPEAKER_02: Então o próprio código se auto...
- 34:49SPEAKER_02: documenta,
- 34:49eu acho que é isso que ele quis dizer mas o pessoal entendeu do
- 34:52tipo assim sai
- 34:53SPEAKER_02: codando,
- 34:54passa pelos linters e nunca coloque comentário e aí a gente
- 34:57chegou nesse nível de
- 34:59SPEAKER_02: ver uns códigos muito loucos,
- 35:00SPEAKER_02: muito malucos que não dá pra entender,
- 35:02mas eu acho que esse é um dos pontos que eu acho que vale a
- 35:04pena e eu acho que eu
- 35:06SPEAKER_02: poderia traduzir em assim,
- 35:08SPEAKER_02: o código tem que se explicar sozinho
- 35:11porque ele é mais lido do que escrito e hoje em dia inclusive
- 35:16ele é lido até por
- 35:17não humanos então os não humanos também vão utilizar esses
- 35:22contextos para entregar
- 35:24valor então acho que esse é um ponto para fazer o código que
- 35:28vive mesmo que o
- 35:29SPEAKER_02: código seja uma porcaria
- 35:30SPEAKER_02: Se o comentário explicar o porquê que ele é uma porcaria,
- 35:32SPEAKER_02: numa segunda leva de refaturação,
- 35:35SPEAKER_02: talvez quem tiver mais afim,
- 35:38SPEAKER_02: mais motivado ou mais experiente naquele momento vai falar,
- 35:41SPEAKER_02: ah não,
- 35:41SPEAKER_02: isso aqui eu sei resolver,
- 35:42SPEAKER_02: né?
- 35:42SPEAKER_02: Então acho que é um dos pontos aí que dá pra gente desmistificar, né?
- 35:47SPEAKER_02: Eu acho que todo dev pode fazer isso, né?
- 35:48Independente do tamanho do sistema,
- 35:51não é um negócio que tem um custo,
- 35:52né?
- 35:52SPEAKER_02: Não é um negócio assim,
- 35:53SPEAKER_02: você não vai atrasar seu sprint,
- 35:55SPEAKER_02: porque você vai colocar comentário e documentação e melhorar como que tá
- 35:58SPEAKER_02: organizadas constantes do seu código,
- 36:01SPEAKER_02: né?
- 36:03SPEAKER_01: You've got mail.
- 36:29SPEAKER_01: Qual a relação entre a transportadora e a farinha?
- 36:31SPEAKER_01: Ele, não, não, é porque a gente usava SVN na empresa.
- 36:34SPEAKER_01: E a gente tinha uma estrutura que criava o banco, a estrutura sozinha.
- 36:37SPEAKER_01: E a gente sempre usava isso como boilerplate pra todos os projetos.
- 36:40SPEAKER_01: Então todos os projetos daquela firma tinham um negócio de padaria.
- 36:43SPEAKER_01: E eles faziam isso por quê?
- 36:44SPEAKER_01: Porque eles não sabiam recriar a estrutura e funcionava.
- 36:47SPEAKER_01: E aí isso ia pra todo mundo, sabe?
- 36:49SPEAKER_01: Mas...
- 36:50SPEAKER_01: essa aleatoriedade passa.
- 36:51SPEAKER_01: O que eu ia perguntar também é o seguinte,
- 36:53SPEAKER_01: quando a gente olha pela questão de...
- 36:55SPEAKER_01: A gente está falando muito aqui sobre código que sobreviva ao tempo,
- 36:58SPEAKER_01: né?
- 36:59E a gente poder fazer manutenção dele ao longo do tempo,
- 37:01que significa que ele envelheça bem.
- 37:03SPEAKER_01: Mas isso não é uma preocupação que todo mundo tem que ter, né?
- 37:06SPEAKER_01: Eu digo,
- 37:07SPEAKER_01: estou começando um projetinho agora,
- 37:09SPEAKER_01: vou querer testar,
- 37:10SPEAKER_01: fazer um microsasco que todo deve,
- 37:11SPEAKER_01: quer fazer agora.
- 37:12SPEAKER_01: Eu não necessariamente preciso me preocupar que ele envelheça bem, né?
- 37:15Se eu tomar alguns pequenos cuidados que a gente vai falar de
- 37:17deixar uma estrutura
- 37:18SPEAKER_01: ok,
- 37:18SPEAKER_01: eu não preciso ficar pensando,
- 37:20SPEAKER_01: meu,
- 37:20SPEAKER_01: será que essa estrutura,
- 37:21SPEAKER_01: essa arquitetura,
- 37:22SPEAKER_01: ela vai resistir por 15 anos?
- 37:24SPEAKER_01: Talvez o teu produto não dure esse tempo todo, né?
- 37:26SPEAKER_02: Ah, sim, com certeza.
- 37:27SPEAKER_02: E essa paralisia por análise, né?
- 37:30SPEAKER_02: Análise, parálise.
- 37:31Eu já passei muitas vezes que é aquela coisa de tanto ficar
- 37:34querendo fazer o
- 37:35SPEAKER_02: projeto ficar bom,
- 37:36SPEAKER_02: ele não ficou pronto.
- 37:38SPEAKER_02: Eu,
- 37:38SPEAKER_02: em 2012,
- 37:41SPEAKER_02: eu decidi iniciar um projeto open source,
- 37:43SPEAKER_02: investir não só tempo,
- 37:44SPEAKER_02: mas dinheiro também naquilo,
- 37:46SPEAKER_02: né?
- 37:46SPEAKER_02: E o meu objetivo não era nada ambicioso, né?
- 37:50SPEAKER_02: Eu queria recriar o WordPress em Python.
- 37:52SPEAKER_02: E, assim, eu fiz, né?
- 37:55SPEAKER_02: Se você acessar hoje, tá lá no GitHub, lá chama Coca, né?
- 37:58SPEAKER_02: Coca, que é um bichinho lá da Austrália, Coca Project.
- 38:00SPEAKER_02: Tem lá o projeto, tá feito todo em Python.
- 38:03E ele chegou num ponto onde muita gente usando,
- 38:06empresas grandes utilizando e tudo mais.
- 38:08Só que eu fiquei paralisado justamente nessa questão de que eu
- 38:13nunca estava satisfeito.
- 38:14Eu queria que ficasse melhor,
- 38:16eu queria que tivesse 100% de cobertura de teste.
- 38:18Eu queria que fosse extremamente genérico a ponto de eu poder
- 38:23tratar qualquer tipo
- 38:24de conteúdo vindo de qualquer lugar e que não tivesse conflitos
- 38:28e que fosse
- 38:28SPEAKER_02: perfeito.
- 38:29Até o ponto que aquilo virou um burnout na minha vida e eu não
- 38:32quis mais olhar para
- 38:33SPEAKER_02: aquilo,
- 38:33SPEAKER_02: entendeu?
- 38:34SPEAKER_02: É claro que nesse caso era um projeto pessoal,
- 38:36um projeto que era eu e eu que me importava com aquilo e os
- 38:39usuários daquele
- 38:40SPEAKER_02: momento.
- 38:41Mas se você fizer isso que nem você falou no microsize,
- 38:43você vai correr o mesmo risco.
- 38:45Você vai correr o risco de começar e não conseguir terminar ele
- 38:48por conta dessa
- 38:49SPEAKER_02: necessidade de encontrar a perfeição.
- 38:51Então acho que nem todo mundo deve se preocupar com isso num
- 38:54primeiro momento,
- 38:55né?
- 38:55SPEAKER_02: Eu gosto de uma frase que o criador do C++,
- 38:58SPEAKER_02: se eu não me engano,
- 38:59SPEAKER_02: eu não sei falar o nome dele,
- 39:00SPEAKER_02: acho que é Bjorn Sterop,
- 39:02SPEAKER_02: é uma coisa assim o nome dele,
- 39:04SPEAKER_02: mas ele tem uma frase que é assim,
- 39:05SPEAKER_02: make it work,
- 39:07SPEAKER_02: make it right,
- 39:08SPEAKER_02: make it fast.
- 39:09SPEAKER_02: Então são três fases para desenvolver software.
- 39:11SPEAKER_02: Então a primeira é faz funcionar.
- 39:13SPEAKER_02: Basicamente é,
- 39:15SPEAKER_02: não importa muito qual padrão que você está usando,
- 39:17SPEAKER_02: qual linguagem,
- 39:18SPEAKER_02: qual biblioteca,
- 39:19SPEAKER_02: você tem um objetivo que você quer entregar,
- 39:22SPEAKER_02: né?
- 39:22SPEAKER_02: Então faz ele funcionar, né?
- 39:23SPEAKER_02: Então faz...
- 39:24SPEAKER_02: No segundo ponto,
- 39:25SPEAKER_02: você vai olhar para aquilo e vai falar assim,
- 39:27SPEAKER_02: tá uma porcaria,
- 39:28SPEAKER_02: vamos fazer corretamente.
- 39:29SPEAKER_02: E aí você tem sempre a chance, né?
- 39:31SPEAKER_02: Quando você escreve código, não tá escrito na pedra, né?
- 39:34SPEAKER_02: Tipo, a compilação é só depois, né?
- 39:36SPEAKER_02: Você sempre tem a chance de recompilar.
- 39:38SPEAKER_02: Então vamos agora modularizar,
- 39:40SPEAKER_02: vamos recopiar umas funções para colocar nos módulos mais bonitinhos...
- 39:44SPEAKER_02: Vamos colocar uma arquitetura de plugin aqui onde precisa.
- 39:47SPEAKER_02: Beleza, fez correto?
- 39:48SPEAKER_02: Provavelmente vai estar lento, né?
- 39:50Vai estar uma carroça porque você fez as piores decisões e
- 39:54escolheu as piores integrações.
- 39:55SPEAKER_02: Então agora vamos pensar em fazer ele ficar rápido.
- 39:57SPEAKER_02: Mas pelo menos se você desistir em um desses três níveis de preocupação,
- 40:02SPEAKER_02: você já tem a coisa funcionando e entregando,
- 40:05SPEAKER_02: né?
- 40:05SPEAKER_02: Então você não corre o risco de perder o time to market, né?
- 40:08SPEAKER_02: Então,
- 40:08SPEAKER_02: eu acho que vale a pena seguir essa filosofia,
- 40:11SPEAKER_02: principalmente quando o projeto é um projeto de CEO sozinho,
- 40:15SPEAKER_02: né?
- 40:15SPEAKER_02: E tu comentou sobre isso, né?
- 40:17SPEAKER_02: Deves quererem um código perfeito, tu mesmo falou que teve esse problema.
- 40:21SPEAKER_02: Tipo, a diferença entre refatorar e reescrever do zero.
- 40:25SPEAKER_02: Tu acha que tem um manual, assim, de quando fazer um ou outro?
- 40:30SPEAKER_02: Ou é melhor só deixar lá e...
- 40:32SPEAKER_02: Tá tudo bem?
- 40:33SPEAKER_02: Cara,
- 40:33SPEAKER_02: eu acho que assim,
- 40:35SPEAKER_02: um dos grandes problemas que eu vi e que foi parte de autoanálise minha,
- 40:39SPEAKER_02: que eu passei por isso várias vezes,
- 40:41SPEAKER_02: é o fato da gente se apegar a código como se ele fosse arte.
- 40:45SPEAKER_02: Isso acontece muito com o Dev, sabe?
- 40:47SPEAKER_02: É aquela coisa,
- 40:48SPEAKER_02: eu escrevi aqui umas classes,
- 40:50SPEAKER_02: uns módulos,
- 40:52um negócio muito legal que funciona muito bem e eu não quero
- 40:55jogar isso fora.
- 40:56SPEAKER_02: E eu passei muito por isso, né?
- 40:58SPEAKER_02: Eu acho que tem muita gente que passa por isso.
- 40:59SPEAKER_02: Então,
- 41:00SPEAKER_02: acho que assim,
- 41:00SPEAKER_02: uma das primeiras características que a gente tem que adquirir é esse
- 41:03SPEAKER_02: desprendimento,
- 41:04SPEAKER_02: sabe?
- 41:05SPEAKER_02: Essa facilidade de deletar código sem dó, entendeu?
- 41:08SPEAKER_02: Porque assim, se você já escreveu uma vez...
- 41:10E eu tô falando de um mundo onde a gente nem tinha AI ainda pra
- 41:13reescrever,
- 41:14né?
- 41:15SPEAKER_02: Hoje ainda você pode deletar e pedir pra AI refazer pra você.
- 41:18SPEAKER_02: Mas eu ainda tô com o meu pensamento em uma época onde,
- 41:20SPEAKER_02: assim,
- 41:20SPEAKER_02: se eu fiz uma vez,
- 41:21SPEAKER_02: eu sou capaz de fazer de novo e talvez melhor,
- 41:24SPEAKER_02: né?
- 41:24SPEAKER_02: Mesmo que eu não tenha exatamente aquele,
- 41:27SPEAKER_02: lembre exatamente de como foi a ordem que eu fiz as coisas,
- 41:30SPEAKER_02: a probabilidade de eu fazer melhor vai ser grande.
- 41:32SPEAKER_02: Então,
- 41:33SPEAKER_02: eu sei que é sofrido,
- 41:34SPEAKER_02: eu sofri pra conseguir adquirir essa habilidade,
- 41:38SPEAKER_02: mas hoje eu deleto o código sem dó nenhuma.
- 41:40SPEAKER_02: sabe, tipo, vamos fazer de novo, isso aqui tá ruim?
- 41:43SPEAKER_02: Tá lento?
- 41:44SPEAKER_02: Beleza, o que que é mais importante?
- 41:46SPEAKER_02: Ser rápido?
- 41:47SPEAKER_02: Então beleza,
- 41:47SPEAKER_02: então vamos começar de novo,
- 41:49SPEAKER_02: vai lá,
- 41:49SPEAKER_02: define de novo a função,
- 41:50SPEAKER_02: objeto,
- 41:51SPEAKER_02: módulo e começa a fazer,
- 41:52SPEAKER_02: né,
- 41:53SPEAKER_02: e aí você usa o antigo como referência pra você olhar,
- 41:56SPEAKER_02: pra você copiar coisa,
- 41:57SPEAKER_02: mas reescrever o código eu acho que não é um
- 42:00uma coisa muito...
- 42:01não é um negócio que deveria ser levado tão a sério,
- 42:05entendeu?
- 42:05SPEAKER_02: Porque se for parar pra pensar, esse é o nosso trabalho, né?
- 42:08SPEAKER_02: Escrever código é o nosso trabalho.
- 42:09SPEAKER_02: A gente tem evitado, né?
- 42:12SPEAKER_02: Evitar, tipo, reescrever, mas é a parte do que a gente tem que fazer.
- 42:16SPEAKER_02: Então, eu hoje sou mais assim do tipo, vamos refazer do zero, né?
- 42:21SPEAKER_02: Vamos botando as linhas de código de novo,
- 42:22SPEAKER_02: ela vai ajudar a gente a reorganizar os pensamentos,
- 42:25SPEAKER_02: né?
- 42:25SPEAKER_02: Agora, existem casos onde você não tem tempo para fazer isso.
- 42:29SPEAKER_02: Aí que vem o problema.
- 42:31Você não tem tempo ou você não tem...
- 42:34Não deixam você simplesmente fazer,
- 42:36se for numa empresa.
- 42:37SPEAKER_02: Se você chegar numa empresa grande,
- 42:39SPEAKER_02: que tem todo um processo de aprovação,
- 42:41SPEAKER_02: e você simplesmente falar,
- 42:43SPEAKER_02: olha,
- 42:43SPEAKER_02: tal componente está muito lento,
- 42:45SPEAKER_02: eu quero reescrever do zero.
- 42:46SPEAKER_02: Complicado, né?
- 42:47Muito trauma que você vai acabar gerando ali o pessoal lembrar
- 42:52de problemas assim.
- 42:53SPEAKER_02: Então...
- 42:53É necessário você também conseguir lapidar código existente e
- 42:57nesse ponto tem o
- 42:59SPEAKER_02: código existente,
- 43:00SPEAKER_02: o código legado,
- 43:01SPEAKER_02: vamos dizer assim.
- 43:02SPEAKER_02: Se ele não for modular,
- 43:04SPEAKER_02: aquela coisa que você consegue substituir pequenas partes dele,
- 43:07SPEAKER_02: então você sabe que tem lá umas funções,
- 43:09SPEAKER_02: eu vou trocar só aquelas funções e vamos ver se melhora.
- 43:12SPEAKER_02: Se o código for tão alinhado que você não consegue fazer isso,
- 43:15SPEAKER_02: eu acho que você já tem a sua próxima tarefa,
- 43:18SPEAKER_02: que é transformar aquele código em um código modular,
- 43:20SPEAKER_02: porque não tem outro jeito de refatorar.
- 43:23SPEAKER_02: sabe,
- 43:23SPEAKER_02: refatorar,
- 43:24SPEAKER_02: pegar aquele arquivo de 50 mil linhas e sair reescrevendo ele,
- 43:27SPEAKER_02: é loucura,
- 43:28SPEAKER_02: é loucura,
- 43:29SPEAKER_02: é ficar entrando num loop ali,
- 43:32SPEAKER_02: no rabbit hole ali,
- 43:33SPEAKER_02: você nunca vai sair daquilo,
- 43:35SPEAKER_02: então é aquela coisa,
- 43:36SPEAKER_02: tenho que refatorar legado,
- 43:37SPEAKER_02: primeira coisa,
- 43:38SPEAKER_02: como acoplado ele é?
- 43:39SPEAKER_02: o quão modularizado ele está.
- 43:41SPEAKER_02: Então, a primeira tarefa é essa.
- 43:43Vamos tentar fazer com que eu consiga tirar e colocar coisas
- 43:46aqui para eu testar,
- 43:47SPEAKER_02: para eu poder comparar.
- 43:48SPEAKER_02: Eu consegui alterar componentes.
- 43:51SPEAKER_02: É muito amplo,
- 43:52SPEAKER_02: é difícil de falar,
- 43:52SPEAKER_02: mas para ficar num esquema mais tangível,
- 43:55SPEAKER_02: é aquela velha história de você ter um código lá cheio de funções...
- 43:59SPEAKER_02: E você simplesmente fala assim,
- 44:00essa função aqui eu vou comentar ela e eu vou escrever outra
- 44:03implementação dela que
- 44:04SPEAKER_02: vai fazer talvez não tudo que ela faz,
- 44:06SPEAKER_02: mas vai fazer mais simples e vamos ver se resolve o gargalo.
- 44:09SPEAKER_02: Conseguir isolar os problemas é o que faz você saber o que refatorar.
- 44:14SPEAKER_02: E se não tiver desse jeito, nem dá para começar, na minha opinião.
- 44:17SPEAKER_01: Já tentei.
- 44:19Normalmente o código que ninguém quer mexer é porque ninguém
- 44:21sabe por onde começar,
- 44:22SPEAKER_01: porque ele tá tão ruim que o cara não quer nem começar.
- 44:26SPEAKER_02: Às vezes você nem sabe nem aonde colocar os debuggins, né?
- 44:29SPEAKER_02: Você não sabe onde pôr os breakpoints,
- 44:30você não sabe onde colocar os prints porque você não sabe o que
- 44:32tá acontecendo.
- 44:33então modularizar o código é o primeiro passo então eu acho que
- 44:38também é mais uma
- 44:38coisa que qualquer dev consegue fazer na hora que está
- 44:40escrevendo tipo assim não
- 44:42vai alterar em nada o custo do seu software não vai alterar em
- 44:45nada o tempo que
- 44:46você demora para desenvolver se ao invés de você fazer aquela
- 44:49função gigante
- 44:50SPEAKER_02: Você partir para aplicar os princípios do Solid aí e criar funções com
- 44:55SPEAKER_02: responsabilidade única,
- 44:57SPEAKER_02: você criar contextos que possam ser substituíveis facilmente.
- 45:02SPEAKER_02: Então, esse tipo de padrão, eu acho que vale a pena desde o começo.
- 45:06SPEAKER_02: Por mais que seja uma aplicação simples hoje em dia, sabe?
- 45:09SPEAKER_02: Já é bem definido e não traz custo, sabe?
- 45:12SPEAKER_02: Não é uma coisa que fala assim,
- 45:13SPEAKER_02: olha,
- 45:13SPEAKER_02: se eu seguir isso daqui,
- 45:15SPEAKER_02: eu vou estar impedindo o meu projeto de ser entregue em cinco dias.
- 45:19SPEAKER_02: Não muda nada.
- 45:20SPEAKER_02: Você,
- 45:21SPEAKER_02: sabe,
- 45:22SPEAKER_02: aquela coisa assim,
- 45:22SPEAKER_02: eu criar três,
- 45:23SPEAKER_02: quatro funções não é o que vai atrasar a minha sprint,
- 45:26SPEAKER_02: sabe?
- 45:26SPEAKER_02: Ah, eu vou colocar tudo no arquivo só porque aí eu entrego mais rápido.
- 45:30SPEAKER_02: Não, não existe, sabe?
- 45:31SPEAKER_02: Criar arquivos hoje em dia não tem custo, então... Ainda não tem custo.
- 45:37SPEAKER_02: Ainda não tem custo, né?
- 45:41SPEAKER_02: Pra gente ir encerrando,
- 45:43SPEAKER_02: então,
- 45:43SPEAKER_02: eu não sei se tu quer deixar dicas,
- 45:46SPEAKER_02: livros,
- 45:47SPEAKER_02: enfim,
- 45:48SPEAKER_02: cursos,
- 45:49SPEAKER_02: canais do YouTube pra acompanhar,
- 45:52SPEAKER_02: pra quem quer escrever códigos mais duradouros,
- 45:55SPEAKER_02: quer aprender mais sobre isso.
- 45:57SPEAKER_02: Olha,
- 45:57SPEAKER_02: não sei se eu sou muito bom para dar essas dicas,
- 45:59porque eu costumo ver o pessoal dar muitas referências
- 46:03científicas no assunto.
- 46:04SPEAKER_02: Então,
- 46:04SPEAKER_02: poderia vir aqui e falar dos livros de Design Pattern,
- 46:07SPEAKER_02: Docking Code,
- 46:08SPEAKER_02: Domain Driven Design,
- 46:10SPEAKER_02: todas essas coisas.
- 46:11SPEAKER_02: Só que eu vou te falar bem o que eu acredito hoje.
- 46:13SPEAKER_02: Eu acredito que todo esse material,
- 46:15SPEAKER_02: toda essa literatura,
- 46:17SPEAKER_02: ela tem um valor gigante para te trazer material,
- 46:20SPEAKER_02: para te trazer vocabulário,
- 46:22SPEAKER_02: para te trazer contexto.
- 46:24SPEAKER_02: Só que eu vejo com olhos muito ruins hoje,
- 46:28porque eu passei por isso e eu já fui uma das pessoas que
- 46:31ficava apegada a essas
- 46:33SPEAKER_02: coisas de filosofia,
- 46:34SPEAKER_02: de programação.
- 46:35SPEAKER_02: Então,
- 46:36SPEAKER_02: ficar apegado a uma filosofia,
- 46:37SPEAKER_02: a um padrão,
- 46:38SPEAKER_02: a um autor,
- 46:39SPEAKER_02: eu acho que isso é um negócio que não ajuda.
- 46:41SPEAKER_02: O que ajuda é você destrinchar aquilo e trazer aquilo para a prática.
- 46:45SPEAKER_02: E a minha opinião é que só tem um jeito de você saber fazer,
- 46:49SPEAKER_02: por exemplo,
- 46:50SPEAKER_02: refatoração de código legado.
- 46:52SPEAKER_02: Que é fazendo refatoração de código legado, entendeu?
- 46:55Só tem um jeito de você fazer código que vai durar muito e que
- 47:00tenha tudo isso que
- 47:01SPEAKER_02: a gente falou,
- 47:01SPEAKER_02: que é sustentabilidade,
- 47:03SPEAKER_02: ser muito bem composto,
- 47:04SPEAKER_02: que é você passar pela experiência...
- 47:06SPEAKER_02: de fazer o errado.
- 47:07SPEAKER_02: Então,
- 47:08se você passa pela experiência de fazer um software que ele é
- 47:11tão acoplado a ponto
- 47:13SPEAKER_02: de você sentir a dor de,
- 47:14SPEAKER_02: olha,
- 47:14SPEAKER_02: agora eu queria trocar tal componente e eu não posso.
- 47:17SPEAKER_02: Então,
- 47:18SPEAKER_02: isso te traz,
- 47:19SPEAKER_02: se você,
- 47:19SPEAKER_02: é claro que só isso por si só não ajuda,
- 47:21SPEAKER_02: mas se isso acontecer com você na sua carreira ou num projeto pessoal,
- 47:25SPEAKER_02: numa empresa,
- 47:26SPEAKER_02: e você conseguir usar isso,
- 47:27SPEAKER_02: né,
- 47:28SPEAKER_02: pra te gerar essa reflexão,
- 47:30isso é o que vai fazer com que na próxima vez você consiga
- 47:33saber o que evitar,
- 47:34SPEAKER_02: né.
- 47:34SPEAKER_02: Você saber qual caminho diferente ir.
- 47:37SPEAKER_02: Então não tem atalho, eu acho.
- 47:39SPEAKER_02: Eu acho que eu tento,
- 47:41eu dou aulas e durante as minhas aulas eu tenho uma
- 47:45característica que muita gente
- 47:46SPEAKER_02: gosta.
- 47:47Felizmente a maioria gosta,
- 47:49mas tem uma parcela que não aceita muito bem,
- 47:51que é o seguinte.
- 47:52SPEAKER_02: Eu gosto de solução ruim nas minhas aulas.
- 47:55SPEAKER_02: Então se você fizer meu curso de Python,
- 47:57SPEAKER_02: por exemplo,
- 47:58SPEAKER_02: a gente faz coisas lá que parecem não ter sentido nenhum.
- 48:01a gente começa recriando o nosso framework do zero,
- 48:04desde a primeira linha.
- 48:05SPEAKER_02: Vamos recriar um framework ao invés de usar os que já existem.
- 48:08SPEAKER_02: E aí,
- 48:08SPEAKER_02: a hora que a gente termina esse experimento,
- 48:10SPEAKER_02: eu começo a falar para os alunos assim,
- 48:12SPEAKER_02: ó,
- 48:12SPEAKER_02: tá vendo isso aqui que a gente fez?
- 48:13SPEAKER_02: É uma porcaria.
- 48:14SPEAKER_02: Isso aqui não escala por isso, por isso, por aquilo.
- 48:17SPEAKER_02: Tá vendo isso aqui que a gente fez pra ler variáveis de ambiente?
- 48:20SPEAKER_02: É uma porcaria,
- 48:20SPEAKER_02: tem brecha de segurança aqui,
- 48:21SPEAKER_02: ó.
- 48:22SPEAKER_02: Você vai tá abrindo o seu sistema pra quem tá atacando.
- 48:24SPEAKER_02: Então, é meio que um balde de água fria, sabe?
- 48:27SPEAKER_02: Depois da primeira semana da pessoa que tá ali estudando e aprendendo,
- 48:30SPEAKER_02: ela falou,
- 48:30SPEAKER_02: nossa,
- 48:31SPEAKER_02: fiz o meu framework do zero.
- 48:32SPEAKER_02: E aí você vem e fala assim,
- 48:33SPEAKER_02: olha,
- 48:34eu acho que é muito importante você passar por esse sofrimento
- 48:37que parece mágico,
- 48:38SPEAKER_02: que parece lindo de você fazer as coisas do zero,
- 48:40SPEAKER_02: mas tudo isso tem isso,
- 48:42SPEAKER_02: isso,
- 48:42SPEAKER_02: isso e isso de ruim.
- 48:43SPEAKER_02: É por isso que você vai escolher usar o Django.
- 48:45SPEAKER_02: É por isso que você vai escolher usar o FastAPI.
- 48:47SPEAKER_02: Entendeu?
- 48:48SPEAKER_02: Porque esses problemas já estão resolvidos.
- 48:51SPEAKER_02: Então você abre uma... Você já responde uma questão aí, né?
- 48:54Do tipo assim...
- 48:54Se é tão fácil fazer uma coisa do zero,
- 48:56por que eu não faço?
- 48:57SPEAKER_02: Porque o fácil...
- 48:59SPEAKER_02: Ele é só virtual, né?
- 49:00SPEAKER_02: Só uma coisa que a gente... Esses detalhes é que são complexos.
- 49:03SPEAKER_02: Só que assim,
- 49:04SPEAKER_02: se você não passa por esse problema,
- 49:07SPEAKER_02: se você não passa pela dor de cabeça que é criar algo,
- 49:11SPEAKER_02: ou não só criar,
- 49:12SPEAKER_02: mas lidar com algo que não está bem arquitetado,
- 49:16SPEAKER_02: é muito difícil você conseguir inovar nesse sentido,
- 49:20SPEAKER_02: né?
- 49:20SPEAKER_02: Você conseguir ser criativo para achar soluções.
- 49:22SPEAKER_02: E aí nesse ponto,
- 49:23SPEAKER_02: é claro que você pode pensar,
- 49:24SPEAKER_02: mas nem todo mundo vai conseguir ter a possibilidade de ter esse tipo de
- 49:28SPEAKER_02: experiência,
- 49:28SPEAKER_02: é claro.
- 49:29SPEAKER_02: Mas aí é aquela coisa,
- 49:30a gente tem que se basear nas experiências que já existem e é
- 49:34por isso que existem
- 49:35SPEAKER_02: esses padrões.
- 49:36SPEAKER_02: Solid vem disso,
- 49:37SPEAKER_02: vem de pessoas que sofreram com softwares que não eram,
- 49:40SPEAKER_02: não permitiam ser componíveis.
- 49:43SPEAKER_02: Então vamos lá,
- 49:43SPEAKER_02: vamos criar o conceito de single responsibility,
- 49:47SPEAKER_02: substituição e tudo mais para que agora o software possa ser composto.
- 49:51SPEAKER_02: O clean code
- 49:53vem da experiência de você ver código que é difícil de ler,
- 49:56que é difícil de entender.
- 49:58SPEAKER_02: Então, usar um pouco de tudo isso e fazer aquela coisa, fazer coisas.
- 50:03Fazer coisas que são,
- 50:04em primeira instância,
- 50:05inúteis,
- 50:06mas que te trazem essa bagagem aí.
- 50:09Então,
- 50:10eu acho que essa é a única coisa que eu posso...
- 50:12Não é um livro,
- 50:13sabe?
- 50:14SPEAKER_02: Não é um... É a vida.
- 50:16SPEAKER_02: É, e...
- 50:18Não é só a vida,
- 50:18é tipo assim,
- 50:19colocar a mão no código e fazer as coisas,
- 50:22entendeu?
- 50:23SPEAKER_02: Mesmo que elas sejam ruins.
- 50:24SPEAKER_02: Quanto mais código ruim você faz,
- 50:26SPEAKER_02: mais você melhora o código que você,
- 50:29SPEAKER_02: a próxima vez que você fizer.
- 50:30SPEAKER_02: Então,
- 50:30SPEAKER_02: eu acho que essa,
- 50:31a gente tem uma certa banalização na nossa indústria da palavra
- 50:35experiência,
- 50:36SPEAKER_02: né?
- 50:36SPEAKER_02: Você fala assim,
- 50:37SPEAKER_02: olha,
- 50:37SPEAKER_02: eu trabalho com programação tem,
- 50:39SPEAKER_02: sei lá,
- 50:40SPEAKER_02: oito anos,
- 50:40SPEAKER_02: eu sou um dev experiente.
- 50:42SPEAKER_02: Mas não necessariamente o tempo se traduz em experiência, né?
- 50:45SPEAKER_02: Tipo assim,
- 50:46SPEAKER_02: é muito claro que a experiência depende disso,
- 50:50SPEAKER_02: depende desse transtorno que você viveu,
- 50:53SPEAKER_02: né?
- 50:53SPEAKER_02: Desse incômodo, né?
- 50:56De você estar desconfortável com alguma coisa pra adquirir a
- 50:59experiência com aquilo,
- 51:01né?
- 51:01SPEAKER_02: Então...
- 51:02SPEAKER_02: Basicamente é isso.
- 51:03SPEAKER_02: Não tenha medo de fazer as coisas que são chatas, basicamente.
- 51:07Não tenha medo de enfrentar um código legado e ter que fazer
- 51:11essa refatoração.
- 51:12SPEAKER_02: É a minha dica principal,
- 51:14principalmente para quem está começando e quer aprender a fazer
- 51:16as coisas de um
- 51:17SPEAKER_02: jeito direito.
- 51:17SPEAKER_02: Mas não veja isso como modelo a ser seguido.
- 51:20SPEAKER_02: Veja justamente o contrário.
- 51:21SPEAKER_02: Veja como eu posso fazer melhor do que isso.
- 51:24SPEAKER_02: Essa é a minha mensagem.
- 51:25obrigado aí Bruno pela participação foi muito bom trocar ideia
- 51:29contigo e fica
- 51:30aberto o convite né pra voltar outras vezes boa aí pra quem só
- 51:34tá ouvindo o cara
- 51:35tem uns cinco chapéus vermelhos atrás dele então ele ele condiz
- 51:39com o lugar o
- 51:41SPEAKER_02: plural não é chapéus chapéus ele tem cinco hats ali atrás mais fácil né
- 51:50SPEAKER_02: E são reds.
- 51:52SPEAKER_02: E os teclados também, aqui não dá pra ver, mas tem os teclados lá.
- 51:55SPEAKER_02: Ando testando muitos.
- 51:58SPEAKER_02: Até achar um que eu ainda não achei, um que seja muito bom.
- 52:00SPEAKER_02: Tem um hobby novo aí, além da programação, teclados.
- 52:04SPEAKER_02: O hobby novo é tentar encontrar um teclado que seja perfeito, né?
- 52:08SPEAKER_02: Que não dê dor das mãos.
- 52:10SPEAKER_02: Patrocina o Bruno.
- 52:12SPEAKER_02: Eu tenho ele salvo aqui, mas eu não testei ainda.
- 52:14Eu tenho aqui o Moonlander,
- 52:16eu tenho ali em cima tem o Vortex Core,
- 52:18que é aquele 40%.
- 52:19SPEAKER_02: Quase não tem tecla pra você digitar.
- 52:21SPEAKER_02: Já testei de tudo, cara.
- 52:22SPEAKER_02: Tô tentando achar alguma coisa.
- 52:25SPEAKER_01: Faz um post review no blog lá.
- 52:29Eu ainda tô na esperança de que esses whispers da vida ainda
- 52:32vão resolver o meu problema.
- 52:34SPEAKER_02: Eu só vou simplesmente parar aqui e sair ditando o código, né?
- 52:38SPEAKER_02: Na linha 34, cria uma função com tais parâmetros.
- 52:41SPEAKER_02: E eu já tô testando, ele funciona parcialmente, assim, né?
- 52:45SPEAKER_02: Ainda não é uma experiência super legal, mas quem sabe, né?
- 52:49SPEAKER_02: Deixar de usar o teclado talvez seja o teclado perfeito.
- 52:54SPEAKER_02: Fica a dica, então.
- 52:54SPEAKER_02: Fica a dica, né?
- 53:05Codicom nas redes sociais,
- 53:06assine nossa newsletter e participe dos nossos eventos.
- 53:09SPEAKER_02: Você encontra todos os links no site codicom.dev.
- 53:12SPEAKER_02: Valeu e até a próxima!
- 53:14SPEAKER_02: Valeu!
- 53:22SPEAKER_02: Esse podcast foi editado pela BZT.