<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Henrique Lobo Weissmann (Kico)</title>
    <description>The latest articles on DEV Community by Henrique Lobo Weissmann (Kico) (@loboweissmann).</description>
    <link>https://dev.to/loboweissmann</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F82540%2Fca8681cc-962d-468e-b4a2-2cf8b04e449f.jpg</url>
      <title>DEV Community: Henrique Lobo Weissmann (Kico)</title>
      <link>https://dev.to/loboweissmann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/loboweissmann"/>
    <language>en</language>
    <item>
      <title>Meus primeiros passos com Go (inclui bibliografia comentada)</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 02 Oct 2023 10:34:54 +0000</pubDate>
      <link>https://dev.to/loboweissmann/meus-primeiros-passos-com-go-inclui-bibliografia-comentada-35po</link>
      <guid>https://dev.to/loboweissmann/meus-primeiros-passos-com-go-inclui-bibliografia-comentada-35po</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fkico_e_go.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fkico_e_go.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fiz uma imersão em Go e neste post compartilho com vocês minhas primeiras impressões. Aproveito e também exponho meu plano de estudos que talvez ajude quem estiver dando seus primeiros passos na linguagem.&lt;/p&gt;

&lt;p&gt;Já adianto: por que não fiz esta imersão antes???&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F06%2Falerta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F06%2Falerta.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neste post há minhas &lt;strong&gt;primeiras impressões&lt;/strong&gt; : leia da forma mais crítica possível, ok?&lt;/p&gt;

&lt;h2&gt;
  
  
  Meus objetivos
&lt;/h2&gt;

&lt;p&gt;A plataforma Java não sai de mim e dificilmente sairá, mas há alguns requisitos para os quais ela ainda não é ideal quando precisamos implementar soluções que sejam:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nativas para realizar integrações de mais baixo nível.&lt;/li&gt;
&lt;li&gt;De rápida inicialização (para lambda functions, por exemplo).&lt;/li&gt;
&lt;li&gt;Baixíssimo consumo de memória e recursos computacionais.&lt;/li&gt;
&lt;li&gt;Baseadas em linha de comando (para tooling em alguns de nossos projetos).&lt;/li&gt;
&lt;li&gt;Que possa ser compiladas para diferentes plataformas (embarcados é um plus interessante aqui).&lt;/li&gt;
&lt;li&gt;Se for possível implementar APIs baseadas em HTTP, ótimo (é um plus).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todos os pontos acima consigo hoje na plataforma Java (especialmente após o &lt;a href="https://www.graalvm.org/" rel="noopener noreferrer"&gt;GraalVM&lt;/a&gt;), mas não é natural na plataforma ainda. Então nestes casos buscamos alternativas, dentre as quais uma que se mostrou bastante interessante foi Rust (escrevi a respeito &lt;a href="https://dev.to/loboweissmann/rust-e-eu-como-tem-sido-a-experiencia-e-minha-bibliografia-comentada-4f77"&gt;aqui&lt;/a&gt;). É impossível não fazer comparações com ela neste post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meu plano de estudos
&lt;/h2&gt;

&lt;p&gt;Comecei a imersão definindo os objetivos que me permitiram ter uma visão prática de Go:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O primeiro é escrever uma ferramenta de linha de comando que seja realmente útil para mim. Então criei uma que gera arquivos no formato JSON tendo como entrada algumas planilhas que uso em meu dia a dia.&lt;/li&gt;
&lt;li&gt;O segundo foi escrever uma API REST usando como base de dados os arquivos gerados pelo primeiro projeto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com isto o primeiro objetivo me forneceu a segurança que eu precisaria para poder sair do core da linguagem e, assim, experimentar frameworks e bibliotecas mantidas pela comunidade e assim &lt;strong&gt;sentir&lt;/strong&gt; (friso o termo “sentir” pois são primeiras impressões ainda) como as pessoas lidam com este ecossistema.&lt;/p&gt;

&lt;p&gt;Planejo meus estudos com minha própria metodologia que pode ser lida &lt;a href="https://devkico.itexto.com.br/?p=3093" rel="noopener noreferrer"&gt;neste link&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bibliografia rápida e comentada
&lt;/h3&gt;

&lt;p&gt;Optei por focar na documentação oficial para começar, clicando sobre o link “&lt;a href="https://go.dev/learn/" rel="noopener noreferrer"&gt;Learn&lt;/a&gt;” do site oficial (&lt;a href="https://go.dev" rel="noopener noreferrer"&gt;https://go.dev&lt;/a&gt;). Aqui você verá as três opções expostas no print abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fimage.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fimage.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Meu erro foi ter começado pela documentação (Documentation) e não pelo tour (Tour of Go). Se estiver tendo seu primeiro contato sugiro começar pelo &lt;a href="https://go.dev/tour/welcome/1" rel="noopener noreferrer"&gt;Tour&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Começando pelo Tour of Go – &lt;a href="https://go.dev/tour" rel="noopener noreferrer"&gt;https://go.dev/tour&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Tem a profundidade de uma moeda mas te prepara para dar os primeiros passos na linguagem pois ao contrário da documentação oficial, &lt;strong&gt;é linear.&lt;/strong&gt; É um destes tutoriais interativos nos quais há uma explicação do lado esquerdo e código para você experimentar do lado direito.&lt;/p&gt;

&lt;p&gt;Em aproximadamente uma hora (no máximo duas se você estiver brincando com a linguagem no processo). Recomendo que você faça inteiro (preferencialmente experimentando ao máximo).&lt;/p&gt;

&lt;p&gt;Há tradução para o Português do Brasil, mas se você sabe inglês recomendo que evite esta tradução pois encontrei algumas coisas como as expostas nos prints abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fimage-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fimage-1.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;pode “close”?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fimage-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdevkico.itexto.com.br%2Fwp-content%2Fuploads%2F2023%2F10%2Fimage-2.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;segmento significa “thread”?&lt;/em&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Caminho alternativo ao Tour of Go – vídeo
&lt;/h5&gt;

&lt;p&gt;Não gosto de vídeos para estes primeiros contatos com linguagens mas a documentação oficial indica este vídeo (em inglês) cheio de chavões (musiquinha feliz, introdução enche linguiça…) que talvez possa te ajudar. Não é ruim, mas pessoalmente não gosto (me falta paciência).&lt;/p&gt;

&lt;h4&gt;
  
  
  Indo para a documentação oficial – &lt;a href="https://go.dev/doc/" rel="noopener noreferrer"&gt;https://go.dev/doc/&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Após ter seguido os tutorias básicos (ao menos o interativo) a documentação oficial fornece o aprofundamento que precisava para poder entender os detalhes da linguagem que farão toda a diferença. Seguem aqui então os links da documentação que mais me ajudaram.&lt;/p&gt;

&lt;p&gt;Um dos pontos fotes do Go é o modo como lida com concorrência. Dado que este é apenas seu primeiro contato e os projetos iniciais são bem simples, não irei tocar nestes assuntos (busque por “goroutines” ;) ).&lt;/p&gt;

&lt;h5&gt;
  
  
  O básico sobre módulos
&lt;/h5&gt;

&lt;p&gt;Se você vêm do Java ou .net o conceito de pacotes do Go pode te parecer confuso: não por ser complexo, mas por ser simples. Então leia estes dois links na sequência:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://go.dev/doc/tutorial/getting-started.html" rel="noopener noreferrer"&gt;Tutorial: getting started&lt;/a&gt; – é um Hello World que vai ser usado adiante, faça só pra treinar.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://go.dev/doc/tutorial/create-module" rel="noopener noreferrer"&gt;Tutorial: Create a Go Module&lt;/a&gt; – você vai criar seu primeiro módulo&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://go.dev/doc/tutorial/workspaces" rel="noopener noreferrer"&gt;Getting started with multi-module workspaces&lt;/a&gt; – você definitivamente vai sentir falta de não conhecer o conceito de workspaces do Go quando for implementar seus projetos maiores (sofri um pouco com isto), então preste muita atenção neste link.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Organizando seu código
&lt;/h5&gt;

&lt;p&gt;Você que vêm do Java vai sentir saudades do &lt;a href="https://maven.apache.org" rel="noopener noreferrer"&gt;Maven&lt;/a&gt; em seu primeiro contato. Ao escrever sua primeira aplicação que envolva mais de um arquivo esta saudade irá apertar. Este link (&lt;a href="https://go.dev/doc/code" rel="noopener noreferrer"&gt;How to Write Go Code&lt;/a&gt;) te ensina como seu código fonte deve estar organizado e também tornará mais clara a distinção entre módulo (module) e pacote (package). (um módulo contém pacotes ;) )&lt;/p&gt;

&lt;p&gt;Outro link que vai ajudar é este: &lt;a href="https://go.dev/doc/modules/layout" rel="noopener noreferrer"&gt;Organizing a Go module&lt;/a&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  Effective Go e FAQ
&lt;/h5&gt;

&lt;p&gt;Vai te ajudar bastante também conhecer as convenções adotadas pela linguagem. O link “&lt;a href="https://go.dev/doc/effective_go" rel="noopener noreferrer"&gt;Effective Go&lt;/a&gt;” me ajudou a responder diversas dúvidas simples mas que podem tomar bastante seu tempo, tais como: quando uso ponto e vírgula? Como lido com erros? E estas funções que retornam mais de um valor como resultado?&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://go.dev/doc/faq" rel="noopener noreferrer"&gt;FAQ&lt;/a&gt; também tem coisas úteis. Não acho que você deva lê-lo de cabo a rabo, mas pelo menos dar uma passada de olhos pelo índice já ajuda a descobrir dúvidas que você ainda não sabe que tem.&lt;/p&gt;

&lt;h4&gt;
  
  
  Biblioteca padrão – &lt;a href="https://pkg.go.dev/std" rel="noopener noreferrer"&gt;https://pkg.go.dev/std&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Em diversos momentos você lerá na documentação que a biblioteca padrão é bastante rica e bla bla bla. Então é interessante ver os módulos que compõem a biblioteca pra se ter uma noção do que de fato está ali. E tem coisas &lt;strong&gt;muito legais&lt;/strong&gt; , tais como funções para se gerar HTML, JSON, funções de hash, logging, testes, etc.&lt;/p&gt;

&lt;p&gt;Fica bem claro que é possível, por exemplo, escrever uma aplicação web sem um framework externo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Material para desenvolvimento web
&lt;/h4&gt;

&lt;p&gt;Até este momento tudo o que expus satisfaz o primeiro objetivo do meu plano de estudos. Para o segundo objetivo (a API REST) segue aqui algum material com avisos.&lt;/p&gt;

&lt;h5&gt;
  
  
  Frameworks
&lt;/h5&gt;

&lt;p&gt;Todos que vi até agora achei muito parecidos, me lembrando muito micro frameworks como &lt;a href="https://palletsprojects.com/p/flask/" rel="noopener noreferrer"&gt;Flask&lt;/a&gt;, por exemplo, e pelo que pude aprender até agora todos usam inclusive como base a biblioteca padrão do Go para tal.&lt;/p&gt;

&lt;h6&gt;
  
  
  Gin Web Framework – &lt;a href="https://gin-gonic.com/" rel="noopener noreferrer"&gt;https://gin-gonic.com/&lt;/a&gt;
&lt;/h6&gt;

&lt;p&gt;O framework que adotei para o segundo objetivo foi o Gin e por uma razão bem boba: segui o tutorial que estava presente na própria documentação oficial da linguagem que pode ser acessado neste link: &lt;a href="https://go.dev/doc/tutorial/web-service-gin" rel="noopener noreferrer"&gt;Tutorial: Developing a RESTful API with Go and Gin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A documentação do Gin é péssima, e você pode acessar neste &lt;a href="https://gin-gonic.com/docs/" rel="noopener noreferrer"&gt;link&lt;/a&gt;. Você encontrará um quickstart extremamente básico com um&lt;a href="https://gin-gonic.com/docs/quickstart/" rel="noopener noreferrer"&gt;“hello world”&lt;/a&gt; e não muito mais além disto.&lt;/p&gt;

&lt;p&gt;Infelizmente os autores do framework acreditam que uma boa forma de se ensinar é a partir de exemplos, então você terá de navegar por eles, que podem ser vistos neste &lt;a href="https://gin-gonic.com/docs/examples/" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;h6&gt;
  
  
  Um vídeo interessante
&lt;/h6&gt;

&lt;p&gt;Minha impressão de que os frameworks que vi eram basicamente sempre a mesma coisa se confirmou neste vídeo: &lt;a href="https://www.youtube.com/watch?v=JECZTdEJnOI%20" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=JECZTdEJnOI&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Primeiras impressões
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Ferramentas
&lt;/h2&gt;

&lt;p&gt;Não senti falta de nada e até agora tudo o que usei achei excelente. Tenho usado o VS Code como IDE e os plugins recomendados funcionam perfeitamente.&lt;/p&gt;

&lt;p&gt;Para facilitar minha vida instalei Go usando o asdf com o plugin golang. O Asdf nos permite ter instalações concorrentes de basicamente todas as ferramentas de desenvolvimento que você pode imaginar. Se ainda não conhece, recomendo que leia&lt;a href="https://itexto.com.br/gerencie-todas-ou-quase-ferramentas-de-desenvolvimento-com-asdf/" rel="noopener noreferrer"&gt;este tutorial&lt;/a&gt;que escrevi a respeito no site da itexto.&lt;/p&gt;

&lt;p&gt;As ferramentas de linha de comando do Go nos permitem também fazer tudo o que precisamos é como se o Maven tivesse um filho com o Cargo do Rust:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerenciar dependências (muito parecido com o &lt;a href="https://doc.rust-lang.org/cargo/" rel="noopener noreferrer"&gt;Cargo&lt;/a&gt; do Rust).&lt;/li&gt;
&lt;li&gt;Compilar os projetos (óbvio!)&lt;/li&gt;
&lt;li&gt;Executar testes&lt;/li&gt;
&lt;li&gt;Criar módulos&lt;/li&gt;
&lt;li&gt;Buscar erros no projeto&lt;/li&gt;
&lt;li&gt;Instalar ferramentas adicionais (há várias!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A velocidade do compilador impressiona. É &lt;strong&gt;muito rápido&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A linguagem
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Orientação a objetos?
&lt;/h3&gt;

&lt;p&gt;Aqui percebi que com o tempo realmente fui me tornando uma pessoa viciada em orientação a objetos (Kico de 15 anos atrás olha pra mim e diz: &lt;a href="https://devkico.itexto.com.br/?p=172" rel="noopener noreferrer"&gt;não te disse???&lt;/a&gt;). Go não é orientado a objetos tal como estamos acostumados no caso do Java ou C# por exemplo (&lt;a href="https://www.youtube.com/watch?v=7D1W15cR_Hc" rel="noopener noreferrer"&gt;este vídeo&lt;/a&gt; é interessante).&lt;/p&gt;

&lt;p&gt;Há sim objetos, mas não há classes ou herança: a norma claramente é programação procedural aqui. E sabe de uma coisa? Confesso que senti alívio enquanto escrevia meus mini projetos e via como é possível escrever código muito mais simples para estes contextos (aplicações simples) sem orientação a objetos (o &lt;a href="https://devkico.itexto.com.br/?p=1324" rel="noopener noreferrer"&gt;Kico de dez anos atrás&lt;/a&gt; também me cutucou aqui).&lt;/p&gt;

&lt;p&gt;(Orientação a Objetos não é uma boa prática de desenvolvimento: é um paradigma de programação que tem seu lugar de aplicação. Infelizmente isto não é claro pra muita gente ainda hoje…)&lt;/p&gt;

&lt;p&gt;Há polimorfismo, e o conceito de interfaces aqui é muito interessante. É vista como algo implícito (você não precisa daquelas instruções &lt;code&gt;implements&lt;/code&gt;). &lt;a href="https://devopedia.org/duck-typing#:~:text=Duck%20Typing%20is%20a%20way,methods%2Fattributes%20called%20on%20it." rel="noopener noreferrer"&gt;Duck typing&lt;/a&gt; basicamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simples!
&lt;/h3&gt;

&lt;p&gt;Não é exagero dizer que se você terminar o Tour of Go vai ter o ferramental necessário para implementar tudo o que me propus nesta imersão. A linguagem é realmente &lt;strong&gt;muito simples e torna simples coisas que são complexas em outras.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um modelo de strings simples. Não é algo complicado como o que temos em C ou ainda mais complicado como o que temos em Rust (&lt;a href="https://www.youtube.com/watch?v=CpvzeyzgQdw&amp;amp;t" rel="noopener noreferrer"&gt;este vídeo&lt;/a&gt; sobre strings em Rust é muito útil).&lt;/li&gt;
&lt;li&gt;Você tem ponteiros que são fáceis de entender.&lt;/li&gt;
&lt;li&gt;Um esquema de pacotes e módulos simples de entender (ao contrário do que temos em Rust que apesar de poderoso leva um tempo até pegar o jeito). &lt;/li&gt;
&lt;li&gt;Um modelo de dados muito básico: os tipos numéricos que precisamos (inclusive unsigned, algo que sempre senti muita falta no Java (pense em integrações de baixo nível que você vai me entender), um único tipo de string, structures (que só entraram no Java recentemente), maps, slices (como listas) e ponteiros (que já falei)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A sintaxe também é &lt;strong&gt;muito simples&lt;/strong&gt;. Me lembra Groovy, mas ainda mais simples, o que me leva a outro ponto importante.&lt;/p&gt;

&lt;h3&gt;
  
  
  Curva de aprendizado
&lt;/h3&gt;

&lt;p&gt;Em um dia usando apenas a documentação oficial consegui cumprir os dois objetivos que me propus sem nenhum conhecimento prévio sobre a linguagem. &lt;strong&gt;Importante:&lt;/strong&gt; estou falando &lt;strong&gt;sobre mim, que atuo na área desde 1996 e já passei por diversas linguagens e ambientes de desenvolvimento&lt;/strong&gt; , mas normalmente quando vou aprender algo novo do zero, com o tempo que tenho disponível hoje, leva pelo menos uma semana.&lt;/p&gt;

&lt;p&gt;É impossível para mim não fazer aqui uma comparação com Rust. Não acredito que em uma semana você consiga se tornar realmente produtivo na linguagem, mas com Go, se for para desenvolver inicialmente ferramentas como o primeiro objetivo que me propus, acredito que sim.&lt;/p&gt;

&lt;p&gt;E é muito mais fácil treinar uma equipe em Go que em Rust por outra razão: a simplicidade da documentação também. Experimente tentar aprender Rust pelo material indicado pela comunidade (o livro &lt;a href="https://doc.rust-lang.org/book/" rel="noopener noreferrer"&gt;“The Rust Programming Language”&lt;/a&gt;) e compare com o guia que expus neste post.&lt;/p&gt;

&lt;p&gt;(Antes que chegue um fanático aqui: não estou dizendo que Rust seja ruim, mas sim que sua curva de aprendizado é um problema real)&lt;/p&gt;

&lt;h3&gt;
  
  
  Testes
&lt;/h3&gt;

&lt;p&gt;Assim como Rust, Go também trás as funcionalidades necessárias para que você possa escrever seus testes unitários e integrados. Tem inclusive recursos bem legais como por exemplo a escrita de benchmarks, fuzzing (passagem de valores aleatórios para funções) e algumas outras funcionaliddes.&lt;/p&gt;

&lt;p&gt;Se você ler a documentação oficial encontrará links como este (&lt;a href="https://go.dev/doc/tutorial/add-a-test" rel="noopener noreferrer"&gt;Add a test&lt;/a&gt; no Tutorial dos módulos que indico no início). Mas sabe o que não está incluído nas bibliotecas? Asserções! Você terá de usar projetos &lt;a href="https://github.com/stretchr/testify" rel="noopener noreferrer"&gt;como este&lt;/a&gt; para que sejam incluídas em seus testes.&lt;/p&gt;

&lt;p&gt;Aqui está o &lt;a href="https://pkg.go.dev/testing@go1.21.1" rel="noopener noreferrer"&gt;ink&lt;/a&gt; para a documentação do módulo testing, que é o oficial para a execução de testes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acesso a bases de dados relacionais
&lt;/h3&gt;

&lt;p&gt;Na biblioteca padrão o módulo database (dividido nos pacotes &lt;a href="https://pkg.go.dev/database/sql@go1.21.1" rel="noopener noreferrer"&gt;sql&lt;/a&gt; e &lt;a href="https://pkg.go.dev/database/sql/driver@go1.21.1" rel="noopener noreferrer"&gt;sql/driver&lt;/a&gt;) me chamaram a atenção. Temos ali padronizadas todas as interfaces a serrem seguidas pelos fornecedores de bases de dados relacionais usando um modelo &lt;strong&gt;muito parecido&lt;/strong&gt; com o que temos no JDBC do Java.&lt;/p&gt;

&lt;p&gt;Este é um diferencial importante em relação ao Rust que, até onde sei, ainda não tem algo similar padronizado na própria linguagem. E por que isto é importante? Por que facilita muito a adoção da linguagem no ambiente corporativo no qual não raro o SGBD relacional é Rei.&lt;/p&gt;

&lt;h1&gt;
  
  
  Começando
&lt;/h1&gt;

&lt;p&gt;É raro eu ter uma primeira impressão tão positiva de uma linguagem de programação (a última foi Groovy): não acredito que seja a primeira impressão que fica, mas sim a última, quando os problemas reais vão se mostrando conforme desafios maiores surgem.&lt;/p&gt;

&lt;p&gt;A simplicidade da linguagem associada a uma biblioteca padrão que me fornece tudo o que preciso pra começar a trabalhar, assim como um ferramental que já vêm praticamente pronto após a instalação colocou Go pra mim como uma alternativa muito interessante para os cenários que mencionei no início do post.&lt;/p&gt;

&lt;p&gt;Na minha opinião, quanto menor for o tempo que você tiver para treinar sua equipe em uma linguagem para estes cenários, maior a probabilidade de sua escolha ser Go ao invés de Rust.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=4134" rel="noopener noreferrer"&gt;Meus primeiros passos com Go (inclui bibliografia comentada)&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br" rel="noopener noreferrer"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>go</category>
    </item>
    <item>
      <title>Desenvolvimento Android nativo com Jetpack Compose – Um plano de estudos</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Thu, 08 Jun 2023 23:32:40 +0000</pubDate>
      <link>https://dev.to/loboweissmann/desenvolvimento-android-nativo-com-jetpack-compose-um-plano-de-estudos-10m7</link>
      <guid>https://dev.to/loboweissmann/desenvolvimento-android-nativo-com-jetpack-compose-um-plano-de-estudos-10m7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I49EewAU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/capa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I49EewAU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/capa.jpg" alt="" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma das coisas que mais tenho gostado de estudar atualmente é desenvolvimento nativo para Android com Jetpack Compose. Com alguns projetos em execução e os resultados tem sido incríveis (vou escrever mais sobre isto em breve), mas o processo de aprendizado não tem sido trivial.&lt;/p&gt;

&lt;p&gt;O motivo é irônico: apesar de a documentação oficial do Google ter me parecido &lt;strong&gt;excelente&lt;/strong&gt; , não é claro qual caminho você deve seguir ao navegar por ela. É muito extensa e fácil de você se perder. Tanto que terminei com uma página enorme de links no meu &lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt; (app lindo, experimente) que acabei transformando neste post.&lt;/p&gt;

&lt;p&gt;Meu objetivo é lhe dar os insumos para que você possa começar a desenvolver suas próprias aplicações nativas no Android sem precisar gastar um centavo sequer com cursos (não que estes sejam ruins (muitos são), mas por que para o caminho que vou expor se tornam desnecessários).&lt;/p&gt;

&lt;p&gt;Minha sugestão é que você guarde este post: primeiro o leia do início ao fim e, na sequência, execute os treinamentos que sugiro (todos gratuitos) e guarde os links que cito aqui para que você possa se aprofundar. Muita atenção aos alertas que darei daqui pra frente.&lt;/p&gt;

&lt;p&gt;O primeiro passo é ter a última versão do Android Studio em seu computador. Você pode baixá-lo &lt;a href="https://developer.android.com/studio"&gt;aqui&lt;/a&gt;, e ele é a ferramenta que você precisará para fazer tudo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Este mundo nativo do Android
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gOt1VPcI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/mapa_android-1024x483.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gOt1VPcI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/mapa_android-1024x483.jpg" alt="" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A primeira coisa é saber aonde você está: neste post falo sobre desenvolvimento de aplicações nativas para Android usando Jetpack, que é a abordagem atual recomendada pelo Google para o desenvolvimento de aplicações nativas hoje.&lt;/p&gt;

&lt;p&gt;Isto quer dizer que há dois caminhos a serem seguidos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O desenvolvimento &lt;strong&gt;antes do Jetpack&lt;/strong&gt; : baseado em Views (layout baseado em XML) e Java. &lt;/li&gt;
&lt;li&gt;Desenvolvimento &lt;strong&gt;baseado em Jetpack&lt;/strong&gt; – que é o novo modo recomendado pelo Google para começar novos projetos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você navegar pela &lt;a href="https://developer.android.com/docs"&gt;documentação oficial&lt;/a&gt; do Android hoje este direcionamento para o novo modo de desenvolvimento é claro: está mais difícil encontrar o conteúdo sobre views e Java (vai lá: tenta!).&lt;/p&gt;

&lt;p&gt;Então precisamos começar entendendo o que o Google está chamando de “novo caminho para o desenvolvimento Android”. A primeira mudança radical diz respeito à linguagem de programação.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sai Java, entra Kotlin
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QEVl7q_n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/sai_java_entra_kotlin.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QEVl7q_n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/sai_java_entra_kotlin.jpg" alt="" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ainda é possível usar Java para o desenvolvimento de novas aplicações Android, mas você não conseguirá (ou pelo menos terá muita dificuldade) em usar o Jetpack Compose (que é o novo toolkit gráfico para construção de interfaces gráficas) em seus projetos. Então o primeiro passo aqui é ignorar o Java ( :( ) e partir pro Kotlin.&lt;/p&gt;

&lt;p&gt;Na minha experiência como “javeiro” (desde 1996), as maiores dificuldades podem ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O modo como Kotlin lida com nulidade pra evitar os famigerados NullpointerExceptions da vida. Leva tempo até pegar o jeito da coisa (ao menos pra mim levou (a linguagem deixa bem claro o trauma com estes problemas e realmente é uma solução interessante para a questão gerando código que pode ser bem mais seguro)).&lt;/li&gt;
&lt;li&gt;O uso que a linguagem faz de funções: você não precisa ter classes em um arquivo Kotlin, pode ter só funções. Isto me gerou muito estranhamento. Se você tem uma boa experiência com o conceito de lambdas no Java (a partir do 8) então a coisa vai ser bem mais tranquila.&lt;/li&gt;
&lt;li&gt;A sintaxe: não se iluda achando que “é muito parecida com Java”. É ilusão.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Minha dificuldade só não foi maior devido à minha longa experiência com Groovy. Então aqui seguem os primeiros materiais que sugiro para vocês.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fOEfYJdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/alerta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fOEfYJdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/alerta.png" alt="" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Alguns alertas
&lt;/h4&gt;

&lt;p&gt;Na minha experiência há duas formas de se aprender uma nova linguagem de programação: apanhando e pondo seus clientes em risco ou maximizando seu tempo e minimizando o risco para seus clientes. Opto por falar sobre a segunda alternativa aqui.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nos cursos que cito abaixo, execute-os do início ao fim, sem pular. As aulas muitas vezes são encadeadas: se você ignorar uma delas terá dificuldades em entender o conteúdo posterior.&lt;/li&gt;
&lt;li&gt;No caso dos cursos há exercícios: faça-os. Se não houver, tente reproduzir o código dos instrutores no seu ambiente de desenvolvimento local. Aprendi horrores assim.&lt;/li&gt;
&lt;li&gt;Se você vêm do Java, &lt;strong&gt;não caia na ilusão de que já sabe como os elementos básicos do Kotlin irão funcionar&lt;/strong&gt;. Há diferenças e elas podem te tomar boa parte do seu tempo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cuidado com as traduções do Google&lt;/strong&gt; : vou incluir vários links que direcionam para a documentação oficial do Android e esta normalmente é traduzida, mas em alguns pontos encontrei erros.&lt;/li&gt;
&lt;li&gt;Você não conseguirá fazer muita coisa (se é que conseguirá fazer algo) sem ter noções mínimas de Kotlin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Voltando ao conteúdo sobre Kotlin
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Bootcamp Kotlin para Programadores na Udacity (grautito)&lt;/strong&gt; –&lt;a href="https://www.udacity.com/course/kotlin-bootcamp-for-programmers--ud9011%20"&gt;https://www.udacity.com/course/kotlin-bootcamp-for-programmers–ud9011&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É um treinamento bem interessante: totalmente em inglês. Confesso que minha maior dificuldade foram os instrutores que, apesar de bons, são “divertidos demais” pro meu gosto. Mesmo com este “problema”, foi meu primeiro contato com Kotlin e ajudou &lt;strong&gt;muito&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Se o inglês for um problema, não desanime, há um outro treinamento muito legal também que encontra-se no site do Google e que possui tradução para o português:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treinamento Kotlin para programadores&lt;/strong&gt; – &lt;a href="https://developer.android.com/courses/kotlin-bootcamp/overview"&gt;https://developer.android.com/courses/kotlin-bootcamp/overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É essencialmente o primeiro treinamento, mas com uma vantagem (pra mim): sem os vídeos dos instrutores que mencionei acima.&lt;/p&gt;

&lt;p&gt;Finalmente, há a &lt;strong&gt;documentação oficial da linguagem&lt;/strong&gt; , que também é bem legal como fonte de referência (não é um curso) e pode ser acessada neste link: &lt;a href="https://kotlinlang.org/docs/home.html%20"&gt;https://kotlinlang.org/docs/home.html&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Assuntos que você deve prestar muita atenção:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Coroutines&lt;/strong&gt; – é a solução para programação assíncrona não bloqueante no Kotlin que será &lt;strong&gt;vital&lt;/strong&gt; no desenvolvimento de aplicações Android. Link na documentação oficial: &lt;a href="https://kotlinlang.org/docs/coroutines-overview.html%20"&gt;https://kotlinlang.org/docs/coroutines-overview.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Null safety&lt;/strong&gt; – especialmente você javeiro! Como Kotlin lida com nulidades de forma segura. Link para a documentação oficial: &lt;a href="https://kotlinlang.org/docs/null-safety.html%20"&gt;https://kotlinlang.org/docs/null-safety.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lambdas&lt;/strong&gt; – &lt;a href="https://kotlinlang.org/docs/lambdas.html"&gt;https://kotlinlang.org/docs/lambdas.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data classes&lt;/strong&gt; – a solução para “DTOs” em Kotlin – vai ser muito útil na criação de DTOs, especialmente quando precisar escrever clientes REST. Link para a documentalção oficial: &lt;a href="https://kotlinlang.org/docs/data-classes.html"&gt;https://kotlinlang.org/docs/data-classes.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sealed classes&lt;/strong&gt; – especialmente para você javeiro! Em Kotlin é possível escrever classes que impossibilitem a criação de subclasses. Muito útil. – &lt;a href="https://kotlinlang.org/docs/sealed-classes.html"&gt;https://kotlinlang.org/docs/sealed-classes.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generics em Kotlin&lt;/strong&gt; – &lt;a href="https://kotlinlang.org/docs/generics.html"&gt;https://kotlinlang.org/docs/generics.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Muito além do Android
&lt;/h4&gt;

&lt;p&gt;Houve um momento que me empolguei com Kotlin: foi quando descobri que existe uma versão nativa da linguagem que permite gerar executáveis que não dependem de uma máquina virtual. Trata-se do projeto “ &lt;strong&gt;Kotlin Multiplatform&lt;/strong&gt; ” que permite escrever aplicações para Android (claro), iOS, Windows, Linux, macOS e web. Mais detalhes neste link: &lt;a href="https://kotlinlang.org/lp/multiplatform/"&gt;https://kotlinlang.org/lp/multiplatform/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pode inclusive ser uma alternativa bem interessante ao Rust em alguns cenários (vou escrever sobre isto no futuro, pode aguardar). Bora voltar pro Android?&lt;/p&gt;

&lt;h2&gt;
  
  
  MAD – Modern Android Development
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g_rnY0Rj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/mad.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g_rnY0Rj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/mad.jpg" alt="" width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você encontrará este termo MAD (“MAD Skills” – &lt;a href="https://developer.android.com/modern-android-development?hl=pt-br"&gt;link oficial&lt;/a&gt;) em diversos materiais no site oficial do Android: é este o tal “novo modo” de se desenvolver aplicações. É composto por essencialmente três componentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kotlin ao invés de Java (já falei a respeito).&lt;/li&gt;
&lt;li&gt;O conjunto de bibliotecas Jetpack.&lt;/li&gt;
&lt;li&gt;Compose para interfaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Arquitetura
&lt;/h3&gt;

&lt;p&gt;Antes de pular para o Jetpack e o Compose (que tá dentro do Jetpack :) ) é muito importante que você entenda os conceitos essenciais por trás da arquitetura de uma aplicação Android e, talvez mais importante, conhecer as recomendações dadas pelo Google a respeito.&lt;/p&gt;

&lt;p&gt;Eu sei: há aquela ansiedade em pular no código e escrever as aplicações o mais rápido possível, mas recomendo que você dê uma lida neste material aqui antes. Não precisa se aprofundar: uma leitura rápida inicial já vai servir para que ao menos você entenda os conceitos principais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fOEfYJdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/alerta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fOEfYJdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/alerta.png" alt="" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aviso:&lt;/strong&gt; vale muito à pena investir algum tempo neste ponto. A maior parte das coisas que mencionarei adiante ficarão muito mais claras passando pelo treinamento que menciono a seguir. (nem que seja uma passada rápida pelos textos)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curso Modern Android App Architecture&lt;/strong&gt; – &lt;a href="https://developer.android.com/courses/pathways/android-architecture"&gt;https://developer.android.com/courses/pathways/android-architecture&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Acho muito interessante que você passe por este curso. Nele você vai entender quais as recomendações do Google para que organizemos nosso código de tal forma que obtenhamos projetos que sejam fáceis de serem mantidos no longo prazo (e no curto e médio também) e, talvez mais importante: adquirir vocabulário.&lt;/p&gt;

&lt;p&gt;Pontos que você deve prestar &lt;strong&gt;muita atenção:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entenda as camadas:&lt;/strong&gt; UI (interface gráfica), Data (dados), Domínio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eventos:&lt;/strong&gt; vai te poupar muito tempo em seus primeiros protótipos (quando você topar com situações do tipo “por que meus dados só aparecem quando rotaciono o device?” lembre disto)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estado:&lt;/strong&gt; como a interface mantém o estado (esta é uma das coisas mais difíceis na minha opinião)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O treinamento acima é demais pra você? Tem um caminho um pouco mais curto mas que pode te ajudar também. É este link da documentação: &lt;strong&gt;Guide to app architecture&lt;/strong&gt; – &lt;a href="https://developer.android.com/topic/architecture%20"&gt;https://developer.android.com/topic/architecture&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Jetpack
&lt;/h3&gt;

&lt;p&gt;É o conjunto de bibliotecas desenvolvidas pelo Google com o objetivo de facilitar a vida do desenvolvedor provendo diversas funcionalidades que podem ser aplicadas tanto em novos projetos quanto pré existentes do Android. Cito os que, para o meu caso, tem sido mais importantes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.android.com/jetpack/androidx/releases/room"&gt;Room&lt;/a&gt; – ORM para persistência de dados no SQLite.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.android.com/jetpack/androidx/releases/camera"&gt;Camera&lt;/a&gt; – para lidar com a câmera do celular.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.android.com/jetpack/androidx/releases/navigation"&gt;Navigation&lt;/a&gt; – biblioteca usada para que você possa implementar a navegação de uma forma muito fácil entre as telas da sua aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.android.com/jetpack/androidx/releases/hilt"&gt;Hilt&lt;/a&gt; – uma implementação do padrão de injeção de dependências pra Android (pense no Spring pessoal do Java, mas simplificado)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O perigo aqui é que são &lt;strong&gt;diversas&lt;/strong&gt; bibliotecas, e você não terá tempo hábil para ver todas elas. Então o que recomendo é que você comece pelos links abaixo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting started with Android Jetpack&lt;/strong&gt; – &lt;a href="https://developer.android.com/jetpack/getting-started%20"&gt;https://developer.android.com/jetpack/getting-started&lt;/a&gt;– vai te mostrar como incluir as bibliotecas no seu projeto e também dá uma visão geral sobre o Jetpack. Aproveite e navegue pelos links expostos na barra lateral. Não precisa se aprofundar, apenas leia o que está aqui (é um conteúdo bem pequeno).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Navegue pelas bibliotecas&lt;/strong&gt; – &lt;a href="https://developer.android.com/jetpack/androidx/explorer?case=data"&gt;https://developer.android.com/jetpack/androidx/explorer?case=data&lt;/a&gt; – Para não ficar preso apenas às bibliotecas que mencionei aqui, é legal ver a variedade &lt;strong&gt;incrível&lt;/strong&gt; de bibliotecas liberadas pelo Google. Tem biblioteca pra quase tudo aqui.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dica sobre a documentação das bibliotecas:&lt;/strong&gt; atenção aos links “User Guide” e “Codelab” que aparecem no título de cada biblioteca, tal como no print a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kosAxdjS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/image-1024x266.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kosAxdjS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/image-1024x266.png" alt="" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique nestes links! São cursos muito bons, práticos e que mostram como aplicar a biblioteca de uma forma bem fácil de entender.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sobre Java:&lt;/strong&gt; até onde vi a maior parte das bibliotecas vai funcionar no Java (até por que o Kotlin é compatível), mas nem sempre. O Compose por exemplo não é tão simples assim de ser adotado nesta linguagem. De novo: aprenda Kotlin pra prosseguir, é importante.&lt;/p&gt;

&lt;h3&gt;
  
  
  Links para aprofundamento
&lt;/h3&gt;

&lt;p&gt;Use estes links para se aprofundar em algumas bibliotecas muito importantes do Jetpack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codelab do Room&lt;/strong&gt; – &lt;a href="https://developer.android.com/codelabs/basic-android-kotlin-compose-persisting-data-room"&gt;https://developer.android.com/codelabs/basic-android-kotlin-compose-persisting-data-room&lt;/a&gt; – para você aprender como este ORM opera.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Hilt in your Android app&lt;/strong&gt; – &lt;a href="https://developer.android.com/codelabs/android-hilt"&gt;https://developer.android.com/codelabs/android-hilt&lt;/a&gt; – conforme sua aplicação cresce você uma hora ou outra precisará lidar com a complexidade. E o Hilt como container de injeção de dependências pode ajudar HORRORES.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working with Preferences DataStore –&lt;/strong&gt; &lt;a href="https://developer.android.com/codelabs/android-preferences-datastore#0"&gt;https://developer.android.com/codelabs/android-preferences-datastore#0&lt;/a&gt; – para diversas aplicações o SQLite é mais complexo que o necessário. Se você precisa armazenar apenas informações simples e não tão bem estruturadas, pense no DataStore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testando –&lt;/strong&gt; &lt;a href="https://developer.android.com/training/testing/fundamentals"&gt;https://developer.android.com/training/testing/fundamentals&lt;/a&gt; – é &lt;strong&gt;vital&lt;/strong&gt; que você aprenda a testar seus projetos. Dica: use os testes para aprender as bibliotecas do Jetpack! Vai te poupar muito tempo e é uma ferramenta pedagógica bem interessante.&lt;/p&gt;

&lt;h1&gt;
  
  
  Jetpack Compose
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4TzfQtKe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/jetpack-compose.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4TzfQtKe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/jetpack-compose.jpg" alt="" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deixei meu favorito para o final: a primeira vez que comecei a brincar com o Jetpack Compose foi meu momento “eureka” pro desenvolvimento nativo com Android. Muda bastante o modo como é feita a construção das nossas interfaces gráficas.&lt;/p&gt;

&lt;p&gt;Ah: o Jetpack Compose é o toolkit gráfico usado para criar interfaces para Android nativo.&lt;/p&gt;

&lt;p&gt;Até então nós tínhamos o desenvolvimento do frontend baseado nas Views do Android, que sempre me lembraram muito o &lt;a href="https://learn.microsoft.com/pt-br/dotnet/desktop/wpf/xaml/?view=netdesktop-7.0"&gt;XAML&lt;/a&gt; da Microsoft, o &lt;a href="https://pt.wikipedia.org/wiki/JavaServer_Faces"&gt;JSF&lt;/a&gt; do Java ou mesmo o HTML. Você essencialmente cria suas páginas usando XML ou um editor visual e faz todo o desenvolvimento baseando-se no modelo baseado em eventos (“ao clicar”, “ao pressionar”, etc).&lt;/p&gt;

&lt;p&gt;É um modelo bacana pra se trabalhar: e o fato de existir um editor visual ajuda bastante. Tenho uma notícia ruim aqui: não temos este editor visual com o Compose, mas sim um outro modelo de desenvolvimento, declarativo, baseado em estado “imutável” e muito, muito parecido com o que temos no desenvolvimento com &lt;a href="https://react.dev/"&gt;React&lt;/a&gt; (especialmente o &lt;a href="https://reactnative.dev/"&gt;Native&lt;/a&gt;), &lt;a href="https://flutter.dev/"&gt;Flutter&lt;/a&gt; ou&lt;a href="https://developer.apple.com/xcode/swiftui/"&gt;Swift UI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Se você já tem experiência em qualquer uma destas ferramentas acima o Compose vai te parecer bastante familiar. Aliás, recomendo que você leia este texto (&lt;a href="https://react.dev/learn/thinking-in-react"&gt;Thinking in React&lt;/a&gt;) pois as ideias ali descritas são &lt;strong&gt;muito&lt;/strong&gt; parecidas com as que serão expostas no Jetpack Compose. Não é por acaso que a própria equipe do Google lançou sua “versão” deste texto: Thinking in Compose (&lt;a href="https://developer.android.com/jetpack/compose/mental-model"&gt;https://developer.android.com/jetpack/compose/mental-model&lt;/a&gt;). &lt;strong&gt;Leia antes de começar.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Um bom caminho pra começar são os cursos abaixo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jetpack Compose for Android Developers&lt;/strong&gt; – &lt;a href="https://developer.android.com/courses/jetpack-compose/course"&gt;https://developer.android.com/courses/jetpack-compose/course&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este treinamento é composto por trilhas. Faça ao menos a primeira: &lt;a href="https://developer.android.com/courses/pathways/jetpack-compose-for-android-developers-1"&gt;Compose Essentials&lt;/a&gt;. Você irá adquirir o “feeling” sobre como trabalhar com o Compose para coisas bem simples. Repito: &lt;strong&gt;coisas bem simples.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Na sequência siga para as outras trilhas:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.android.com/courses/pathways/jetpack-compose-for-android-developers-2"&gt;Layouts, Theming and Animation&lt;/a&gt; – aqui você vai aprender como deixar sua aplicação bonita.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.android.com/courses/pathways/jetpack-compose-for-android-developers-3"&gt;Architecture and State&lt;/a&gt; – de longe na minha opinião a &lt;strong&gt;parte mais difícil do aprendizado&lt;/strong&gt;. E aqui você vai me agradecer por ter lhe pedido para que antes de chegar aqui lesse um pouco sobre arquitetura. Você irá aprender como as aplicações gerenciam seu estado (isto é, as “variáveis” por trás de cada view). Faça e refaça quantas vezes for necessário esta trilha até que tudo fique claro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuidado:&lt;/strong&gt; este curso é de 2022 e há alguns pontos desatualizados nele. Especialmente no que diz respeito ao uso do Android Studio.&lt;/p&gt;

&lt;p&gt;É ali que você aprenderá o que são os view models, que são um componente essencial da arquitetura. Se você já conhece o padrão de projeto MVC, pense nos view models como o “Controlador” da história.&lt;/p&gt;

&lt;p&gt;Lembra lá no início quando falei pra você começar pelo Kotlin? Aquele esforço se pagará muito aqui.&lt;/p&gt;

&lt;h2&gt;
  
  
  O “outro” treinamento (o “grandão”)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fOEfYJdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/alerta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fOEfYJdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/06/alerta.png" alt="" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Há um outro treinamento online que você também pode tirar proveito: “ &lt;strong&gt;Android Basics with Compose&lt;/strong&gt; ” –&lt;a href="https://developer.android.com/courses/android-basics-compose/course"&gt;https://developer.android.com/courses/android-basics-compose/course&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este é o treinamento completo: vai desde o básico do Kotlin, passa pelo Compose, lida com as camadas de dados, ensina a fazer requisições à Internet (REST), como lidar com execução em segundo plano e até mesmo como integrar projetos que usam Views (legado) com Compose.&lt;/p&gt;

&lt;p&gt;Se você tiver muita paciência e seguir apenas este treinamento já te dá um belo passo a frente. Por que não falei dele antes? Por que quis te dar alternativas. Pense neste como o “resumão da obra”.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conteúdo adicional sobre o Compose
&lt;/h2&gt;

&lt;p&gt;Se você realizou o treinamento acima vai ser importante você se aprofundar em alguns temas. Seguem aqui mais alguns links para que você possa se aprofundar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codelab do Navigation&lt;/strong&gt; – &lt;a href="https://developer.android.com/codelabs/android-navigation"&gt;https://developer.android.com/codelabs/android-navigation&lt;/a&gt; – para que você possa se focar neste ponto que é muito importante.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Material Components and Layouts –&lt;/strong&gt; &lt;a href="https://developer.android.com/jetpack/compose/layouts/material"&gt;https://developer.android.com/jetpack/compose/layouts/material&lt;/a&gt; – Material é a linguagem de design do Google, e neste link você irá aprender a como começar a tirar proveito dele. Muita atenção ao uso do “scaffolding”, que pode poupar MUITO tempo no desenvolvimento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ViewModel Overview&lt;/strong&gt; – &lt;a href="https://developer.android.com/topic/libraries/architecture/viewmodel"&gt;https://developer.android.com/topic/libraries/architecture/viewmodel&lt;/a&gt; – digo e repito: minha maior dificuldade foi entender o conceito de estado em aplicações Android. Quanto mais você ler sobre o ViewModel, melhor. E este texto pode te ajudar a entender os conceitos por trás deste elemento.&lt;/p&gt;

&lt;h1&gt;
  
  
  E isto é só o começo
&lt;/h1&gt;

&lt;p&gt;Espero que este guia lhe seja útil tal como tem sido para mim e nossa equipe. De tempos em tempos voltarei a este post para atualizar os links caso mudem ou para adicionar mais conteúdos.&lt;/p&gt;

&lt;p&gt;E meus próximos posts aqui serão sobre como tem sido nossa experiência no desenvolvimento deste tipo de aplicação e por que tem nos parecido tão interessante. Até lá!&lt;/p&gt;

&lt;h2&gt;
  
  
  PS: “one more thing”
&lt;/h2&gt;

&lt;p&gt;Lembra quando mencionei o “Kotlin Multiplatform”? Então: existe também o Compose Multiplatform, que permite usar a mesma base de código para Android, iOS, desktop e web. Ainda em desenvolvimento, mas &lt;strong&gt;bastante&lt;/strong&gt; promissor. &lt;a href="https://www.jetbrains.com/lp/compose-multiplatform/%20"&gt;https://www.jetbrains.com/lp/compose-multiplatform/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=4113"&gt;Desenvolvimento Android nativo com Jetpack Compose – Um plano de estudos&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>android</category>
      <category>jetpack</category>
      <category>compose</category>
    </item>
    <item>
      <title>Eu e o “Clean Code” – Parte 4: Fim da Leitura</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Wed, 24 May 2023 21:09:29 +0000</pubDate>
      <link>https://dev.to/loboweissmann/eu-e-o-clean-code-parte-4-fim-da-leitura-g56</link>
      <guid>https://dev.to/loboweissmann/eu-e-o-clean-code-parte-4-fim-da-leitura-g56</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A7kTcm25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/fechando_clean_code.jpg%3Fresize%3D800%252C473%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A7kTcm25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/fechando_clean_code.jpg%3Fresize%3D800%252C473%26ssl%3D1" alt="" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente estou fechando esta série de posts sobre o livro “Código Limpo”: agora finalmente escrevo minhas impressões finais sobre a leitura e tudo o que envolve este texto.&lt;/p&gt;

&lt;p&gt;Para ter uma visão completa sobre o que estou falando recomendo que você leia as três primeiras partes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/loboweissmann/eu-e-o-codigo-limpo-o-livro-parte-1-catequizacao-ia3"&gt;Eu e o Clean Code – Parte 1: Catequese&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/loboweissmann/eu-e-o-clean-code-parte-2-descompilando-4550"&gt;Eu e o Clean Code – Parte 2: Descompilando&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/loboweissmann/eu-e-o-clean-code-parte-3-o-nefasto-capitulo-sobre-comentarios-2if2"&gt;Eu e o Clean Code – Parte 3: O Nefasto Capítulo sobre Comentários&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Minha própria estratégia narrativa
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--24pf5n0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/kico_se_apontando.jpg%3Fresize%3D800%252C500%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--24pf5n0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/kico_se_apontando.jpg%3Fresize%3D800%252C500%26ssl%3D1" alt="" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Falei tanto sobre a estratégia narrativa do Robert Matin, então pra começar entrego aqui a minha: meu objetivo nesta série foi mostrar alguns aspectos relacionados tanto à escrita do livro quanto ao que ocorre ao seu redor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Por que acredito que há uma postura dogmática em relação ao que ali é escrito (primeira parte).&lt;/li&gt;
&lt;li&gt;Em que medida o autor pode ser responsável por este comportamento dogmático (segunda parte).&lt;/li&gt;
&lt;li&gt;Expor a linguagem tóxica presente no texto original. Faço isto mostrando a construção de uma figura de autoridade na segunda parte e apresentando de forma explícita como esta toxicidade se manifesta na terceira parte quando disseco o quarto capítulo (“Comentários”).&lt;/li&gt;
&lt;li&gt;Deixar bem claro que há não um livro “Código Limpo”, mas vários: o original e as inúmeras versões alternativas do texto que se manifestam a partir dos comentários que são publicados a seu respeito em todo lugar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comecei mostrando o elefante branco que estava na sala, na sequência apontei o dedo para a linguagem exposta no texto e pra finalizar mostrei aonde a estratégia tóxica do texto aparece de forma mais explícita no livro (clássico mineiro comendo pelas beiradas).&lt;/p&gt;

&lt;p&gt;Agora rasgo o verbo dizendo o que penso sobre o livro.&lt;/p&gt;

&lt;h2&gt;
  
  
  Código bem escrito é uma coisa e “Código Limpo” outra
&lt;/h2&gt;

&lt;p&gt;Apesar da expressão “Código Limpo” fazer uma referência a código bem escrito acho importante tornar clara uma diferença aqui: quando usamos o termo “Código Limpo” estamos nos referindo ao livro “Clean Code” e a &lt;a href="http://cleancoder.com/products"&gt;todos os produtos que Robert Martin&lt;/a&gt; vende (tem até logotipo).&lt;/p&gt;

&lt;p&gt;É um fenômeno muito similar ao que ocorre quando nos referimos a palha de aço como “Bom Bril”, por exemplo. Acho isto ruim pois na prática acabamos por fazer marketing gratuito ao referenciarmos algo que deveria não estar ligado a uma pessoa/empresa, mas a uma área: estratégias para a escrita de código bem feito.&lt;/p&gt;

&lt;p&gt;As práticas descritas no livro não são invenção de seus autores (leia a &lt;a href="https://dev.to/loboweissmann/eu-e-o-codigo-limpo-o-livro-parte-1-catequizacao-ia3"&gt;parte um&lt;/a&gt; para entender este plural), mas hábitos que já existiam e foram documentados por outros autores (veja na terceira parte quando mostro que o Capítulo 4 possui uma versão anterior “atóxica” escrita por Steve McConnell no Code Complete anos antes).&lt;/p&gt;

&lt;p&gt;Aqui entra então um problema que o sucesso do livro trouxe: esta confusão de termos e a personalização de práticas.&lt;/p&gt;

&lt;p&gt;Sendo assim daqui pra frente quando eu disser “Clean Code” ou “Código Limpo” me refiro ao livro, não a código bem escrito.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nem todo código bem escrito segue a cartilha de “Código Limpo”
&lt;/h2&gt;

&lt;p&gt;Apesar de ter achado o vídeo “&lt;a href="https://www.youtube.com/watch?v=tD5NrevFtbU"&gt;Clean Code Terrible Performance&lt;/a&gt;” do Casey Muratory (há um texto dele também que pode ser lido &lt;a href="https://www.computerenhance.com/p/clean-code-horrible-performance"&gt;aqui&lt;/a&gt;) muito tendencioso (merece um post a parte) amei o fato de ter vindo à tona e, de um certo modo, foi o pontapé que eu precisava pra finalmente escrever esta série de posts.&lt;/p&gt;

&lt;p&gt;Apesar dos pesares foi levantado um fato muito importante ali: seu código não deve obrigatoriamente seguir o que está sendo dito em um livro apenas pelo fato de… estar em um livro muito conhecido e recomendado. E este talvez seja o único ponto no qual concordo 100% com Casey Muratory apesar dele não dizer isto de forma explícita em seu material.&lt;/p&gt;

&lt;p&gt;Por que o termo “princípio” que é aplicado às técnicas apresentadas no “Código Limpo” é uma aberração e acredito que nos trouxe sérios problemas. Usamos o termo “princípio” para denotar ou o início de algo ou a &lt;strong&gt;base&lt;/strong&gt; para a construção de alguma coisa (há inclusive uma conotação moral aqui – veja o que falo a respeito na &lt;a href="https://dev.to/loboweissmann/eu-e-o-clean-code-parte-2-descompilando-4550"&gt;segunda parte&lt;/a&gt; da série).&lt;/p&gt;

&lt;p&gt;Observe os resultados que aparecem pra mim ao buscar “Princípios do Clean Code” no Google:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bh0DblLo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/busca_principios_clean_code_google.jpg%3Fresize%3D775%252C776%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bh0DblLo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/busca_principios_clean_code_google.jpg%3Fresize%3D775%252C776%26ssl%3D1" alt="" width="775" height="776"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O último resultado grita para mim: &lt;em&gt;“quais são as &lt;strong&gt;boas práticas de programação?&lt;/strong&gt; “&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Em diversos artigos (como &lt;a href="https://www.linkedin.com/pulse/clean-code-%C3%A9verton-toffanetto/?trk=public_post"&gt;este&lt;/a&gt; no LinkedIn) “Clean Code” é descrito como: &lt;em&gt;“conjunto de práticas recomendadas para a escrita de código considerado ‘limpo'”&lt;/em&gt;. Há um problema sério aqui que é o seguinte:&lt;/p&gt;

&lt;p&gt;uma “boa prática” só faz sentido quando é &lt;strong&gt;adequada&lt;/strong&gt; ao &lt;strong&gt;contexto&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;E apesar de no próprio livro os autores mostrarem o contexto em que suas refatorações são aplicadas, na prática o que vemos é as mesmas serem aplicadas como princípios. Aliás… o termo “prática” também acho ruim. Um termo muito melhor na minha opinião é “estratégia” pois já trás em si implícita e explicitamente a necessidade de um contexto.&lt;/p&gt;

&lt;p&gt;E vou além: a partir do momento em que o termo “princípio” se popularizou também se cria a impressão de que no “Código Limpo” estão todas as estratégias possíveis para se escrever bom código. Ignora-se todos os livros que cito na primeira parte desta série e que listo aqui de novo:&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;Code Complete – Steve McConnellA Philosophy of Software Design – John OusterhoutTrabalho Eficaz com Código Legado – Michael FeathersThe Pragmatic Programmer – Andrew Hunt e David ThomasBeautiful Code – Andy Oram e Greg WilsonRefatoração – Martin Fowler (aqui tenho várias críticas, mas é um bom livro)The Practice of Programming – Brian Kernighan e Rob Pike (yeap: o “cara” do C e do Go)Os padrões definidos pela sua linguagem (ou linguagens) de programação e sua documentação oficial.Livros sobre a linguagem de programação também costumam expor boas práticas.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Resumindo: “Código Limpo” é apenas um pequeno conjunto de estratégias que só devem ser usadas quando o contexto realmente é o adequado.&lt;/p&gt;

&lt;h2&gt;
  
  
  A responsabilidade do autor
&lt;/h2&gt;

&lt;p&gt;Um dos comentários que recebi é de uma riqueza imensa e me fez pensar bastante:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W1e3cCD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/image-7.png%3Fresize%3D844%252C525%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W1e3cCD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/image-7.png%3Fresize%3D844%252C525%26ssl%3D1" alt="" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;cite&gt;Wellington, na &lt;a href="https://dev.to/loboweissmann/eu-e-o-clean-code-parte-3-o-nefasto-capitulo-sobre-comentarios-2if2"&gt;terceira parte&lt;/a&gt; da série&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Como alguém que já viu a própria toxicidade gerar efeitos terríveis me senti muito seguro em responder o Wellington. Autores (geradores de conteúdo em geral) acabam construindo fama, autoridade e se tornando modelos para outras pessoas, especialmente aqueles que estão dando seus primeiros passos.&lt;/p&gt;

&lt;p&gt;E faz parte da civilidade saber dar feedbacks que não sejam agressivos, mas honestos, especialmente para aqueles que ainda estão construindo a própria segurança. Quem está começando aprende com quem tem mais experiência, é assim que funcionamos.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://pt.wikipedia.org/wiki/Immanuel_Kant"&gt;Kant&lt;/a&gt; descreve este aprender pelo exemplo como imperativo categórico (eu tinha de meter um filósofo aqui, né?))&lt;/p&gt;

&lt;p&gt;E este livro é normalmente oferecido a iniciantes, que por sua vez tem a tendência de seguirem o exemplo dos mais experientes (no caso o autor) e, com isto, podem perpetuar posturas que, apesar de carismáticas, são ruins. O Wellington concordou comigo depois (aliás, foi uma bela conversa ali).&lt;/p&gt;

&lt;h2&gt;
  
  
  Fechando o livro
&lt;/h2&gt;

&lt;p&gt;Concluindo: ainda acho que todo mundo deveria ler este livro aqui no Brasil pela sua importância e influencia, mas não pela sua qualidade.&lt;/p&gt;

&lt;p&gt;(pessoalmente o único capítulo que gosto é o segundo – “Nomes Significativos”, escrito pelo Tim Ottinger)&lt;/p&gt;

&lt;p&gt;O grande mérito do livro foi ter criado toda esta excitação em relação à escrita de código bem escrito, entretanto do ponto de vista cultural o considero um desastre pelas razões que expus em toda esta série e finalizei neste post.&lt;/p&gt;

&lt;p&gt;E agora vocês sabem o que digo presencialmente a todos aqueles a quem indico a leitura deste livro.&lt;/p&gt;

&lt;h2&gt;
  
  
  PS:
&lt;/h2&gt;

&lt;p&gt;O José Yoshiriro (tivemos uma discussão bem acalorada nos comentários) escreveu &lt;a href="https://www.casadocodigo.com.br/products/livro-deixe-seu-codigo-limpo"&gt;um livro&lt;/a&gt; sobre Clean Code publicado recentemente na Casa do Código.&lt;/p&gt;

&lt;p&gt;Ele havia me pedido para lhe dar minha opinião sobre o mesmo durante a escrita. Na época lhe disse que não via sentido no livro por que era mais jogo ler o original. Yoshiriro, eu tava errado!&lt;/p&gt;

&lt;p&gt;O fato de você ter escrito um livro sobre o mesmo assunto mas com uma linguagem bem melhor é uma excelente razão para que as pessoas o leiam ao invés do Código Limpo original.&lt;/p&gt;

&lt;p&gt;Além do Yoshiriro o Alexandre Aquiles escreveu um &lt;a href="https://www.casadocodigo.com.br/products/livro-desbravando-solid"&gt;livro sobre SOLID&lt;/a&gt; também pela mesma editora. Apesar de ter duas cópias impressas do livro (uma delas o Alexandre me deu de presente) até hoje não consegui ler, mas também recomendo a leitura pois tenho certeza que a linguagem é muito boa.&lt;/p&gt;

&lt;h2&gt;
  
  
  PS 2:
&lt;/h2&gt;

&lt;p&gt;São estratégias, não princípios!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=4099"&gt;Eu e o “Clean Code” – Parte 4: Fim da Leitura&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>livros</category>
      <category>codigolimpo</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>Eu e o Clean Code – Parte 3 – O Nefasto Capítulo sobre Comentários</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Sun, 14 May 2023 13:28:00 +0000</pubDate>
      <link>https://dev.to/loboweissmann/eu-e-o-clean-code-parte-3-o-nefasto-capitulo-sobre-comentarios-2if2</link>
      <guid>https://dev.to/loboweissmann/eu-e-o-clean-code-parte-3-o-nefasto-capitulo-sobre-comentarios-2if2</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MwGjRxeb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/cover_cap_4.jpg%3Fresize%3D805%252C384%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MwGjRxeb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/cover_cap_4.jpg%3Fresize%3D805%252C384%26ssl%3D1" alt="" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente começo a comentar alguns dos capítulos do “Código Limpo” mais a fundo contando minhas experiências a respeito. O termo “experiência” aqui é o mais adequado pois vou falar sobre os efeitos que vi do capítulo 4 (“Comentários”) do livro em pessoas com quem trabalhei, projetos nos quais atuei e histórias que chegaram a mim.&lt;/p&gt;

&lt;p&gt;O termo “Nefasto” também foi bem pensado: na minha experiência este é um dos textos que mais problemas trouxe para a nossa área.&lt;/p&gt;

&lt;p&gt;A ideia essencial por trás deste capítulo é que os comentários são um mal necessário e que só existem por que não conseguimos nos expressar de forma clara através do nosso código. Com o tempo as pessoas foram percebendo que esta é na realidade uma ideia muito ruim, inclusive seus mais ardorosos defensores criaram um novo termo: “comentários estratégicos”.&lt;/p&gt;

&lt;p&gt;Então neste post vou primeiro analisar como o texto é escrito e depois apresentar minhas próprias ideias sobre o tema baseadas em outros autores que li e minhas próprias experiências.&lt;/p&gt;

&lt;h3&gt;
  
  
  Alguns avisos
&lt;/h3&gt;

&lt;p&gt;Aqui falo sobre a tradução do livro “Clean Code” para o português feito pela editora Alta Books. Para esta análise não levo em consideração o texto original.&lt;/p&gt;

&lt;p&gt;Esta terceira parte é fundamentada no que apresento nas duas primeiras desta série nas quais analiso o modo como o texto é escrito e como, acredito, este gera comportamentos exageradamente exaltados em parte dos seus leitores. Caso não as tenha lido e se interesse, seguem os links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/loboweissmann/eu-e-o-codigo-limpo-o-livro-parte-1-catequizacao-ia3"&gt;Parte 1 – Catequização&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/loboweissmann/eu-e-o-clean-code-parte-2-descompilando-4550"&gt;Parte 2 – Descompilando&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Não se exalte nos comentários deste blog. Ele é meu, pessoal, e bloqueio quem eu quiser. Todos são bem vindos para discutir, mas ninguém é obrigado a ler tratados e comentários agressivos aqui.&lt;/p&gt;

&lt;p&gt;Tal como nos outros textos não quero estar certo, mas levantar uma discussão para que seja possível termos uma leitura mais crítica e rica do texto e crescer neste assunto.&lt;/p&gt;

&lt;p&gt;Este não é um texto sobre política (mas toca no tema (contraditório hein? (é))).&lt;/p&gt;

&lt;h2&gt;
  
  
  Em 2000 eu trabalhava em uma livraria…
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iPM0Ig5o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/livraria_travessa.jpg%3Fresize%3D832%252C315%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iPM0Ig5o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/livraria_travessa.jpg%3Fresize%3D832%252C315%26ssl%3D1" alt="" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com 21 anos tive meu primeiro emprego que achava realmente “sério”: trabalhava como vendedor (“livreiro”) na Livraria da Travessa em Belo Horizonte, que era focada em livros da área de Ciências Humanas. Foi um período importantíssimo para minha formação pois tive contato com diversos autores que me forjaram e alguns que me enganaram.&lt;/p&gt;

&lt;p&gt;Dentre os autores que me enganaram havia um em especial que me seduziu inicialmente pelo comportamento dos seus leitores. Eles chegavam a mim desconfiados, falando baixo, olhando para os lados com medo de serem vistos pedindo seus livros. Diziam que era alguém com opiniões muito fortes e que tecia críticas ferozes aos intelectuais e mídia da época.&lt;/p&gt;

&lt;p&gt;(eu sempre achava que estes leitores iam me pedir algum livro pornográfico e ficava decepcionado depois quando descobria o que realmente queriam…)&lt;/p&gt;

&lt;p&gt;Eu tinha 21 anos, não sabia nada da vida (ainda não sei) e alguém que xingava só podia ser coisa boa. Li alguns dos seus textos naquela época e o achei realmente brilhante. Era cativante por que o modo como criticava o mundo me fazia sentir que eu era parte de um grupo seleto que agora via as coisas “como realmente eram”.&lt;/p&gt;

&lt;p&gt;No ano seguinte entrei para o curso de Filosofia e tive contato com outros autores, foi quando resolvi reler o tal autor de forma mais atenta e fiquei chocado com a quantidade de bobagens e absurdos que este dizia de forma tão sedutora. Era absurdo: escrevia sobre Aristóteles, por exemplo, como se fosse um expert, mas nunca o havia lido no original (neste caso é necessário), relativizava escravidão e, no final das contas era só um infeliz cuja escrita exteriorizava suas próprias frustrações e alimentava o ressentimento alheio.&lt;/p&gt;

&lt;p&gt;(Quem não tem frustrações? Quem não se sente confortado ao ver alguém atacando a fonte de nossos ressentimentos?)&lt;/p&gt;

&lt;p&gt;E esta sensação de desconstrução da genialidade (aka “perceber que era uma grande bobagem que havia me iludido”) que tive ao ler atentamente este autor e a postura de diversos dos seus leitores que se mostraram pessoas fanatizadas com o tempo (“catequizadores”) me lembram muito a minha experiência com o texto do capítulo “Comentários”. O autor a que me refiro foi o Olavo de Carvalho.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OuRB3DGS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/olavo_uncle_bob.jpeg%3Fresize%3D560%252C384%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OuRB3DGS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/olavo_uncle_bob.jpeg%3Fresize%3D560%252C384%26ssl%3D1" alt="" width="560" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minha primeira impressão sobre este capítulo foi tão positiva que em 2016 escrevi neste blog sobre o assunto e ao final recomendava este texto. Duvida? Aqui o &lt;a href="https://devkico.itexto.com.br/?p=2490"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A ideia de que eu só escrevia comentários por que meu código não era claro o suficiente foi por um tempo inclusive um incentivo para que eu escrevesse código mais fácil de ser mantido. Entretanto com o tempo ficou claro que a questão era bem mais profunda e muito mais rica.&lt;/p&gt;

&lt;h3&gt;
  
  
  Um aviso sobre olavo de carvalho
&lt;/h3&gt;

&lt;p&gt;Apesar de ter comparado Robert Martin a Olavo de Carvalho este texto não é sobre Olavo de Carvalho.&lt;/p&gt;

&lt;p&gt;As similaridades acabam nos pontos que mencionei (a constatação de que o capítulo sobre Comentários não era genial, mas tóxico e parte dos seus leitores que se tornaram catequizadores). Robert Martin não tem um passado tão terrível quanto carvalho, nem disseminou desinformação (até onde sei) durante a pandemia, o que pode ter causado a morte de pessoas (no caso do Brasil, &lt;strong&gt;muita gente&lt;/strong&gt; ).&lt;/p&gt;

&lt;p&gt;Robert Martin deixará um legado positivo, ao contrário de carvalho (mesmo tendo escrito este capítulo sobre o qual escrevo).&lt;/p&gt;

&lt;p&gt;(e eu não vou aceitar comentários sobre carvalho neste blog (é meu, aceito o que quiser aqui))&lt;/p&gt;

&lt;h1&gt;
  
  
  De qual Código Limpo estou falando?
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NNATiPpU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/codigo_limpo_alternativo.jpg%3Fresize%3D790%252C560%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NNATiPpU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/codigo_limpo_alternativo.jpg%3Fresize%3D790%252C560%26ssl%3D1" alt="" width="790" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tal como disse no primeiro post da série há claramente duas versões do livro: a oficial e a não oficial. A segunda diz respeito aos comentários e diversas interpretações ao texto que, neste caso, mudam bastante o significado do que está na versão oficial.&lt;/p&gt;

&lt;p&gt;Aqui falo da versão oficial e, tal como dito na introdução, da tradução para o português feita pela editora Alta Books. Mas vou contar mais adiante uma história que me aconteceu relativa à versão “alternativa” do livro.&lt;/p&gt;

&lt;h1&gt;
  
  
  Construção do argumento
&lt;/h1&gt;

&lt;p&gt;O início do capítulo é o momento em que o autor nos seduz para concordarmos com seu argumento usando as estratégias que já vimos nas primeiras duas partes: metáforas morais, expressões controversas e um claro apelo à emoção.&lt;/p&gt;

&lt;p&gt;Logo no início o leitor será induzido a ter uma percepção negativa sobre comentários e isto fica bem claro nas citações que trago abaixo, presentes logo no começo do capítulo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Nada pode ser tão prejudicial quanto um velho comentário mal feito que dissemina &lt;strong&gt;mentiras&lt;/strong&gt; e &lt;strong&gt;informações incorretas”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert C. Martin – primeiro parágrafo do capítulo – já começa com metáforas morais&lt;/cite&gt;&lt;/p&gt;

&lt;p&gt;“Comentários não são como a Lista de Schindler. Não são o “bom puro”. De fato, eles são, &lt;strong&gt;no máximo, um mal necessário&lt;/strong&gt;.”&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert C. Martin – segundo parágrafo do capítulo – (aqui se vê problemas na tradução inclusive). Observe o apelo á emoção na referência ao filme.&lt;/cite&gt;&lt;/p&gt;

&lt;p&gt;“O uso adequado de comentários é compensar &lt;strong&gt;nosso fracasso&lt;/strong&gt; em nos expressar no código”&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert C. Martin – terceiro parágrafo do capítulo – (discordo muito sobre isto e falarei mais adiante) (de novo, repare que tradução ruim na colocação dos termos)&lt;/cite&gt;&lt;/p&gt;

&lt;p&gt;“Por que eu não gosto de comentários? &lt;strong&gt;Porque eles mentem&lt;/strong&gt; “&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert C. Martin – quinto parágrafo do texto. Atenção para o uso de metáfora moral tal como aponto na &lt;a href="https://dev.to/loboweissmann/eu-e-o-clean-code-parte-2-descompilando-4550"&gt;segunda parte&lt;/a&gt; desta série.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Mesmo quando vai falar sobre quando comentários são positivos, o autor nos solta um…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Tenha em mente, contudo, que o único comentário verdadeiramente bom é aquele em que você encontrou uma forma para não escrevê-lo”&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert C. Martin – primeiro parágrafo da seção “Comentários Bons” do capítulo. Novamente, atenção para a má tradução da seção e até mesmo o mal gosto da expressão usada pelo autor.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Na sequência o autor vai expor o que considera serem comentários válidos: observe que interessante.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Informações legais – comentários sobre licença de uso, por exemplo.&lt;/li&gt;
&lt;li&gt;Comentários informativos (no texto é propositalmente vago o que ele chama de “comentários informativos”).&lt;/li&gt;
&lt;li&gt;Explicitação da intenção (a maior parte dos comentários na realidade é a explicitação da intenção).&lt;/li&gt;
&lt;li&gt;Esclarecimentos.&lt;/li&gt;
&lt;li&gt;Alertas sobre consequências.&lt;/li&gt;
&lt;li&gt;TODOs.&lt;/li&gt;
&lt;li&gt;Destaques.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Observe que são tipos de comentários realmente super válidos, mas sabe o que é interessante? Na tradução para o português é gasto o &lt;strong&gt;dobro de páginas&lt;/strong&gt; para falar sobre comentários ruins.&lt;/p&gt;

&lt;p&gt;É interessante observar a linguagem adotada pelo autor na descrição dos comentários ruins: é muito parecida com aquela adotada por pessoas que agridem seus colegas (normalmente iniciantes) em seus code reviews. Vamos a um exemplo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Às vezes você vê comentários que nada são além de “chiados”. Eles dizem o óbvio e não fornecem novas informações:&lt;/p&gt;

&lt;p&gt;/**&lt;br&gt;&lt;br&gt;
Default constructor&lt;br&gt;&lt;br&gt;
*/&lt;br&gt;&lt;br&gt;
protected AnnualDateRule() {&lt;br&gt;&lt;br&gt;
}&lt;br&gt;&lt;br&gt;
Ah, &lt;em&gt;sério&lt;/em&gt;? Ou este:&lt;br&gt;&lt;br&gt;
/** Dia do mês */&lt;br&gt;&lt;br&gt;
private int dayOfMonth;&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert C. Martin – Capítulo 4 – Seção comentários ruidosos. Grifo do autor.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Consigo imaginar um leitor neste momento me questionando: “&lt;em&gt;Kico, sério? Isto aí que você está falando é mimimi!!!&lt;/em&gt;” ( &lt;strong&gt;detesto&lt;/strong&gt; a expressão “mimimi”). Respondo: sério. Na minha experiência um dos maiores danos que você pode causar a quem está iniciando é justamente este tipo de linguagem em um code review.&lt;/p&gt;

&lt;p&gt;Mas aqui há uma razão para tal: faz parte da estratégia do autor de conquistar o leitor pela rabugice e ridicularização tóxica de erros muito comuns por quem está começando (o que gera a sensação de pertencimento a um grupo seleto de seus leitores). Há personagens que usam a mesma estratégia para conquistar o espectador: Dr. House, Chefe Ramsay, juízes cruéis de reality shows, Steve Jobs…&lt;/p&gt;

&lt;p&gt;(a glamorização do babaca)&lt;/p&gt;

&lt;p&gt;Se você já tem muitos anos de experiência, tal como eu, talvez tenha se esquecido que quando começou os comentários muito provavelmente eram o que te ajudavam a ter segurança nos seus primeiros códigos. Atacar esta “muleta” do iniciante da forma como é feito neste livro é um desfavor.&lt;/p&gt;

&lt;p&gt;E aí consigo imaginar o leitor me questionando de novo: “&lt;em&gt;então como posso abordar o tema dos comentários com um novato, Kico?&lt;/em&gt;“. Respondo: tal como Steve McConnell faz no seu livro “Code Complete”. Ele mostra como alguns comentários podem ser ruins, mas não os ridiculariza e nem usa metáforas morais para te convencer disto, usa apenas fatos.&lt;/p&gt;

&lt;p&gt;E sabe onde Steve McConnell fala sobre comentários? No capítulo 32: “Self Documented Code”, que é essencialmente o que Robert Martin tenta fazer neste capítulo nefasto. Sabe o que é ainda mais interessante? Este capítulo está na segunda edição do Code Complete, publicada em 2004. A primeira edição de Clean Code é de 2008. Robert Martin não cita Code Complete neste capítulo.&lt;/p&gt;

&lt;p&gt;(A primeira edição de Code Complete é publicada em 1993 e foi um livro bastante influente. É importante ter esta informação histórica aqui neste parêntese (que é um comentário))&lt;/p&gt;

&lt;p&gt;E esta é a argumentação básica de Robert C. Martin neste capítulo. Sabe o que é mais triste? Ele termina o capítulo mostrando como refatorar comentários ao final, mas não diz o que seria intelectualmente honesto aqui para informar o leitor no decorrer de sua argumentação: &lt;strong&gt;comentários não são eternos e são alterados conforme o código muda no decorrer do tempo.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Em 2016 eu já estava na itexto…
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T59HUdKB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/escritorio_itexto.jpg%3Fresize%3D640%252C480%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T59HUdKB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/escritorio_itexto.jpg%3Fresize%3D640%252C480%26ssl%3D1" alt="" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oferecemos um tipo de consultoria chamado “suporte de aquisição” na qual intermediamos quem adquire serviços de desenvolvimento e quem presta estes serviços. O objetivo não é policiar ou fiscalizar,mas sim ajudar as duas pontas evitando conflitos e reduzindo custos: com isto detecto possíveis problemas no que está sendo construído antes que ele chegue ao cliente e, ao mesmo tempo, ajudo o cliente a entender o que de fato está comprando.&lt;/p&gt;

&lt;p&gt;(e, claro, ajudo os fornecedores a não perderem seus clientes)&lt;/p&gt;

&lt;p&gt;Em um dos nossos primeiros casos lidei com a aquisição de uma plataforma enorme. Era um projeto que já estava terminando o primeiro ano de desenvolvimento e estava atrasado em pelo menos três meses. Ainda pior: a equipe interna de desenvolvedores do cliente não conseguia absorver o trabalho contratado pois não havia documentação sobre a arquitetura do projeto.&lt;/p&gt;

&lt;p&gt;Conversando com o fornecedor ouvi algo que mudou minha visão inicialmente positiva do capítulo “Comentários” do Clean Code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Nós não documentamos nossa plataforma por que seguimos os princípios ágeis pregados pelo Clean Code, segundo o qual o código já se auto explica.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Vindo da liderança técnica da equipe&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Meu trabalho inicial consistiu então em documentar a arquitetura que havia sido construída junto com este fornecedor. Em dois meses salvamos o projeto: cliente e fornecedor entenderam o que estava sendo construído e até hoje este fornecedor atende este cliente com sucesso.&lt;/p&gt;

&lt;p&gt;E aqui entra o “Clean Code alternativo”: &lt;strong&gt;em momento algum do livro é dito que arquiteturas não devam ser documentadas.&lt;/strong&gt; Nem no livro “Clean Architecture”, publicado em 2017 algo assim é dito.&lt;/p&gt;

&lt;p&gt;E sabe o que era mais interessante neste caso? A plataforma foi escrita em Java, mas a equipe só tinha experiência com .net. Resultado: usaram os padrões de codificação do C# para um projeto Java.&lt;/p&gt;

&lt;h1&gt;
  
  
  Eu e os comentários
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sikh-Wfp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/kico_2023.jpg%3Fresize%3D640%252C404%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sikh-Wfp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/kico_2023.jpg%3Fresize%3D640%252C404%26ssl%3D1" alt="" width="640" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A argumentação óbvia de que comentários em excesso são algo ruim na minha opinião é redundante: qualquer coisa em excesso é ruim. Simples assim, é uma crítica que portanto nada diz.&lt;/p&gt;

&lt;p&gt;Mas há pontos que com o tempo foram se tornando mais claros para mim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Código totalmente auto explicativo é uma ilusão
&lt;/h2&gt;

&lt;p&gt;A história que conto de 2016 é um bom exemplo disto: para a equipe que desenvolvia a plataforma o sistema era óbvio. O problema é que existe mundo externo e a percepção deste pode ser diferente da de quem codifica. Resumindo: &lt;strong&gt;o que é óbvio para você não necessariamente é para o outro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;(a experiência foi meses depois do meu próprio texto que mencionei aqui – incrível como mudou de repente minha visão sobre o livro)&lt;/p&gt;

&lt;p&gt;E não é raro encontrar pessoas que se isolam no ato de programar, geram coisas maravilhosas, que funcionam super bem mas que, infelizmente, são de difícil compreensão para o resto do time. Talvez até mesmo por terem uma formação específica que não seja a mesma que a da equipe (matemáticos, por exemplo). Nestes casos comentários agregam, e muito.&lt;/p&gt;

&lt;p&gt;Indo além, sempre há um contexto: o código nunca existe por si mesmo. Existe um contexto em que ele foi gerado. Este contexto pode ser histórico (a situação da empresa naquele momento). Ter esta informação ajuda muito a entender por quê foi codificado daquela maneira e, mais importante: por que funciona ou não.&lt;/p&gt;

&lt;p&gt;E há outro fator também: equipes mudam, mas raramente muda o stakeholder do projeto. E este precisa do máximo de informação possível para que possa manter sua &lt;strong&gt;posse&lt;/strong&gt; sobre o mesmo.&lt;/p&gt;

&lt;p&gt;(Knuth tentou algo similar com &lt;a href="https://www.amazon.com.br/Literate-Programming-Donald-Ervin-Knuth/dp/0937073806"&gt;&lt;em&gt;literate programming&lt;/em&gt;&lt;/a&gt;muitos anos antes e a ideia não vingou)&lt;/p&gt;

&lt;h2&gt;
  
  
  Sobre comentários “mentirosos”
&lt;/h2&gt;

&lt;p&gt;Atuo profissionalmente desde 1996: na minha experiência nunca vi alguém mentir em um comentário. O que já vi foi algum comentário desatualizado. Mas sabe de uma coisa? Nestes casos quem dava a manutenção simplesmente os atualizava e o problema estava resolvido.&lt;/p&gt;

&lt;p&gt;Nunca foi um problema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comentários redundantes
&lt;/h2&gt;

&lt;p&gt;É chato encontrar um comentário redundante? Sim, concordo: mas nunca vi um comentário redundante ferir a produtividade de alguém. Indo além, tal como disse neste mesmo texto, normalmente quando os encontro são escritos por quem está começando e os usa para ter alguma segurança sobre o que está sendo produzido.&lt;/p&gt;

&lt;p&gt;E aí como você resolve o problema? Simples: no momento do code review você os remove se forem realmente redundantes e explica para o autor dos mesmos por que o fez de forma civilizada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contextualização histórica
&lt;/h2&gt;

&lt;p&gt;Em 2016 escrevi sobre como você pode usar comentários para contar a história daquele sistema. Ainda mantenho minhas posições sobre o que disse ali (só discordo da recomendação literária que faço ao final). Caso queira ler, segue &lt;a href="https://devkico.itexto.com.br/?p=2490"&gt;o link&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sobre a questão de créditos e autoria nos comentários
&lt;/h2&gt;

&lt;p&gt;Discordo de Robert Martin quando ele diz que não faz sentido incluir créditos e autoria do código dado que temos sistemas de controle de versão.&lt;/p&gt;

&lt;p&gt;Se você lida com código que implementa algoritmos muito específicos (matemáticos ou físicos por exemplo) é muito útil ter a autoria ali, pois fica muito mais fácil saber a quem procurar. E convenhamos: é bem mais fácil que ficar consultando log de commits, né?&lt;/p&gt;

&lt;h2&gt;
  
  
  Comentários como ferramenta de design
&lt;/h2&gt;

&lt;p&gt;É interessante o livro não mencionar isto, mas observo em mim e outras pessoas o uso de comentários como ferramenta de design. Direto me pego escrevendo comentários antes do código que vou construir para tornar mais claro para mim o que de fato quero fazer ali.&lt;/p&gt;

&lt;p&gt;Os escrevo no topo das classes ou funções, e na sequência simplesmente os traduzo para código fonte. E sabe o que é mais legal? Costumam virar uma documentação super útil para quem vai dar manutenção depois, pois fica claro ali qual era o objetivo inicial daquele código.&lt;/p&gt;

&lt;p&gt;Ano passado fiquei muito surpreso ao ler isto no livro “&lt;a href="https://www.amazon.com.br/Philosophy-Software-Design-2nd/dp/173210221X/"&gt;A Philosophy of Software Design&lt;/a&gt;” no qual o autor descreve exatamente este processo de criação. Aliás, neste livro estão os melhores capítulos que já li sobre o tema “Comentários”. Recomendo muito a leitura, especialmente por ter um contraponto muito interessante em relação ao “Código Limpo” no que diz respeito a este assunto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concluindo?
&lt;/h2&gt;

&lt;p&gt;Levou anos para escrever este texto, mas finalmente saiu! Na época não podia narrar estas experiências pois estava atuando no projeto que mencionei e este post poderia ter gerado um grande constrangimento desnecessário. Mas hoje com tudo resolvido, fica muito mais fácil escrever a respeito.&lt;/p&gt;

&lt;p&gt;Me impressiona como estas vinte páginas do texto geraram problemas ao longo do tempo: nem tanto pelo texto em si, mas muito mais pelas interpretações muito equivocadas do mesmo (me pergunto inclusive se estas pessoas realmente leram este livro).&lt;/p&gt;

&lt;p&gt;Acho que no final das contas este é o pior capítulo do “Clean Code” e aquele sobre o qual mais vejo problemas. Repito o que disse na primeira parte desta série: ainda acho importante a leitura do livro pela importância que ele tem na formação de gerações de programadores aqui no Brasil.&lt;/p&gt;

&lt;p&gt;Espero que com esta série eu possa ter lhe mostrado como extrair um pouco mais da leitura deste livro e mesmo outros que possam seguir a mesma (pobre) linha argumentativa.&lt;/p&gt;

&lt;p&gt;No caso deste capítulo tenho uma sensação diferente: tal como &lt;a href="https://devkico.itexto.com.br/?p=2555"&gt;já escrevi&lt;/a&gt;, os textos que mais gosto são aqueles dos quais discordo pois a leitura se torna um diálogo com o qual aprendo. Não é o caso aqui: a argumentação tóxica nos trouxe problemas no futuro, e não vejo muitas pessoas escrevendo a respeito, o que só aumenta o problema.&lt;/p&gt;

&lt;p&gt;Talvez eu escreva mais sobre o livro, mas agora vou aproveitar que voltei a escrever para falar sobre outras coisas por enquanto. Até lá!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=4077"&gt;Eu e o Clean Code – Parte 3 – O Nefasto Capítulo sobre Comentários&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>livros</category>
      <category>códigolimpo</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>Eu e o “Clean Code” – Parte 2: Descompilando</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 08 May 2023 03:47:47 +0000</pubDate>
      <link>https://dev.to/loboweissmann/eu-e-o-clean-code-parte-2-descompilando-4550</link>
      <guid>https://dev.to/loboweissmann/eu-e-o-clean-code-parte-2-descompilando-4550</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--79NKuuu3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/clean_code_descompilado.png%3Fresize%3D840%252C579%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--79NKuuu3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/clean_code_descompilado.png%3Fresize%3D840%252C579%26ssl%3D1" alt="" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Terminei a primeira parte da minha análise com a seguinte pergunta: “o modo como o livro foi escrito pode induzir a este comportamento dogmático/apaixonado?”&lt;/p&gt;

&lt;p&gt;Quando falamos de “Clean Code” muitas pessoas se exaltam. Não lembro de ter visto este comportamento com outros livros. Este fenômeno é péssimo pois dificulta uma visão crítica sobre o assunto e, consequentemente, impede que todos avancem na qualidade do código que escrevemos.&lt;/p&gt;

&lt;p&gt;Meu objetivo neste post é reduzir esta paixão para que possamos ter conversas melhores sobre este tema. Para tal vou dissecar a estrutura narrativa do livro, isto é, como o autor (qual deles?) organiza sua argumentação para nos convencer do que aqui é tratado.&lt;/p&gt;

&lt;p&gt;A partir do momento em que estas estratégias estiverem claras a pergunta com a qual iniciei este post poderá ser respondida.&lt;/p&gt;

&lt;h3&gt;
  
  
  Alertas sobre o que você lerá
&lt;/h3&gt;

&lt;p&gt;Para este post não me interessa a versão original, mas sim a tradução para o português publicada pela editora Alta Books por ser a edição mais popular no Brasil e, portanto, aquela que mais nos influencia.&lt;/p&gt;

&lt;p&gt;Tal como no primeiro post meu objetivo não é estar certo, mas levantar questões para que possamos iniciar leituras mais críticas do material técnico que chega a nós.&lt;/p&gt;

&lt;p&gt;Muito do que aqui escrevo se baseia nos argumentos que apresentei na primeira parte desta série, sendo assim recomendo que você a leia primeiro (&lt;a href="https://dev.to/loboweissmann/eu-e-o-codigo-limpo-o-livro-parte-1-catequizacao-ia3"&gt;link&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Cito alguns trechos do livro nos quais identifiquei alguns comportamentos bem peculiares. Não caberia aqui citar todos os trechos aonde os mesmos ocorrem. O objetivo não é tirar do contexto o que foi dito (pelo contrário, em todos os casos digo exatamente onde encontrar a citação), mas sim ajudar você que irá ler ou reler o livro a ter uma visão mais fria da obra.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quem escreveu o livro?
&lt;/h2&gt;

&lt;p&gt;Se você perguntar para a maior parte das pessoas elas lhe respondem prontamente: “Robert C. Martin, o Uncle Bob!”.&lt;/p&gt;

&lt;p&gt;A resposta está parcialmente correta: ele escreveu o livro, mas também o organizou, e não é o único autor. Há outros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brett Schuschert – “Concorrência” e “Apêndice A – Concorrência II”&lt;/li&gt;
&lt;li&gt;James Greening – “Limites”&lt;/li&gt;
&lt;li&gt;Jeff Langr – “Classes” e “Emergências”&lt;/li&gt;
&lt;li&gt;Kevin Dean Wampier – “Sistemas”&lt;/li&gt;
&lt;li&gt;Michael Feathers – “Tratamento de Erro”&lt;/li&gt;
&lt;li&gt;Tim Ottinger – “Nomes Significativos” (meu capítulo favorito)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se você colocar estes autores em perspectiva, verá que na realidade são responsáveis por aproximadamente um terço do livro:observe o gráfico que fiz mostrando o número de capítulos por autor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FxwCQqlo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/image.png%3Fresize%3D551%252C336%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FxwCQqlo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/image.png%3Fresize%3D551%252C336%26ssl%3D1" alt="" width="551" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta informação parece boba mas faz toda a diferença na sua releitura pois lendo atentamente, apesar da tradução homogeneizar os estilos, verá que são visões e estratégias narrativas diferentes presentes no texto.&lt;/p&gt;

&lt;p&gt;Levando em consideração que Robert Martin escreveu no mínimo dois terços do livro e é o responsável por compilar o trabalho dos demais autores, daqui para frente neste texto levarei em consideração apenas este como o autor e não levarei em consideração em minha análise os capítulos que não são de sua autoria.&lt;/p&gt;

&lt;h2&gt;
  
  
  Primeira indução – o título
&lt;/h2&gt;

&lt;p&gt;A estrutura narrativa deste livro usa e abusa de emoções e valores a começar pelo título: “Código Limpo”. A escolha do título na minha opinião é um feito de marketing genial: é normal encontrar pessoas que referenciam qualquer boa prática de codificação como “código limpo” ou “clean code” (mesmo que estas práticas sequer estejam presentes no livro).&lt;/p&gt;

&lt;p&gt;Limpeza aqui entra no mínimo como um valor estético do ponto de vista metafórico. O único caso que conheço de personagem que encara a sujeira como virtude é o Cascão (criado por Maurício de Souza). Este é o primeiro momento de indução do leitor a emoções que vão além de uma leitura técnica padrão.&lt;/p&gt;

&lt;p&gt;Todo mundo quer fazer parte de um grupo que seja referência em seu ofício. Você quer ser um “clean coder” quando está começando e também quer “codificadores limpos” em sua equipe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segunda indução – o personagem “Uncle Bob”
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Antes uma história envolvendo eu, Wittgenstein e Hegel
&lt;/h3&gt;

&lt;p&gt;Por muitos anos um dos meus maiores heróis foi Wittgenstein. Lembro que apesar de não entender nada do que ele escrevia pensava comigo: “não entendo por que deve ser algo brilhante”. De fato era genial, muito mais do que imaginava na época com meus 21 anos.&lt;/p&gt;

&lt;p&gt;E eu lia tudo &lt;strong&gt;sobre&lt;/strong&gt; Wittgenstein: há vários livros fascinantes sobre sua época (&lt;a href="https://www.estantevirtual.com.br/a-leitura-e-seus-encantos/a-viena-de-wittgenstein-alan-janik-stephen-toulm-a-viena-de-wittgenstein-3475792823?gclid=Cj0KCQjwmN2iBhCrARIsAG_G2i6LIIV_mF6CE5Xk8DXdIRlWxAz9upI9cHvVvPkck2248BOcjmXHZfsaAjc0EALw_wcB"&gt;A Viena de Wittgenstein&lt;/a&gt;), e biografias maravilhosas (&lt;a href="https://www.amazon.com.br/WITTGENSTEIN-DEVER-MONK/dp/8571644624"&gt;Wittgenstein, o Dever do Gênio&lt;/a&gt;). Até que percebi algo curioso: o que realmente foi meu motivador inicial pra gostar tanto de Wittgenstein não era sua obra, mas sua vida (que é incrível e cercada de personagens históricos tão fascinantes quanto ele).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vBH4_lCs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2008/11/wittgenstein_swansea_1947.jpg%3Fresize%3D701%252C559%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vBH4_lCs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2008/11/wittgenstein_swansea_1947.jpg%3Fresize%3D701%252C559%26ssl%3D1" alt="" width="701" height="559"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Wittgenstein: a maior parte dos problemas da Filosofia se deve a uma má compreensão da linguagem. (da TI também)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Quando percebi este meu desvio consegui pela primeira vez ler Wittgenstein direito e aprendi horrores no processo: até hoje é um dos autores que mais me influencia e mais me fez crescer, mas me arrependo de ter sido seduzido por todo este “glamour” no início: perdi muito tempo.&lt;/p&gt;

&lt;p&gt;Outro autor que me influenciou demais foi Hegel: mas este teve uma vida que ao contrário da de Wittgenstein, era um tédio absoluto (não qualquer tédio, O Tédio Absoluto).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l7FkzEnf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/image-3.png%3Fresize%3D600%252C315%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l7FkzEnf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/image-3.png%3Fresize%3D600%252C315%26ssl%3D1" alt="" width="600" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A escrita de Hegel é muito mais difícil e complexa que a de Wittgenstein, mas a entendi muito mais rápido. Na realidade, pra surpresa de todo mundo foi imediato, &lt;strong&gt;meu foco estava no conteúdo que Hegel escrevia, e não no Hegel&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O que aprendi com isto? Personagens carismáticos podem te desviar do foco principal ou construir uma aura que te impede de ver as coisas de forma fria.&lt;/p&gt;

&lt;h3&gt;
  
  
  De volta ao “Uncle Bob”
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NHTLY83E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/bob_martin_decompilado.jpg%3Fresize%3D640%252C364%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NHTLY83E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/bob_martin_decompilado.jpg%3Fresize%3D640%252C364%26ssl%3D1" alt="" width="640" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na primeira parte desta série falei um sobre a construção da autoridade. A personagem do autor entra nesta fórmula também e claramente há a elaboração de uma personagem aqui, a partir do próprio nome (palavras são poderosas): “Uncle Bob” (o “Tio Bob”).&lt;/p&gt;

&lt;p&gt;A escolha do apelido é novamente algo muito inteligente: reduz a gravidade do nome original do autor (Robert Martin) e ao mesmo tempo constrói proximidade com o leitor. A proximidade se dá não só pelo apelido mas também por serem apresentados no texto pequenos detalhes sobre a vida privada desta personagem. Um exemplo sutil mas doce é a ilustração de entrada do capítulo 2 (“Nomes significativos”).&lt;/p&gt;

&lt;p&gt;(a história que contei sobre mim serviu a dois fins: te aproximei de mim ao mesmo tempo que mostrei como personagens podem nos seduzir ;) )&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vIYlSxDH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/baby_names.jpg%3Fresize%3D832%252C562%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vIYlSxDH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i0.wp.com/devkico.itexto.com.br/wp-content/uploads/2023/05/baby_names.jpg%3Fresize%3D832%252C562%26ssl%3D1" alt="" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E claro, há inúmeras palestras que você encontra na Internet nas quais a personagem vai se construindo: falando sempre de forma direta (adora gestos), segura (aponta o dedo), bem humorada, madura, e cheio de exclamações. Ao mesmo tempo diversas menções a elementos de cultura geek são realizados (Star Trek, Star Wars) alimentando com isto o estereótipo do nerd.&lt;/p&gt;

&lt;p&gt;Observe como no texto de Robert Martin (o “tio”) há as mesmas exclamações. No primeiro capítulo (“Código Limpo”) você encontra um exemplo clássico logo na segunda página:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(…) E que não precisarão mais de programadores, pois as pessoas criarão programas a partir de especificações.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bobagens&lt;/strong&gt;! Nunca nos livraremos dos códigos (…)&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert Martin – Capítulo 1 – Código Limpo&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A linguagem adotada na maior parte das vezes é coloquial, o que ajuda a criar o elo entre leitor e autor. Ele gosta das mesmas coisas que você, e tem uma linguagem simples, parecida com a sua.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terceira indução – valores morais e falsas equivalências
&lt;/h2&gt;

&lt;p&gt;Por todo o texto há menção a valores morais e estéticos, o que na minha opinião é perigosíssimo quando o assunto é código fonte. Entenda: não estou negando que haja um fator artístico ou ético no ofício, mas é um risco enorme quando estes aspectos projetam suas sombras sobre a engenharia.&lt;/p&gt;

&lt;p&gt;No Epílogo do livro ao contar sua participação em uma conferência sobre desenvolvimento ágil em 2005 quando recebe uma fitinha verde de punho de Elisabeth Hedrickson na qual se encontrava escrito “Obcecado por testes” chega a dizer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(…) Descobri que eu não poderia retirar minha fitinha do punho. Não por que ela estivesse presa a ele, mas por estar &lt;strong&gt;moralmente presa&lt;/strong&gt;. A fita fazia uma afirmação evidente sobre minha &lt;strong&gt;ética profissional&lt;/strong&gt; (…)&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert Martin – Epílogo do livro Clean Code&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E o uso de metáforas morais é encontrado em muitos pontos no livro. No capítulo 4 – Comentários -, por exemplo, você encontra o seguinte trecho:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Por que não gosto de comentários? &lt;strong&gt;Por que eles mentem.&lt;/strong&gt; Nem sempre, e não intencionalmente, mas é muito comum.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert Martin – Capítulo 4 – Comentários&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Na citação acima talvez você ache que estou pegando no pé, entretanto após ler as quase 400 páginas do livro encontrando metáforas morais como esta o tempo inteiro, não há como negar que um iniciante acabe por absorver toda esta “moralidade” e, com isto, adquirir uma leitura apaixonada pelo texto.&lt;/p&gt;

&lt;p&gt;(Um post que preciso escrever é sobre este capítulo 4, que é um dos mais danosos da história da computação na minha opinião. Podem me cobrar isto)&lt;/p&gt;

&lt;p&gt;É também comum o uso de exemplos extremos para se justificar a aplicação de boas práticas. No primeiro capítulo há uma comparação com medicina que é um belo exemplo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(…) e se você fosse médico e um paciente exigisse que você parasse com toda aquela lavação das mãos na preparação para a cirurgia só porque isso leva muito tempo?&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert Martin – Capítulo 1 – Código Limpo&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Observe como são comparadas duas situações de gravidade absolutamente distintas: uma cirurgia (específica) e o ato de codificar qualquer coisa (absolutamente genérico). Lendo atentamente o texto você encontrará exemplos similares pelo texto. Não são situações equivalentes com este tipo de generalização no segundo caso.&lt;/p&gt;

&lt;p&gt;Outro exemplo do apelo à estética você encontra na introdução do capítulo 5: “Formatação”:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quando as pessoas olham o código, desejamos que fiquem impressionadas com a polidez, a consistência e a atenção aos detalhes presentes. Queremos que reparem na organização. Desejamos que suas sobrancelhas se levantem ao percorrer os módulos; que percebam que foram profissionais que estiveram ali.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert Martin – Capítulo 5 – Formatação&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Observe que interessante o apelo a estética, à impressão que os outros terão de nós, é um chamado portanto à necessidade que todos tempos de sermos bem recebidos a um grupo se sobrepondo à necessidade real da formatação: facilitar a leitura.&lt;/p&gt;

&lt;p&gt;Estes são apenas alguns exemplos que você encontrará no texto do livro. São trechos extremamente eficazes em manter o leitor colado ao texto, sem dúvidas, mas ao mesmo tempo induzem o leitor a emoções que acabam por gerar as situações que descrevi na primeira parte desta série.&lt;/p&gt;

&lt;h2&gt;
  
  
  O trecho sobre “Escolas de Pensamento”
&lt;/h2&gt;

&lt;p&gt;Antes de finalizar esta segunda parte preciso falar sobre o trecho “Escolas de Pensamento” pois muitas pessoas o referenciaram para mim dizendo que neste trecho o autor se exime do comportamento dogmático dos leitores. Discordo.&lt;/p&gt;

&lt;p&gt;Logo no primeiro parágrafo encontramos:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(…) Apresentaremos nossos conceitos como verdades absolutas, e não nos desculparemos por nossa austeridade. Para nós, a essa altura de nossa carreira, tais conceitos &lt;em&gt;são&lt;/em&gt; absolutos. São &lt;em&gt;nossa escola de pensamento&lt;/em&gt; acerca do que seja um código limpo.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Robert Martin – Capítulo 1 – Código Limpo – grifos do autor&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Na sequência é feita uma comparação muito pobre com escolas de artes marciais. Não há sentido na comparação pois diversas das práticas mencionadas no texto são recomendações comuns em nossa indústria (funções pequenas, separação de responsabilidades, etc) e não “novidades” exclusivas trazidas por esta “escola de pensamento”.&lt;/p&gt;

&lt;p&gt;O uso da metáfora “escola de pensamento” é inclusive bastante controverso pois fica parecendo que o autor está comparando sua escola a um “time” e seus “seguidores” a torcedores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Respondendo à pergunta inicial e prosseguindo
&lt;/h2&gt;

&lt;p&gt;Na minha opinião, sim, o modo como “Código Limpo” é escrito pode induzir seus leitores a um comportamento dogmático.&lt;/p&gt;

&lt;p&gt;Há uma série de fatores aqui que levam a isto:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tal como disse no primeiro post, o fato de se terminar um livro é considerado um grande feito (e é) por muitos e, como tal, é comum a defesa do conteúdo com unhas e dentes.&lt;/li&gt;
&lt;li&gt;É criada uma conexão direta com o leitor a partir da construção de uma personagem que é o autor.&lt;/li&gt;
&lt;li&gt;O uso repetido de metáforas baseadas em valores estéticos e morais induz aqueles que estão iniciando a terem uma visão mais focada em princípios morais (do autor) que técnicos. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É por esta razão que sempre digo para ler este livro com muito cuidado e, ainda mais importante, junto a outros materiais. As práticas ali contidas não foram criadas pelos autores que ali escrevem, são o resultado do trabalho de outras pessoas e da prática coletiva do ofício de construção de sistemas.&lt;/p&gt;

&lt;p&gt;Há uma oportunidade perdida neste livro: já que há tantas metáforas morais/estéticas, é uma pena que sejam apenas metáforas, e não tenha havido aqui um aprofundamento nas mesmas.&lt;/p&gt;

&lt;p&gt;(talvez haja fora do livro, mas não conheço)&lt;/p&gt;

&lt;p&gt;Você não deve fazer um julgamento moral pelo modo como este texto foi escrito: esta foi a estratégia adotada pelo autor e que foi muito bem sucedida. Talvez se não o tivesse feito desta forma uma multidão de pessoas jamais lesse um livro sobre boas práticas de construção de software.&lt;/p&gt;

&lt;p&gt;Infelizmente esta linguagem apaixonada acaba por gerar o comportamento que menciono no primeiro post. Uma pena: empobrece algo que tem muito valor. Como dizem por aí “é bom, mas é ruim”.&lt;/p&gt;

&lt;p&gt;Meus próximos posts serão sobre capítulos específicos do “Código Limpo”. Começarei pelo capítulo 4 – Comentários, que na minha opinião nos trouxe mais problemas que soluções.&lt;/p&gt;

&lt;h3&gt;
  
  
  PS: uma última citação
&lt;/h3&gt;

&lt;p&gt;Quando terminei o texto me lembrei do Prefácio do livro, escrito por James O. Coplien.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(…) Comprei dois pacotes dessa iguaria essa manhã e nela veio este antigo ditado dinamarquês:&lt;br&gt;&lt;br&gt;
(… – tá escrito em dinamarquês)&lt;br&gt;&lt;br&gt;
“Honestidada em pequenas coisas não é uma coisa pequena”. Era umb om presságio para com o que eu já desejava dizer aqui.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;James O. Coplien – Prefácio de Código Limpo&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Não falei??? O prefácio já nos avisa! :D&lt;/p&gt;

&lt;h3&gt;
  
  
  PS 2: algo que ajuda nas leituras técnicas
&lt;/h3&gt;

&lt;p&gt;Autores carismáticos são adoravelmente perigosos. Eles te seduzem sem que você perceba. Algo que sempre me ajudou bastante é conhecer as falácias lógicas mais comuns. Seguem alguns links legais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your Logical Falacy Is – lista as falácias lógicas mais “populares” – &lt;a href="https://yourlogicalfallacyis.com/"&gt;https://yourlogicalfallacyis.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Falácia do Espantalho – Wikipedia – &lt;a href="https://pt.wikipedia.org/wiki/Fal%C3%A1cia_do_espantalho"&gt;https://pt.wikipedia.org/wiki/Fal%C3%A1cia_do_espantalho&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Falsa Equivalência – Wikipedia – &lt;a href="https://pt.wikipedia.org/wiki/Falsa_equival%C3%AAncia"&gt;https://pt.wikipedia.org/wiki/Falsa_equival%C3%AAncia&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=4063"&gt;Eu e o “Clean Code” – Parte 2: Descompilando&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>armadilhas</category>
      <category>livros</category>
      <category>cleancode</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Eu e o Clean Code (o livro) – Parte 1: Catequização</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 01 May 2023 15:46:57 +0000</pubDate>
      <link>https://dev.to/loboweissmann/eu-e-o-codigo-limpo-o-livro-parte-1-catequizacao-ia3</link>
      <guid>https://dev.to/loboweissmann/eu-e-o-codigo-limpo-o-livro-parte-1-catequizacao-ia3</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_x2bL_e4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_catequizacao-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_x2bL_e4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_catequizacao-1.jpg" alt="" width="550" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Faz muito tempo que digo para tomar cuidado com o livro “Código Limpo”: nunca cheguei a detalhar as razões… bem, o momento chegou. Como o texto inicial ficou enorme o dividi em partes.&lt;/p&gt;

&lt;p&gt;Começo pela minha maior crítica que não é ao livro em si, mas ao modo como é lido, divulgado e comentado (ou seria melhor dizer… catequizado?).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Importante:&lt;/strong&gt; no decorrer do texto ao usar o termo “Clean Code” me refiro ao livro original escrito e organizado por Robert C. Martin em inglês, não às práticas.&lt;/p&gt;

&lt;p&gt;O termo “Código Limpo” será usado como referência à tradução para o português do livro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; narro aqui a minha experiência pessoal/profissional com este livro que pode ser diferente da sua. Meu objetivo não é estar certo, mas levantar uma discussão.&lt;/p&gt;

&lt;h2&gt;
  
  
  “Código Limpo” é leitura obrigatória? Na minha opinião, sim.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IjkQkeTm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_cover-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IjkQkeTm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_cover-1.png" alt="" width="368" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se na sua área de atuação muita gente fala sobre um livro é importante que você &lt;strong&gt;pelo menos&lt;/strong&gt; dê uma passada de olhos nele para entender do que se trata e, ainda mais importante, poder entender do que as pessoas falam e se o que é dito de fato faz sentido.&lt;/p&gt;

&lt;p&gt;Por mais que você odeie este livro não há como negar que hoje ele faz parte da nossa formação: mesmo que você não o tenha lido &lt;strong&gt;com certeza&lt;/strong&gt; encontrou alguém que fala ou programa influenciado por algo que é dito ali.&lt;/p&gt;

&lt;p&gt;Então, se você está iniciando na área, é importante ler o livro para entender sobre o que provavelmente seus colegas estão falando. Se você exerce papel de liderança é ainda mais importante ter lido pelos mesmos motivos. O que varia aqui é a intensidade da leitura crítica, que por natureza é menor no primeiro caso, mas &lt;strong&gt;obrigatória&lt;/strong&gt; no segundo.&lt;/p&gt;

&lt;p&gt;Aceite: “Código Limpo” é um livro influente por mais que você o deteste (disclaimer: não o detesto, apenas acho raso (o que não tratarei nesta primeira parte)).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A próxima questão é: de que “Clean Code” estamos falando?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Como o conteúdo chega a nós
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C5Sej1sv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/platao-filosofia.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C5Sej1sv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/platao-filosofia.jpg" alt="" width="600" height="300"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Platão apontando para o “mundo das ideias” e cagando as regras que complicariam nossa vida no futuro?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Uma historinha de Filosofia
&lt;/h3&gt;

&lt;p&gt;Se você teve a matéria de Filosofia no primeiro ou segundo grau (ou faculdade) provavelmente já ouviu falar sobre o “&lt;a href="https://pt.wikipedia.org/wiki/Teoria_das_ideias"&gt;mundo das ideias&lt;/a&gt;” de Platão: se nunca ouviu, te conto o que é.&lt;/p&gt;

&lt;p&gt;Segundo Platão para todas as coisas que vemos diante de nós há um equivalente “ideal” em outro plano, o “mundo das ideias” que é a representação conceitual de cada objeto. Então você vê uma cadeira diante de si, mas todas as cadeiras tem uma representação conceitual única no “mundo das ideias”, da qual participam e que as definem como… cadeiras.&lt;/p&gt;

&lt;p&gt;Resumindo de forma bem rasa este é o “mundo das ideias” de Platão. Interessante, né? Agora é buscar na &lt;a href="https://www.amazon.com.br/Box-Grandes-Obras-Plat%C3%A3o-di%C3%A1logos-ebook/dp/B07T9SH9Y1/ref=sr_1_2?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&amp;amp;crid=2BIUL1MO8FCMQ&amp;amp;keywords=plat%C3%A3o+obra+completa&amp;amp;qid=1682856720&amp;amp;s=digital-text&amp;amp;sprefix=plat%C3%A3o+obra+complet%2Cdigital-text%2C222&amp;amp;sr=1-2"&gt;obra de Platão&lt;/a&gt; onde ele fala do mundo das ideias. Você não encontrará. Ou talvez… sim!&lt;/p&gt;

&lt;p&gt;Talvez você encontre “mundo das ideias” em uma edição traduzida para o português. Mas por que eu disse que não encontrará? Por que a &lt;strong&gt;metáfora&lt;/strong&gt; do mundo das ideias foi na realidade criada pelos comentadores de Platão, que a usaram para poder explicar ao leitor como era tratada a questão dos conceitos na obra do autor.&lt;/p&gt;

&lt;p&gt;E o processo de tradução de uma obra quando bem feito nunca o é de forma direta, tal como um computador (ou um ingênuo) o faria: &lt;strong&gt;o tradutor mesmo que não queira leva para o resultado final do seu trabalho suas próprias pré concepções&lt;/strong&gt;. E assim o que é dito por um comentador do século XIX vai parar na boca de Sócrates, em um texto de Platão no século V a.C…&lt;/p&gt;

&lt;p&gt;(dica: qualquer tradução só pode ser considerada boa quando há um capítulo no livro explicando como foi feita e qual a metodologia aplicada)&lt;/p&gt;

&lt;p&gt;No texto original, em grego, não há “mundo das ideias”.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fontes primárias e secundárias
&lt;/h3&gt;

&lt;p&gt;Fonte primária é o texto original. No nosso caso, o texto em inglês do livro “Clean Code” organizado (nem todos os capítulos do livro são escritos por ele) e escrito por Robert C. Martin.&lt;/p&gt;

&lt;p&gt;As fontes secundárias são qualquer conteúdo que comente ou cite o livro “Clean Code”. E sabe o que também pode ser considerado uma fonte secundária? O livro “Código Limpo” traduzido para o português e publicado no Brasil pela editora Alta Books cujo tradutor sequer é citado na capa.&lt;/p&gt;

&lt;p&gt;E sabe o que mais pode ser considerado fonte secundária? As interpretações que as pessoas fazem sobre o material, ou seja, o que seus colegas de trabalho dizem a respeito.&lt;/p&gt;

&lt;p&gt;Neste momento o leitor deve se questionar: o que sei sobre “Clean Code” é de fato o que foi escrito por Robert C. Martin ou a opinião, interpretação ou releitura de alguém?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E muito cuidado com suas fontes secundárias: elas podem estar erradas e serem muito sedutoras.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kico, você tá me dizendo então pra só levar a sério o Clean Code em inglês?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Não! Pelo contrário, a edição mais influente no Brasil é a da editora Alta Books e não o original. Logo, para o nosso contexto local, a leitura do original sirva mais para criticar/entender a tradução e entender o que se diz sobre o livro fora do país.&lt;/p&gt;

&lt;p&gt;Ler &lt;em&gt;esta tradução&lt;/em&gt; pode falar bastante sobre nosso mercado de trabalho atual (foge de mim me aprofundar neste post a respeito, fica pro próximo).&lt;/p&gt;

&lt;h3&gt;
  
  
  Fonte primária é melhor que secundária?
&lt;/h3&gt;

&lt;p&gt;Não necessariamente. Como o próprio nome diz, a fonte primária apenas diz aonde começa o assunto, não onde ele obrigatoriamente vai ser melhorado.&lt;/p&gt;

&lt;p&gt;As críticas feitas ao Clean Code tornaram o assunto “código limpo”, por exemplo, muito melhor e mais rico quer o dito no texto original.&lt;/p&gt;

&lt;p&gt;(neste caso o conceito de melhor diz respeito às práticas, não à análise do conteúdo original)&lt;/p&gt;

&lt;h2&gt;
  
  
  Dogmas
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PGWjAKsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/dogmas.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PGWjAKsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/dogmas.jpg" alt="" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O que é um dogma? É qualquer doutrina defendida como indiscutível. E infelizmente “Código Limpo” é visto e usado desta forma por muita gente. Aí que mora a maior parte dos meus problemas com o livro.&lt;/p&gt;

&lt;p&gt;Você provavelmente já passou por situações assim: lhe é imposto um padrão de codificação e então você o questiona. E a resposta final é algo como “Código Limpo”. Você questiona “Código Limpo” e na sequência é fuzilado por olhares ou ações que te acusam de heresia. Quem nunca?&lt;/p&gt;

&lt;p&gt;O mais interessante é que na esmagadora maioria dos casos que presenciei o que se falava sobre “Código Limpo” na realidade não era sobre o livro em si, mas sim sobre fontes secundárias.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O livro “Código Limpo” e seu original sofrem as consequências do seu sucesso: criaram uma horda de fanáticos que dificultam a leitura crítica do que ali é escrito.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Os seguidores: a questão da autoridade e o nascimento dos dogmáticos
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--06p8YUbw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/autoridade.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--06p8YUbw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/autoridade.jpg" alt="" width="501" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando você publica um livro ou artigo, palestra em eventos, produz conteúdo e este é consumido em massa (em massa = mais de uma pessoa :) ) você adquire autoridade no assunto se for bem recebido.&lt;/p&gt;

&lt;p&gt;Afinal de contas em teoria você sabe o suficiente sobre o que diz ao ponto de ter a segurança de se expor. No caso de livros esta autoridade é ainda maior pois este formato (o livro) sempre veio acompanhado de adoração. Culturalmente a escrita quase sempre foi (merecidamente) muito valorizada.&lt;/p&gt;

&lt;p&gt;(confesso que nesta época na qual ser contra a ciência virou moda esta autoridade literária me gera alívio)&lt;/p&gt;

&lt;p&gt;A autoridade da qual falo tem duas faces: a primeira é a do autor, a segunda é a do leitor, e talvez você ache o que vou dizer agora agressivo.&lt;/p&gt;

&lt;p&gt;Não dá pra negar que vivemos em uma sociedade que lê pouco. Sendo assim não é raro que uma pessoa ao concluir a leitura de um livro veja este feito como uma conquista pessoal.&lt;/p&gt;

&lt;p&gt;(aqui falo com experiência pessoal pela época em que trabalhei como livreiro (livreiro é aquela pessoa que trabalha em livrarias vendendo e indicando livros))&lt;/p&gt;

&lt;p&gt;E terminar um livro de fato é uma conquista pessoal, dado que é muito mais difícil ler um livro que assistir a um filme/seriado/palestra/podcast. A leitura precisa ser ativa, sua atenção precisa ser redobrada, que requer exclusividade no processo e talvez você sequer saiba ler de fato (escrevi sobre isto &lt;a href="https://devkico.itexto.com.br/?p=2555"&gt;aqui&lt;/a&gt;), o que talvez explique pro que tantas pessoas não gostam de ler.&lt;/p&gt;

&lt;p&gt;E as pessoas querem defender sua conquista e o farão com unhas e dentes quando só tiverem lido este livro: nasce aqui o “dogmático do código limpo”. Mas a pessoa não vira este monge dogmático só por ter terminado a leitura, vejo mais fatores aí:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A estrutura narrativa do “Clean Code” leva a isto (é o tema do meu próximo texto, aguarde).&lt;/li&gt;
&lt;li&gt;Existe um ecossistema criado ao redor do “Clean Code” que induz ao leitor que aquele é O CAMINHO a ser seguido para se obter qualidade (e você sempre quer estar entre aqueles que considera os melhores)&lt;/li&gt;
&lt;li&gt;A insegurança pessoal: se você está dando os primeiros passos e encontra um livro (uma autoridade) que te dá suporte, você naturalmente se agarra a ela.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;E ser dogmático na nossa área é péssimo pois tudo é definido pelo contexto e este sempre varia por mais que tentem nos dizer que não.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Como evito ser um “monge do clean code” então? Simples: &lt;strong&gt;lendo outros livros&lt;/strong&gt;. Só assim você vai conseguir ver que há diferentes visões sobre o mesmo tema, muitas vezes contraditórias entre si.&lt;/p&gt;

&lt;p&gt;E aqui entra o problema: se estas diferentes visões são contraditórias entre si, qual a correta? A que tá dentro do contexto em que você se encontra.&lt;/p&gt;

&lt;h3&gt;
  
  
  O processo de catequização
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_x2bL_e4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_catequizacao-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_x2bL_e4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_catequizacao-1.jpg" alt="" width="550" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observo algumas situações o tempo inteiro:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No LinkedIn a pessoa posta orgulhosa uma foto do kit de boas vindas da empresa: nele há uma edição de “Código Limpo”.&lt;/li&gt;
&lt;li&gt;Livros são publicados sobre “Código Limpo” que até agregam algumas informações adicionais mas não críticas ou pontos de vista discordantes do que é dito no Clean Code.&lt;/li&gt;
&lt;li&gt;O mesmo dito sobre os livros repito sobre apresentações e vídeos e lives.&lt;/li&gt;
&lt;li&gt;A pessoa chega na empresa e lhe é dito que deve seguir o “Clean Code” à risca como prática mínima de desenvolvimento sem questionar.&lt;/li&gt;
&lt;li&gt;No currículo a pessoa diz que segue “as boas práticas do Clean Code”.&lt;/li&gt;
&lt;li&gt;Olhares incrédulos para quem questiona “Código Limpo”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Observo que é um processo que normalmente surge no topo das hierarquias das empresas (ou dos produtores de conteúdo) como um dogma: regras que devem ser seguidas. Do ponto de vista pragmático e preguiçoso faz muito sentido: em teoria já estão ali no livro as práticas e todas em teoria muito bem justificadas.&lt;/p&gt;

&lt;p&gt;(Além disto se alguém questionar você sempre pode soltar a velha carta do “tá no livro, cadê o seu?” pra usar. É prático!)&lt;/p&gt;

&lt;p&gt;Problema: &lt;em&gt;quem originou a indicação da leitura o fez de forma crítica avaliando-o em relação ao contexto em que atua? Outra pergunta: quem está indicando o livro possui experiência técnica?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Já vi Clean Code ser indicado pelo RH, donos/gestores de empresas ou por líderes técnicos que só sabem do conteúdo do mesmo por fontes “terciárias”. Não raro motivados por pensamentos como “código é tudo igual”, “programador é tudo igual” e não raro algum trauma com desenvolvimento no passado. É a busca por qualidade usando-se uma solução que parece ser a mais fácil: diligenciar a uma autoridade.&lt;/p&gt;

&lt;p&gt;(já vi ser indicado por muita gente boa de serviço também, tá?)&lt;/p&gt;

&lt;p&gt;Há uma soma de autoridades aqui: literária, cultural (produtores de conteúdo que são formadores de opinião e portanto manipuladores da cultura) e a hierárquica (empresa/mercado). Você entra em uma empresa ou quer fazer parte, é uma pessoa iniciante, então o que pensa? Vou seguir a dica!&lt;/p&gt;

&lt;p&gt;Até aí, problema algum: mas e se não seguir os “mandamentos do Clean Code” e for obrigado a fazê-lo mesmo quando não faz sentido para o seu contexto? Quando se tem experiência, você argumenta, quando não se tem, normalmente se cala por não se sentir seguro para tal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4QvQBpd2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_commandments.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4QvQBpd2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/04/clean_code_commandments.jpg" alt="" width="270" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E após repetidas vezes seguindo os “mandamentos do Clean Code” o que ocorre? Você os aceita e se este for o único livro de boas práticas que leu agora você é um dogmático e sequer se deu conta disto. E quer ver piorar? Você vai ascender na carreira e continuará todo o ciclo novamente.&lt;/p&gt;

&lt;p&gt;Isto é triste pois você contrata gente justamente por ser… gente: pessoas que vão pensar diferente e trazer soluções interessantes para o seu dia a dia. Nada contra bons padrões de codificação, mas quando são impostos como dogmas e não como possíveis caminhos a serem seguidos você vê gente sendo tratada como robôs (que podem ser facilmente substituídos) e não como seres criativos (que é onde está o valor).&lt;/p&gt;

&lt;p&gt;E isto tudo é feito dentro de um contexto no qual se cria a impressão de que o único livro sobre boas práticas de construção é o Clean Code. Resultado: sua visão de mundo vira o… “Clean Code” seja lá o que é que estão chamando de “Clean Code”.&lt;/p&gt;

&lt;h4&gt;
  
  
  Por que você tá chamando de catequização?
&lt;/h4&gt;

&lt;p&gt;Por que é a imposição de uma cultura e hábitos sobre outra que não aceita o diferente: que por pura ignorância (e arrogância) impõe uma visão de mundo monolítica, por ser baseada em uma única fonte.&lt;/p&gt;

&lt;p&gt;O que narro aqui é esta visão limitada da realidade quando o assunto é qualidade ou boas práticas na construção de software. Uma visão que, inclusive, tal como a dos jesuítas, não é a original, mas sim a resultante de camadas e mais camadas e mais camadas de comentários a respeito sendo que boa parte são no final das contas bobagem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como sugiro resolver o problema
&lt;/h2&gt;

&lt;p&gt;Só vejo uma forma: lendo outras coisas além do &lt;em&gt;Clean Code&lt;/em&gt; e entendendo que o que há nele é a visão de mundo dos seus autores. Uma visão que não é a única, nem a melhor, nem a pior.&lt;/p&gt;

&lt;p&gt;Tenho indicação de livros pra dar? Claro, seguem apenas alguns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code Complete – Steve McConnell&lt;/li&gt;
&lt;li&gt;A Philosophy of Software Design – John Ousterhout&lt;/li&gt;
&lt;li&gt;Trabalho Eficaz com Código Legado – Michael Feathers&lt;/li&gt;
&lt;li&gt;The Pragmatic Programmer – Andrew Hunt e David Thomas&lt;/li&gt;
&lt;li&gt;Beautiful Code – Andy Oram e Greg Wilson&lt;/li&gt;
&lt;li&gt;Refatoração – Martin Fowler (aqui tenho várias críticas, mas é um bom livro)&lt;/li&gt;
&lt;li&gt;The Practice of Programming – Brian Kernighan e Rob Pike (yeap: o “cara” do C e do Go)&lt;/li&gt;
&lt;li&gt;Os padrões definidos pela sua linguagem (ou linguagens) de programação e sua documentação oficial.&lt;/li&gt;
&lt;li&gt;Livros sobre a linguagem de programação também costumam expor boas práticas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mas não se baseie nesta lista que passei: busque por si próprio, há inúmeros que não mencionei aqui. O fundamental é ver que &lt;strong&gt;há outras visões além do Clean Code.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Continua…
&lt;/h2&gt;

&lt;p&gt;Nesta primeira parte não falei do Clean Code em si. Não disse que é um texto ruim nem bom. Meu objetivo é fazer uma leitura crítica do texto.&lt;/p&gt;

&lt;p&gt;Minha crítica aqui foi ao modo como o livro infelizmente é usado. Ok, aí não é culpa do livro, certo?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1WqBZDHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/05/uncle_bob_mistery.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1WqBZDHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/05/uncle_bob_mistery.jpg" alt="" width="640" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não necessariamente. O modo como ele é escrito talvez induza este fenômeno que descrevi aqui.&lt;/p&gt;

&lt;p&gt;É a questão que quero levantar no meu próximo post, em que vou analisar a estrutura narrativa do texto que sim, pode alimentar este comportamento dogmático que descrevi aqui.&lt;/p&gt;

&lt;p&gt;Até lá!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=3879"&gt;Eu e o “Código Limpo” (o livro) – Parte 1: Catequização&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>armadilhas</category>
      <category>livros</category>
      <category>cleancode</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Minhas boas (e não tão boas) leituras de 2022</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 01 May 2023 13:52:53 +0000</pubDate>
      <link>https://dev.to/loboweissmann/minhas-boas-e-nao-tao-boas-leituras-de-2022-2oco</link>
      <guid>https://dev.to/loboweissmann/minhas-boas-e-nao-tao-boas-leituras-de-2022-2oco</guid>
      <description>&lt;p&gt;Aquele post anual que escrevo desde &lt;a href="https://devkico.itexto.com.br/?p=1057"&gt;2011&lt;/a&gt;: então pra manter a tradição viva tenho um monte de coisas boas que vi e consumi este ano que compartilho com você aqui. Vão desde livros técnicos (muito bons, outros não tanto), passando por boas leituras de ficção (MUITO boas) e também uma leitura especial que levei vinte (VINTE) anos me preparando para iniciar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Leitura técnica geral
&lt;/h2&gt;

&lt;p&gt;Como li coisas boas este ano! Começo então pelos que mais me impactaram positivamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Philosophy of Software Design – John K. Ousterhout
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dXHtPDRW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dXHtPDRW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image.png" alt="" width="391" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se você já foi guiado por mim sabe que sempre indico livros de formação (&lt;a href="https://www.amazon.com.br/Code-Complete-Steve-McConnell/dp/0735619670/"&gt;&lt;em&gt;Code Complete&lt;/em&gt;&lt;/a&gt;do Steve McConnell como sendo meu favorito e &lt;em&gt;Clean Code&lt;/em&gt; do Robert Martin como o livro que você deve criticar). Sempre senti falta de uma leitura introdutória de boas práticas (estratégias seria um termo melhor) mais leve que o &lt;em&gt;Code Complete&lt;/em&gt; para quem está iniciando e acho que finalmente encontrei.&lt;/p&gt;

&lt;p&gt;Este livro (bem barato na &lt;a href="https://www.amazon.com.br/gp/product/B09B8LFKQL"&gt;versão Kindle&lt;/a&gt;) na minha opinião é muito importante pelo fato de &lt;strong&gt;finalmente alguém estar se contrapondo ao Clean Code&lt;/strong&gt;. Um problema muito comum que encontro são leitores fãs deste livro que o seguem de forma indiscriminada. Entendo perfeitamente isto, eu mesmo já gostei em excesso do Robert Martin até a ficha cair para o fato de ser um autor que se baseia em sua maior parte em si mesmo e basear boa parte da sua argumentação em afirmações carismáticas mais que em pesquisas realizadas fora de sua bolha pessoal (eu poderia escrever páginas e mais páginas do por quê não recomendo mais a leitura do Clean Code, mas isto fica para outro post).&lt;/p&gt;

&lt;p&gt;Os capítulos mais interessantes pra mim foram o segundo (&lt;em&gt;The Nature of Complexity&lt;/em&gt;) em que o conceito de complexidade é tratado de forma teórica e prática (muitos insights interessantes ali), os capítulos sobre comentários (12 – &lt;em&gt;Why write comments? The four excuses&lt;/em&gt;, 13 – &lt;em&gt;Comments should describe things that are not obvious&lt;/em&gt; e 15 &lt;em&gt;Write comments first&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Os capítulos sobre comentários são leitura obrigatória na minha opinião (especialmente o 13) pois são um antídoto as péssimas ideias expostas de forma carismática no &lt;em&gt;Clean Code&lt;/em&gt;. Você irá entender por que dizer que “comentários são desnecessários se o código é fácil de entender” são uma grande falácia: por que existem aspectos não óbvios em código fonte.&lt;/p&gt;

&lt;h3&gt;
  
  
  Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable and Maintanable Systems – Martin Kleppmann
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DEIRHiBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DEIRHiBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-1.png" alt="" width="379" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sabe aquela história que você gosta tanto que sente prazer em escutá-la em suas mais variadas versões? Este é meu sentimento em relação a este livro. Apesar de muito denso não aprendi muitas coisas novas aqui por causa da minha estrada e por ter tido a sorte de encontrar excelentes professores ao longo do caminho. &lt;strong&gt;Se você está iniciando agora ou não fez faculdade, este é o melhor livro que já encontrei sobre os assuntos ali tratados&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;É um livro sobre dados: eu diria que condensa muito bem semestres da matéria “banco de dados” que normalmente é dada nas faculdades. E faz isto &lt;strong&gt;muito bem&lt;/strong&gt;. Tem tudo o que busco em um livro técnico excelente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Praticamente todas as afirmações feitas pelo autor são fundamentadas em alguma pesquisa.&lt;/li&gt;
&lt;li&gt;A narrativa é muito boa: a sequência dos capítulos faz todo o sentido.&lt;/li&gt;
&lt;li&gt;É absurdamente bem escrito (é o livro que gostaria de ter escrito).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você deve lê-lo de cabo a rabo. A primeira parte é sobre os fundamentos: como os dados são obtidos em bancos de dados, esquemas de concorrência, armazenamento, etc. A segunda é sobre sistemas distribuídos: após entender tudo o que pode dar errado em sistemas que executam em uma única máquina você verá os desafios de se ter diversos bancos de dados trabalhando em paralelo. Finalmente, na terceira parte lidamos com processamento em lote, streaming e um pequeno exercício de futurologia ao final.&lt;/p&gt;

&lt;p&gt;Minha crítica ao livro? Não ter encontrado uma tradução para o português.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous Architecture in Practice – Murat Herder, Pierre Pureur e Eoin Woods
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K-52jK2H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K-52jK2H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-2.png" alt="" width="392" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Foi uma leitura muito enriquecedora não por concordar cegamente mas sim por ter me permitido questionar cada um dos capítulos. Descobri o livro por indicação do &lt;a href="https://www.linkedin.com/in/adrianotavares/"&gt;Adriano Tavares&lt;/a&gt; (sempre me indica bons livros, devia ser livreiro) e coincidiu muito com meu momento profissional no qual a arquitetura passa a tomar mais de 80% dos meus afazeres.&lt;/p&gt;

&lt;p&gt;Os princípios da arquitetura contínua são descritos de forma prática neste livro (daí o título). Cada um destes princípios por si só valeria um livro pois levantam questionamentos sobre como pensamos o ofício de arquiteto de uma forma profunda e, no meu caso, extremamente conflitantes. O que o pensamento dos autores diz sobre requisitos fucionais vs qualidade, por exemplo, é um ponto com o qual não consigo concordar, porém me fez questionar tantas coisas que por si só já valeu o investimento na leitura.&lt;/p&gt;

&lt;p&gt;O Adriano iniciou uma comunidade só pra tratar destes temas – The Roosters. Vale muito à pena participar se este assunto te interessa. Segue o link: &lt;a href="https://theroosters.org/"&gt;https://theroosters.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Um ponto importante sobre este livro: o tempo inteiro faz referências ao anterior, “&lt;a href="https://www.amazon.com.br/Continuous-Architecture-Sustainable-Cloud-Centric-English-ebook/dp/B017A382ZO"&gt;Continuous Architecture&lt;/a&gt;“, que não li. Sendo assim, recomendo que você não cometa meu erro e inicie por este livro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Outras leituras técnicas interessantes
&lt;/h3&gt;

&lt;p&gt;Os três livros acima foram os que mais me impactaram, mas é importante fazer menção a outros que li no ano que também achei interessantes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Introdução ao GraphQL – Eve Porcello e Alex Banks
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t76NNQhL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t76NNQhL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-3.png" alt="" width="367" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quer uma introdução interessante aos conceitos do GraphQL? Este livro quase consegue. A primeira parte é realmente muito útil, mas a segunda na qual faz uma narrativa prática é absolutamente dispensável pois é basicamente Apollo, Apollo, Apollo. Quase escrevi um post só falando como é frustrante ler algo que começa tão bem e descamba de forma tão brusca. Primeiros três capítulos: ok, depois… Mais jogo você ler a documentação oficial do &lt;a href="https://graphql.org"&gt;Graphql&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Kubernetes Básico: mergulhe no futuro da infraestrutura – Brendan Burns, Joe Beda e Kelsey Hightower
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1nUxAZDq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1nUxAZDq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-4.png" alt="" width="358" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não sei se Kubernetes será de fato o futuro da infraestrutura pois já é o presente nas ideias que trouxe. E este livro como introdução à tecnologia é &lt;strong&gt;excelente&lt;/strong&gt;. Precisava de um contato inicial com a tecnologia e foi exatamente o que encontrei aqui. Foi tão bom, aliás, que me deu argumentos muito bons não apenas para adotar o Kubernetes mas também para oo contrário (o mais importante na minha opinião).&lt;/p&gt;

&lt;h4&gt;
  
  
  OAuth 2.0 – Proteja suas aplicações com o Spring Security OAuth2 – Adolfo Eloy
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R3LfU4KF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R3LfU4KF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-5.png" alt="" width="480" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fazia tempo que eu buscava uma introdução legal pra OAuth 2.0 e finalmente achei aqui uma que chega bem perto. Este livro do Adolfo Eloy é a melhor introdução que já vi sobre o assunto: fácil de entender, os conceitos são bem descritos e a abordagem mão na massa pra quando você precisa implementar os padrões OAuth em seus projetos.&lt;/p&gt;

&lt;p&gt;Por que não é perfeito (e é por muito pouco)? Por que ainda faltam alguns detalhes que geram dúvida no pessoal no primeiro contato, e o Spring OAuth 2 por resolver quase todos os problemas em aplicações baseadas em Spring Framework acaba por não expor estes detalhes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Effective Kafka – Emil Kountanov
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9q1asDXD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9q1asDXD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-6.png" alt="" width="389" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Precisei me aprofundar em alguns aspectos do Kafka em 2022: até então o usava essencialmente como mecanismo de mensageria (eu sei.. eu sei…) e este livro foi o que me fez entender diversos pontos do Kafka que fizeram toda a diferença no meu ano. Ele vai desde como você deve projetar suas aplicações, passando por como tunar o Kafka, sua arquitetura, segurança, gestão de transações, armazenamento… Foi de longe o melhor material que já encontrei sobre o assunto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blockchain
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7MzQZK1b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/blockchain-1024x397.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7MzQZK1b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/blockchain-1024x397.jpg" alt="" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em 2021 blockchain entrou no meu radar como um possível mercado para consultorias para a itexto e no ano passado lançamos uma iniciativa interna de pesquisa sobre estes assuntos. Nisto encontrei material muito legal que compartilho aqui com vocês.&lt;/p&gt;

&lt;h3&gt;
  
  
  Livros do Andreas Antonopoulos
&lt;/h3&gt;

&lt;p&gt;Ao consultar o pessoal que entende muito do assunto (&lt;a href="https://www.linkedin.com/in/davidgibbin/"&gt;David Gibbin&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/armandocd/"&gt;Armando Dutra&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/mjardim/"&gt;Marco Jardim&lt;/a&gt;) este nome sempre aparecia como principal referência. Então eu… li praticamente tudo o que encontrei dele e aqui seguem as minhas impressões.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Internet of Money – Primeiro, Segundo e Terceiro livros
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---qgRmpwc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---qgRmpwc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-7.png" alt="" width="360" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;São as transcrições de diversas palestras do Antonopoulos: todos os três estão inclusive disponíveis no Kindle Unlimited para quem é assinante. O que há de bom: é uma visão de alto nível para o pessoal de negócios sobre cripto moedas e aplicações da blockchain. Ele fala de coisas como defi, criptomoedas, e todas as maravilhas que a descentralização trás.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Você deve ler estes livros com muita cautela&lt;/strong&gt; e de forma &lt;strong&gt;crítica&lt;/strong&gt; pois pintam um mundo bonito demais pra ser levado a sério. Sinceramente não sei se recomendo ler os três como fiz pois com o tempo vai ficando repetitivo (os assuntos se repetem nas palestras), mas como visão de evolução do autor, é interessantíssimo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Mastering Bitcoin: Programming the Open Blockchain
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1_yT2ACG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1_yT2ACG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-8.png" alt="" width="497" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Que livro legal: apresenta uma descrição técnica muito detalhada não do bitcoin em si, mas da rede blockchain usada por ele. Todos os detalhes são tratados ali, inclusive como programar para esta rede: é importante lembrar que este livro é de 2017, então se você comprou a versão impressa, algumas coisas vão ter mudado.&lt;/p&gt;

&lt;p&gt;“Se você comprou a versão impressa”… este livro foi liberado pela licença Creative Commons, e o texto atualizado pelo autor e corrigido pelos leitores está disponível no Github. Olha que legal: &lt;a href="https://github.com/bitcoinbook/bitcoinbook"&gt;https://github.com/bitcoinbook/bitcoinbook&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Mastering Ethereum
&lt;/h4&gt;

&lt;p&gt;Mesmíssima pegada do Mastering Bitcoin, só que voltado para a rede Ethereum. É interessante ter lido antes o livro sobre Bitcoin para entender os conceitos de blockchain.&lt;/p&gt;

&lt;p&gt;Os conceitos são muito bem explicados (finalmente entendi o que era o “tal do token”). A primeira metade do livro é expondo a infraestrutura básica do Ethereum e na parte seguinte como funciona o desenvolvimento de smart contracts. Não espere aqui um tutorial de solidity: a linguagem é exposta de uma forma bastante superficial pois não é o objetivo do livro.&lt;/p&gt;

&lt;p&gt;Tal com o Mastering Bitcoin aqui também temos o livro liberado como código aberto no Github e atualizado pelos leitores. Link: &lt;a href="https://github.com/ethereumbook/ethereumbook%20"&gt;https://github.com/ethereumbook/ethereumbook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Importante: agora o Ethereum está adotando a proof of stake, e este livro não está tão atualizado, mas como base, é bem legal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ethereum
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l86Bnqur--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-9-1024x253.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l86Bnqur--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-9-1024x253.png" alt="" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Blockchain Ethereum: Fundamentos de arquitetura, desenvolvimento de contratos e aplicações – João Kuntz
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bKb2d5Wk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bKb2d5Wk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-10.png" alt="" width="461" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É um livro bem atualizado, de março de 2022, bem no formato popular da Casa do Código, isto é, bem prático. Não é um livro ruim: é dividido em três partes. Na primeira uma descrição arquitetural da rede Ethereum, a segunda o ambiente de desenvolvimento e na terceira algumas questões de segurança.&lt;/p&gt;

&lt;p&gt;É um livro ruim? Não. Recomendo a compra? Não, pois batendo o conteúdo do livro com a documentação oficial do Ethereum esta, além de ter grandes partes já traduzidas para o português é fonte primária de informação e portanto mais atualizada e segura. É mais interessante portanto ir direto pra esta.&lt;/p&gt;

&lt;h4&gt;
  
  
  Documentação oficial do Ethereum
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zMXW0aO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zMXW0aO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-11.png" alt="" width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fiquei encantado com esta documentação. É realmente muito boa e trás tudo o que a gente precisa para entender como a rede funciona e também pra já poder ir pondo a mão na massa e ir desenvolvendo os smart contracts.&lt;/p&gt;

&lt;p&gt;O Learn Hub é muito impressionante, e a seção “basics” pra ter uma visão de negócio e “Ethereum protocol” pra entender como as coisas funcionam por baixo dos panos é realmente muito interessante. &lt;strong&gt;Mas cuidado: por ser a documentação oficial há aqui uma visão muito enviesada positivamente sobre a tecnologia&lt;/strong&gt;. Leia de forma crítica tudo o que encontrar. Busque ler sobre limitações do Ethereum e principalmente sobre os custos.&lt;/p&gt;

&lt;p&gt;Link pro site do Ethereum: &lt;a href="https://ethereum.org/en/learn/"&gt;https://ethereum.org/en/learn/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Leituras não técnicas
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rcTLrvMq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/livros1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rcTLrvMq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/livros1.jpg" alt="" width="800" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por “não técnicas” entenda não diretamente relacionadas a desenvolvimento de software (no final das contas tudo tá relacionado).&lt;/p&gt;

&lt;h2&gt;
  
  
  Literatura geral
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Planeta dos Macacos – Pierre Boulle
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KaPgOfXw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KaPgOfXw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-12.png" alt="" width="320" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Que livro! Se em 2021 o livro que me impressionou foi “Laranja Mecânica”, em 2022 sem sombra de dúvidas foi “Planeta dos Macacos”. A ideia de nós, humanos, não estarmos mais no topo da cadeia alimentar e de repente sermos vistos como animais de estimação é incrível.&lt;/p&gt;

&lt;p&gt;O livro te faz pensar muito sobre a questão da racionalidade animal (eras atrás quase fui pra este ramo de pesquisa enquanto aluno da Filosofia, mas ao ser apelidado de “Dr. Doolittle de BH” desisti da ideia (shame on me)) tratada no livro é incrível. Você começa a se questionar se o conceito de civilização é estritamente humano e mesmo se o modo como tratamos nossos animais de estimação é o mais adequado.&lt;/p&gt;

&lt;p&gt;E o final… épico.&lt;/p&gt;

&lt;p&gt;Nunca mais olhei pra Kica do mesmo modo. :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M4r6GBYQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M4r6GBYQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-13.png" alt="" width="431" height="420"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Kica&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tropas Estelares – Robert Heinlein
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MeF4AsCz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MeF4AsCz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-14.png" alt="" width="334" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eis um livro que meu preconceito impedia de levar a sério (sempre lembrava do filme). Aí um dia resolvi dar uma chance e… no contexto da guerra da Ucrânia rolando… QUE LIVRO!&lt;/p&gt;

&lt;p&gt;Achei que seria apenas um livro de ação boba de humanos lutado contra uma espécie alienígena que no final descobriríamos ter sentimentos, mas não: é muito mais que isto. Pra começar são pouquíssimos os chavões. Há reflexões aqui sobre a natureza da guerra que me chamaram muito a atenção.&lt;/p&gt;

&lt;p&gt;Claro, não é um livro perfeito: há longos períodos de puro tédio no qual se descreve os pormenores da vida das tropas, mas estas reflexões (os diálogos com os generais e professores especialmente) valem a leitura.&lt;/p&gt;

&lt;h3&gt;
  
  
  Children of Time – Adrian Tchaikovsky
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TnE0WLrU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TnE0WLrU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-15.png" alt="" width="325" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Um livro que me caiu em mãos por &lt;strong&gt;absoluto acaso&lt;/strong&gt;. A sinopse me ganhou: no futuro a humanidade busca um novo planeta para habitar e salvar a espécie e o encontra. Então desenvolve um vírus a ser aplicado em macacos para que evoluam neste novo habitat: um acidente faz com que o vírus não atue sobre os macacos mas sim sobre… aranhas que desenvolvem sua própria civilização enquanto a humanidade está a caminho para habitar este novo planeta.&lt;/p&gt;

&lt;p&gt;COMO NÃO VOU LER ALGO COM ESTA SINOPSE??? Uma civilização de aranhas? Como seria a cultura desenvolvida? Como seriam aranhas racionais, como interagiriam entre si?&lt;/p&gt;

&lt;p&gt;(olha o tema da racionalidade animal voltando)&lt;/p&gt;

&lt;p&gt;E a pergunta mais importante de todas: como nós, humanos, conseguiríamos (será que é possivel?) nos comunicar com uma espécie totalmente alienígena?&lt;/p&gt;

&lt;p&gt;Descobri que tem tradução para o português, mas li em inglês. Há lá alguma cafonice no texto, mas a ideia é muito legal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Um mundo que não foi feito para humanos ou que humanos são pets? hmmm…
&lt;/h3&gt;

&lt;p&gt;Assista este filme, você vai gostar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ciências sociais e filosofia
&lt;/h2&gt;

&lt;p&gt;Coisas interessantíssimas aqui: e para uma delas me preparei 20 anos. Vamos lá.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pele Negra, Máscaras Brancas – Frantz Fanon
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4PhUDrmP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-16-683x1024.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4PhUDrmP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-16-683x1024.png" alt="" width="683" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Que livro maravilhoso: foi sem sombra de dúvidas uma das leituras que mais impactou meu ano. O que me surpreende (e ao mesmo tempo é bastante ilustrativo) é o fato de tê-lo descoberto por acaso ao ouvir &lt;a href="https://open.spotify.com/episode/5m4AAxy7Yy5ZjUBI1lEar0?si=55207d93f39949e8"&gt;este episódio&lt;/a&gt; do podcast “History of Indian and Africana Philosophy”.&lt;/p&gt;

&lt;p&gt;Fanon descreve com uma escrita muito particular (é incrível o modo como escreve, realmente muito interessante) os efeitos psicológicos do racismo e do colonialismo sobre nós, os colonizados. Frantz Fanon escreve sua experiencia nas Antilhas, mas enquanto brasileiro me identifiquei bastante com o que é narrado ali.&lt;/p&gt;

&lt;p&gt;O modo como ele expõe a manifestação dos preconceitos através da linguagem e literatura é fenomenal. Leitura fascinante: que livro, que livro, que livro!&lt;/p&gt;

&lt;h3&gt;
  
  
  O Capital – Livro 1 – Karl Marx
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eo_J6sJt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eo_J6sJt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-17.png" alt="" width="475" height="674"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando entrei no curso de Filosofia em 2001 me disseram: “há autores que você deve evitar ler durante o curso se é muito jovem, tal como Marx, pois ele vai enviesar sua visão do mundo e ferrar o restante do seu curso”.&lt;/p&gt;

&lt;p&gt;Aí ano passado apareceu o Livro 1 do Capital no Kindle Unlimited: comecei e ler, me interessei e acabei comprando a &lt;a href="https://www.boitempoeditorial.com.br/produto/o-capital-livro-1-653"&gt;edição impressa da editora Boitempo&lt;/a&gt; cuja tradução foi feita pelo Rubens Enderle. Dias depois chega um pacote do tamanho de um tijolo para mim: era o livro.&lt;/p&gt;

&lt;p&gt;Esta edição é maravilhosa: contém uma série de artigos de Jacob Gorender, Althusser e Giannotti que devem ser lidos ates de chegar ao texto em si. São muito bons e dão a contextualização que precisamos pra ler o texto.&lt;/p&gt;

&lt;p&gt;Finalmente, chegando ao texto, me impressionou MUITO a riqueza de referências que há ali: vai desde Balzac até elementos de química. Não é um texto fácil, é fundamental ter o contexto histórico para não termos uma leitura pobre da obra e, mais importante, tentar se distanciar ao máximo de preconceitos que temos em relação a Marx (o termo marxismo hoje é carregado de uma série de preconceitos que se não for levado em consideração na leitura irá destruir sua experiência).&lt;/p&gt;

&lt;p&gt;O primeiro capítulo sobre o conceito de Mercadoria deveria ser lido por todo desenvolvedor (principalmente pelo pessoal que gosta tanto de cripto moedas). Tem sido uma leitura muito enriquecedora, mas difícil. Você pode precisar de ajuda, sendo assim segue minha última dica de leitura.&lt;/p&gt;

&lt;h4&gt;
  
  
  Para entender o Capital Livro 1 – David Harvey
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jQrdjuVB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jQrdjuVB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://devkico.itexto.com.br/wp-content/uploads/2023/01/image-18.png" alt="" width="333" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estou lendo o livro 1 do Capital junto com este livro do David Harvey que vai dando o contexto histórico político em que a obra foi criada. É uma leitura muito bacana pois vai tratando capítulo por capítulo do livro 1.&lt;/p&gt;

&lt;p&gt;Então você pode ir lendo de forma concomitante os dois, como se fosse um curso universitário.&lt;/p&gt;

&lt;h1&gt;
  
  
  Concluindo e adicionando um pouco mais
&lt;/h1&gt;

&lt;p&gt;Nem só de livros foi o ano, mas muito violão também (acho que não compensa colocar aqui o que li a respeito) cujo progresso &lt;a href="https://www.youtube.com/channel/UChB48DQ0KegU71bkRPhquyw/videos"&gt;fui registrando no YouTube&lt;/a&gt;. Mas dentre as coisas que mais gostei sem sombra de dúvidas foi minha assinatura da &lt;a href="https://darkflix.com.br/"&gt;Darkflix&lt;/a&gt;. O app é horrível, mas o acervo de filmes de terror que eles tem é maravilhoso. Dentre os flmes excelentes que vi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Peixe Cru (genial)&lt;/li&gt;
&lt;li&gt;Crimes do Futuro&lt;/li&gt;
&lt;li&gt;Mary Morbida (genial)&lt;/li&gt;
&lt;li&gt;Além da Imaginação (a série clássica)&lt;/li&gt;
&lt;li&gt;V (a série clássica, não lembrava ser tão poucos episódios)&lt;/li&gt;
&lt;li&gt;Viagens Alucinantes&lt;/li&gt;
&lt;li&gt;A Descendência&lt;/li&gt;
&lt;li&gt;E mais uma infinidade de filmes horríveis que adoro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Música foi muito John McLaughlin, Mike Stern, Miles Davis, Al di Meola, Larry Coyrell e outros que inclui nesta &lt;a href="https://open.spotify.com/playlist/5uY16EUSyRdhA69yDL45mZ?si=33bf6d82cc584b8b"&gt;playlist&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Basicamente, é isto. 2023 chegou e tem livros que quase pararam nesta lista. Só não entraram por que… é 2023.&lt;/p&gt;

&lt;p&gt;Mas estou pensando em durante o ano fazer reviews mais detalhados aqui destes livros. Vamos ver.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=3748"&gt;Minhas boas (e não tão boas) leituras de 2022&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>livros</category>
      <category>leituras</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Minhas boas leituras de 2021</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 04 Apr 2022 08:31:20 +0000</pubDate>
      <link>https://dev.to/loboweissmann/minhas-boas-leituras-de-2021-2354</link>
      <guid>https://dev.to/loboweissmann/minhas-boas-leituras-de-2021-2354</guid>
      <description>&lt;h2&gt;O projeto MundoKico&lt;/h2&gt;

&lt;p&gt;Acho que posso dizer que 2021 foi 2020 com esteroides: a pandemia continuou e com ela nosso isolamento social. Mais tempo longe do contato físico com os colegas e amigos acabou por ter efeitos inesperados em mim, razão pela qual antes de falar sobre os livros que li (foram tantos!) falo sobre o projeto que prometi &lt;a href="https://devkico.itexto.com.br/?p=3267"&gt;ano passado, o MundoKico.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minha ideia era criar um blog e um canal só pra poder falar durante todo o ano sobre as coisas que ia lendo. Acabou acontecendo mas de forma totalmente inesperada. Apesar de ter sido um ano glorioso pra itexto também foi um período muito difícil pra mim pessoalmente, então acabei reatando contato com um velho melhor amigo: o violão clássico. &lt;/p&gt;

&lt;p&gt;Apesar de ser quase auto didata neste aspecto resolvi após quase 20 anos (ou 20 anos?) voltar a ter aulas (na adolescência fiz curso de musicalização e piano na Fundação de Educação Artística de Belo Horizonte) pra me aprofundar no assunto a partir do meio do ano. Comecei tendo aula de harmonia e improvisação com o &lt;strong&gt;Magno Alexandre&lt;/strong&gt;, que é um músico de Jazz maravilhoso aqui de BH e que você deveria ouvir (&lt;a href="https://open.spotify.com/artist/0ARkQZdpnOr3Dy6hSODLLX?si=4bj0pLA7R1aSTW3Z18m6EA"&gt;link pro Spotify dele&lt;/a&gt;): tem sido uma luta fantástica por que são assuntos muito difíceis pra mim e a vivência que o Magno me passa é única. Aí depois veio o Gustavo Bracher que tá lapidando minha técnica de violão e é um monstro tanto no violão quanto na didática (&lt;a href="https://www.youtube.com/c/GustavoBracher"&gt;aqui tá o canal dele no YouTube&lt;/a&gt;). Ambos estão me levando pra um outro nível da coisa e tem me feito um bem danado!&lt;/p&gt;

&lt;p&gt;Então o projeto MundoKico acabou virando... eu tocando violão sem parar, o que você pode acompanhar &lt;a href="https://www.youtube.com/channel/UChB48DQ0KegU71bkRPhquyw"&gt;neste canal que criei pra poder compartilhar com estes dois gênios que citei acima o meu progresso.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta minha volta ao violão em parte foi motivada também por experiências bastante negativas que tive nas redes sociais ano passado e final do ano retrasado sobre as quais só direi isto: a consequência principal foi decidir me afastar do "mundo dev". Não mais escrever no blog, paralisar o projeto do livro que estava atualizando e me focar apenas naquilo que realmente fosse o essencial e valesse à pena pra mim, minha família e meu time. &lt;/p&gt;

&lt;p&gt;Isto quer dizer que na realidade produzi muito conteúdo que não foi publicado (será este ano), li muito mais e, mais importante: que estes limões serviram pra que eu não fizesse uma limonada, mas sim uma infinidade de variedades cujos frutos serão vistos este ano e nos seguintes. Aprendi pra daná!&lt;/p&gt;

&lt;p&gt;Então vamos aos livros?&lt;/p&gt;

&lt;h2&gt;Aviso&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sJo_i342--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/OIP.vTrx_RjGwwE2-vmwiBLxbwHaGi%3Fpid%3DImgDet%26rs%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sJo_i342--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/OIP.vTrx_RjGwwE2-vmwiBLxbwHaGi%3Fpid%3DImgDet%26rs%3D1" alt="Ver a imagem de origem" width="474" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os livros que gosto não necessariamente são aqueles com os quais concordo e a visão que mostro a respeito do conteúdo que exponho aqui é &lt;strong&gt;pessoal&lt;/strong&gt;. Eu não gostar de um livro não quer dizer que ele seja ruim: livros ruins eu sequer cito para que você não corra o risco de os ler (só vou te indicar se não gostar de você mesmo, ok?).&lt;/p&gt;

&lt;p&gt;E não fique triste se xingar muito um autor aqui ou indicar alguém que você não gosta.&lt;/p&gt;

&lt;h2&gt;Livros técnicos&lt;/h2&gt;

&lt;p&gt;Foi um ano de releituras importantes. Então começo por um autor que foi um conflito pra mim começar a letura.&lt;/p&gt;

&lt;h2&gt;Releituras&lt;/h2&gt;

&lt;h3&gt;Robert C. Martin (o "Uncle Bob")&lt;/h3&gt;

&lt;p&gt;Em 2019 notei várias críticas a este autor referente às suas opiniões políticas que são inclusive incompatíveis às minhas. Surgiu o conflito: devo consumir conteúdo de alguém com estas posições? Seria ético? É possível separar o autor da obra? Depois de muito "matutar" noto que estes são problemas provavelmente insolúveis e alguns fatores me levaram a dar uma segunda chance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Meus sentimentos conflitantes em relação ao "Clean Code". A primeira leitura que fiz deste livro foi muito ruim: me soou raso, a linguagem me parecia artificialmente pessoal (talvez fruto da tradução?).&lt;/li&gt;
&lt;li&gt;Apesar de tudo o autor tem um papel muito importante na formação técnica dos profissionais brasileiros. Sempre há citações, então talvez a minha primeira impressão estivesse errada e, mais importante: isto me ajudaria a entender melhor o modo como nós, brasileiros que programam, pensamos e somos formados.&lt;/li&gt;
&lt;li&gt;Sempre li o que quis independente da opinião alheia: bastou me lembrar disto para resolver o conflito na hora.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Clean Code - Código Limpo&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OeCC6ity--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/R.e8d6247b7373df2076d4178ba3d5fc7b%3Frik%3DIiLzKCnXkRvhrw%26riu%3Dhttp%253a%252f%252fwww.diogomatheus.com.br%252fblog%252fwp-content%252fuploads%252f2012%252f11%252fcodigo-limpo-capa-do-livro.jpg%26ehk%3DezNga1URAGwk4ezgXAp5q%252fVtdywBC0SQ4wEqVkRQV6U%253d%26risl%3D%26pid%3DImgRaw%26r%3D0%26sres%3D1%26sresct%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OeCC6ity--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/R.e8d6247b7373df2076d4178ba3d5fc7b%3Frik%3DIiLzKCnXkRvhrw%26riu%3Dhttp%253a%252f%252fwww.diogomatheus.com.br%252fblog%252fwp-content%252fuploads%252f2012%252f11%252fcodigo-limpo-capa-do-livro.jpg%26ehk%3DezNga1URAGwk4ezgXAp5q%252fVtdywBC0SQ4wEqVkRQV6U%253d%26risl%3D%26pid%3DImgRaw%26r%3D0%26sres%3D1%26sresct%3D1" alt="Ver a imagem de origem" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Normalmente quando as pessoas entram pra área de desenvolvimento (especialmente os auto didatas, como é o meu caso (só depois que entrei pra faculdade)) optam como primeiras leituras livros sobre linguagens de programação ou frameworks, o que hoje vejo como um erro. Eles até mostram boas práticas, mas voltadas para aquele contexto específico (o da linguagem ou framework), não vão além (deveriam?).&lt;/p&gt;

&lt;p&gt;Na outra ponta há os livros de formação que vão tratar das "coisas que você deveria saber" sobre o ato de programar, são as boas práticas e as armadilhas do dia a dia. &lt;em&gt;Código Limpo&lt;/em&gt; entra neste grupo. Se for o seu primeiro livro neste assunto é um bom livro. Você vai ler sobre como tratar exceções, escrever boas classes, concorrência, etc. Temas que são vistos em detalhes na faculdade condensados nestas páginas. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como uma introdução&lt;/strong&gt;, é um bom livro: como guia pro resto da sua carreira é raso.&lt;/p&gt;

&lt;p&gt;É um livro pequeno que não assusta quem está dando os primeiros passos. A linguagem do autor é até agradável: passa a sensação de alguém experiente te contando as dores pelas quais já passou com algumas pitadas de "rabujice amável". &lt;/p&gt;

&lt;p&gt;Meu problema com &lt;em&gt;Clean Code&lt;/em&gt; é que antes eu havia lido &lt;strong&gt;algo muito melhor&lt;/strong&gt; que é o &lt;em&gt;Code Complete&lt;/em&gt; do Steve McConnell. Acho muito difícil alguém que tenha lido antes o &lt;em&gt;Code Complete&lt;/em&gt; não achar &lt;em&gt;Clean Code&lt;/em&gt; raso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--INgrdbwj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/R.5495897bdaf9a50438b18ecbc4b303e2%3Frik%3DfFF2Lj5uZGKGUA%26riu%3Dhttp%253a%252f%252fwww.codewithc.com%252fwp-content%252fuploads%252f2015%252f05%252fcode-complete-2nd-edition.jpg%26ehk%3DBRtUMhEkjQKFC%252bj0a22bD6H2Z%252buAYIAPXyg1UHsPagk%253d%26risl%3D%26pid%3DImgRaw%26r%3D0%26sres%3D1%26sresct%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--INgrdbwj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/R.5495897bdaf9a50438b18ecbc4b303e2%3Frik%3DfFF2Lj5uZGKGUA%26riu%3Dhttp%253a%252f%252fwww.codewithc.com%252fwp-content%252fuploads%252f2015%252f05%252fcode-complete-2nd-edition.jpg%26ehk%3DBRtUMhEkjQKFC%252bj0a22bD6H2Z%252buAYIAPXyg1UHsPagk%253d%26risl%3D%26pid%3DImgRaw%26r%3D0%26sres%3D1%26sresct%3D1" alt="Ver a imagem de origem" width="" height=""&gt;&lt;/a&gt;Se vai pegar o seu primeiro livro de formação, pega este, não o Clean Code!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Code Complete &lt;/em&gt;vai muito além do &lt;em&gt;Clean Code&lt;/em&gt;: é mais aprofundado e tem muito mais conteúdo. Trata, por exemplo, do relacionamento com membros da equipe, algo que quem está começando não leva em consideração e é tão importante ou mais (na minha opinião, &lt;strong&gt;bem mais&lt;/strong&gt;) que boas práticas de codificação. &lt;/p&gt;

&lt;p&gt;Mostra estratégias adicionais de desenvolvimento (baseada em tabelas, por exemplo), mas possui uma linguagem mais técnica. Enquanto no &lt;em&gt;Clean Code&lt;/em&gt; temos o "programador experiente", aqui estamos lidando com um "consultor experiente". Há mais referências sendo citadas e também mais ferramentas (as checklists brilhantes ao final dos capítulos são um exemplo) que te agregam ao final. É muito menos subjetivo que &lt;em&gt;Clean Code&lt;/em&gt; e isto é necessário para que os iniciantes não caiam na tentação de reproduzir estereótipos tolos.&lt;/p&gt;

&lt;p&gt;Então por que as pessoas falam mais do &lt;em&gt;Clean Code&lt;/em&gt; que do &lt;em&gt;Code Complete&lt;/em&gt;? Não sei mas especulo: na itexto temos ambos os livros e não raro os iniciantes se assustam com o &lt;em&gt;Code Complete &lt;/em&gt;quando notam ser um livro &lt;strong&gt;bem mais grosso e com fonte menor&lt;/strong&gt;. Talvez seja esta primeira impressão, mas não raro os que optam pelo caminho do &lt;em&gt;Code Complete&lt;/em&gt; acabam tendo uma formação inicial bem melhor.&lt;/p&gt;

&lt;p&gt;Veredito final agora: continuo achando &lt;em&gt;Clean Code&lt;/em&gt; uma introdução bem leve e rasa às boas práticas, mas também amando o capítulo sobre nomeação de variáveis, funções e classes (segundo capítulo) uma das melhores coisas que já li e indico para toda a minha equipe sempre.&lt;/p&gt;

&lt;h4&gt;Arquitetura Limpa - Clean Architecture&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VsPeR3IL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/R.c9222fe6419143cb9817de568b1e2740%3Frik%3DuimvgZ33J9K1Ww%26pid%3DImgRaw%26r%3D0" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VsPeR3IL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://th.bing.com/th/id/R.c9222fe6419143cb9817de568b1e2740%3Frik%3DuimvgZ33J9K1Ww%26pid%3DImgRaw%26r%3D0" alt="Ver a imagem de origem" width="848" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desta vez li duas vezes pra confirmar que realmente é &lt;strong&gt;um livro do qual adoro discordar&lt;/strong&gt;, o que enriquece a leitura: me ajudou a confirmar diversas das opiniões que tenho e sobre as quais é bem possível que venha a escrever algo aqui no futuro a respeito.&lt;/p&gt;

&lt;p&gt;Se você leu &lt;em&gt;Clean Code&lt;/em&gt; como seu primeiro livro de formação, então &lt;strong&gt;leia&lt;/strong&gt; &lt;em&gt;Arquitetura Limpa&lt;/em&gt; logo na sequência pois é um complemento na minha opinião obrigatório para que fique claro como os princípios expostos no primeiro se aplicam em situações reais.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Clean Architecture&lt;/em&gt; tem como objetivo ser uma introdução à Arquitetura de Software, mas aqui temos uma visão muito pessoal do que é a arquitetura de software. Sendo assim, se você não leu &lt;em&gt;Clean Code&lt;/em&gt;, a melhor forma de ler este livro é saber que "é a visão &lt;strong&gt;pessoal&lt;/strong&gt; do Robert C. Martin sobre o assunto e suas experiências a respeito", ok? Se você ler sob este viés vai ter uma experiência muito rica, caso contrário é possível que você só discorde e a coisa morra aí, o que seria uma pena.&lt;/p&gt;

&lt;p&gt;O livro tenta trazer uma visão de alto nível para o desenvolvimento: o que é arquitetura (na opinião do autor), o que são valores, paradigmas de programação até chegar em "princípios de design". Estes princípios são o SOLID, cunhados pelo próprio autor, só que agora aplicados a elementos de mais alto nível (componentes, sistemas). A coisa fica interessante neste momento, mas se estende demais, ao ponto de ficar repetitiva. Daí vai tratar de conceitos como dependências entre elementos da arquitetura, limites, etc. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como uma introdução é legal&lt;/strong&gt;: se você quer se aprofundar, fuja daqui. Todos estes assuntos já li inúmeras vezes na minha vida profissional, então a coisa fica tediosa pra mim, mas não pra quem tá começando. Há inclusive alguns exemplos práticos e experiências de vida do autor que agregam bastante.&lt;/p&gt;

&lt;p&gt;O que realmente gosto deste livro é o capítulo 29 sobre arquitetura de software embarcado. Se eu pudesse ter um "Clean Architecture" a la carte só compraria este capítulo. Não pelo que é dito sobre software embarcado (é só o óbvio pra quem conhece o assunto), mas sim sobre os insights que me trouxe sobre software legado. Se for ler este livro, preste muita atenção neste capítulo específico.&lt;/p&gt;

&lt;h3&gt;Trabalho Eficaz com Código Legado - Michael C. Feathers&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--idBEBb3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://tamanhos.com.br/img/livro-trabalho-eficaz-com-codigo-legado_1_.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--idBEBb3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://tamanhos.com.br/img/livro-trabalho-eficaz-com-codigo-legado_1_.png" alt="Ver a imagem de origem" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta releitura foi a mais importante do ano pra mim e que realmente agregou. &lt;strong&gt;Continuo achando a definição de "software legado" aqui péssima&lt;/strong&gt;: "é software sem testes". Sobre isto inclusive já escrevi bastante aqui no blog. Péssima por que reduz toda uma categoria de software a um problema que seria a ausência de testes, simples assim.&lt;/p&gt;

&lt;p&gt;Tirando esta definição ruim de código legado, se lido como um guia de refatoração é fantástico, inclusive &lt;strong&gt;muito melhor que o Refactoring do Martin Fowler&lt;/strong&gt;. O modo como as técnicas são tratadas aqui são excelentes e o que gosto muito é que não são simplesmente regras lançadas a esmo, é exposto também como aplicá-las. &lt;/p&gt;

&lt;h3&gt;Aprendizado de máquina - Machine Learning&lt;/h3&gt;

&lt;p&gt;Fiz um bootcamp este ano sobre machine learning para me atualizar sobre o assunto, adquirir vocabulário e obter novas referências para que pudesse me aprofundar a respeito não enquanto desenvolvedor, mas sim gestor para poder participar mais ativamente junto com a equipe da itexto na execução de projetos nesta área (a empresa cresceu tanto que não participo mais de todos os projetos, acredita?). &lt;/p&gt;

&lt;p&gt;Foi uma experiência válida (apesar de bem pobre) pra que eu pudesse solidificar alguns conceitos e também ler coisas interessantes a respeito. E deu muito certo: hoje temos projetos muito bem sucedidos nesta área!&lt;/p&gt;

&lt;h4&gt;Foco em estatística primeiro&lt;/h4&gt;

&lt;p&gt;Algo que ficou claro no bootcamp que fiz: os instrutores chegavam mostrando os diversos algoritmos mas qusae não mencionavam a base estatística da coisa. Resultado: pessoas boiando entendendo muito pouco do que lhes era apresentado. Então voltei pros meus livros de estatística e sigo com uma releitura e um livro novo que me ajudaram bastante.&lt;/p&gt;

&lt;h5&gt;Estatística - O que é, para que serve, como funciona - Charles Wheelan&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N51dcAAe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://2.bp.blogspot.com/-1S1OBCilWrg/WEMxDgAbiDI/AAAAAAAAC9g/NOqJGpd2VrgBGf7Zv2BSmJafQcG-zc8LwCLcB/s1600/livro.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N51dcAAe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://2.bp.blogspot.com/-1S1OBCilWrg/WEMxDgAbiDI/AAAAAAAAC9g/NOqJGpd2VrgBGf7Zv2BSmJafQcG-zc8LwCLcB/s1600/livro.jpg" alt="Ver a imagem de origem" width="880" height="1173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Já falei deste livro aqui e volto a indicar: é uma introdução aos conceitos da estatística descritos por um jornalista. Então te fornece uma visão de altíssimo nível mas, mais importante, o &lt;strong&gt;vocabulário&lt;/strong&gt; pra que você possa mais a frente se aprofundar nos assuntos tratados.&lt;/p&gt;

&lt;p&gt;(dica de estudos: sempre comece aprender algo pelo vocabulário, caso contrário você sequer consegue escrever uma busca no Google)&lt;/p&gt;

&lt;p&gt;Mais que apresentar o vocabulário, Wheelan também ensina o autor a como &lt;strong&gt;interpretar&lt;/strong&gt; notícias que usam estatísticas como base, o que te fornece uma visão muito mais crítica não só no mundo técnico mas social também. Por isto sempre recomendo este livro.&lt;/p&gt;

&lt;h5&gt;Estatística Prática para Ciência de Dados: 50 conceitos essenciais - Peter Bruce e Andrew Bruce&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EWpUPYW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51mMQzKcfjL._SX353_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EWpUPYW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51mMQzKcfjL._SX353_BO1%2C204%2C203%2C200_.jpg" alt="" width="355" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recomendo ler este segundo livro na sequência pois aqui já temos uma visão mais matemática da estatística. Foi a partir da leitura deste livro que os conceitos de machine learning passaram a fazer bem mais sentido pra mim. &lt;/p&gt;

&lt;p&gt;Ferramental de Machine Learning&lt;/p&gt;

&lt;p&gt;É um livro no formato técnico clássico e faz exatamente o que se propõe: vão ser apresentados os conceitos estatísticos essenciais passando por análise exploratória de dados, regressão, classificação, etc.&lt;/p&gt;

&lt;h4&gt;Ferramental de Machine Learning&lt;/h4&gt;

&lt;p&gt;Uma outra falha no bootcamp foi uma apresentação extremamente rasa das ferramentas de machine learning, então precisei correr atrás. &lt;a href="https://devkico.itexto.com.br/?p=3267"&gt;Ano retrasado&lt;/a&gt; já havia iniciado um estudo mais intenso de Python, o que me ajudou bastante, mas eu precisava de um livro que pudesse condensar estas ferramentas para que, enquanto gestor/arquiteto, pudesse participar mais ativamente destes projetos na itexto. Então encontrei o livro abaixo.&lt;/p&gt;

&lt;h5&gt;Mãos à Obra: Aprendizado de Máquina com Scikit-Learn &amp;amp; Tensor Flow - Aurélien Géron&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0tBx3xx8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51%2Bp5kJX8cL._SX352_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0tBx3xx8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51%2Bp5kJX8cL._SX352_BO1%2C204%2C203%2C200_.jpg" alt="" width="354" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se tivesse visto este livro antes não teria feito o bootcamp, simples assim. É um guia que vai além das ferramentas, mostra também os principais algoritmos de machine learning e os conceitos envolvidos. Novamente segue a minha dica: só vá para este livro se você já tem os conceitos de estatística fixados na sua cabeça, caso contrário será uma leitura bem rudimentar da coisa (vai te faltar vocabulário).&lt;/p&gt;

&lt;p&gt;A didática do livro é bem legal: você na prática irá executar alguns projetinhos e com eles experimenta a aplicação destes conceitos na prática.&lt;/p&gt;

&lt;h3&gt;Rust&lt;/h3&gt;

&lt;p&gt;Tá aí uma tecnologia que me impressionou &lt;strong&gt;muito&lt;/strong&gt; este ano. Aprendi horrores a respeito e inclusive publiquei um guia de estudos pra quem está começando que pode ser acessado &lt;a href="https://devkico.itexto.com.br/?p=3326"&gt;neste link&lt;/a&gt; que contém inclusive uma bibliografia comentada que aumenta &lt;strong&gt;bastante&lt;/strong&gt; este post.&lt;/p&gt;

&lt;p&gt;Mas é importante fazer uma menção honrosa a um livro em particular:&lt;/p&gt;

&lt;h4&gt;Rust: Concorrência e alta performance com segurança - Marcelo Castellani&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3oRQl9RU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2021/06/livro_rust_casa_do_codigo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3oRQl9RU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2021/06/livro_rust_casa_do_codigo.jpg" alt="" width="527" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É publicado pela Casa do Código e já ouvi falar que estão trabalhando em uma segunda edição. Simplesmente é &lt;strong&gt;o melhor livro sobre Rust que já li e em português.&lt;/strong&gt; Foi graças a este material (e principalmente o &lt;a href="https://twitter.com/jcbritogardona"&gt;Júlio Brito&lt;/a&gt;) que a tecnologia se viabilizou na itexto e tivemos um projeto de muito sucesso com ela.&lt;/p&gt;

&lt;p&gt;É leitura simples e bem guiada, que dá um caminho muito bom pra quem está começando e o melhor: 100% nacional!&lt;/p&gt;

&lt;h3&gt;Building Microservices: Designing Fine-Grained Systems - Sam Newman&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7BXa0LCb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/519Q46LvdCL._SX379_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7BXa0LCb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/519Q46LvdCL._SX379_BO1%2C204%2C203%2C200_.jpg" alt="" width="381" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É raro encontrar livros tão densos quanto este: em aproximadamente 250 páginas vai te dar uma aula sobre como projetar micro serviços mostrando não só o lado vendável da coisa mas, mais importante: os desafios.&lt;/p&gt;

&lt;p&gt;Todos os conceitos essenciais de micro serviços são abordados nestas poucas páginas: definição de domínio, monitoramento, segurança, integração, testes, implantação, escalabilidade... e vai inclusive além quando trata da lei de Conway, segundo a qual as empresas tendem a expor sua organização interna nos sistemas que usa/produz. É leitura obrigatória se você quer se aprofundar nestes assuntos.&lt;/p&gt;

&lt;p&gt;Cito este livro por que finalizada a leitura uma pergunta vinha à minha mente: como a gente foi parar em um mundo tão complexo? Seria esta complexidade toda realmente necessária ou nós que nos colocamos nela? Estas questões tomaram boa parte do meu ano.&lt;/p&gt;

&lt;h3&gt;Apostila Microservices com Spring Cloud - Alexandre Aquiles&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kBl0a_s_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1216768551035592704/1B2OeeQs_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kBl0a_s_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1216768551035592704/1B2OeeQs_400x400.jpg" alt="Imagem" width="400" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O título é péssimo pra melhor coisa que já li sobre micro serviços&lt;/strong&gt;. Apesar do Alexandre usar o Spring Cloud como ferramenta que guia o leitor durante todo o material, ele é usado apenas como ferramenta de apoio. Tirando isto, são expostos todos os conceitos por trás dos micro serviços e com inúmeras referências ali.&lt;/p&gt;

&lt;p&gt;Há a parte prática com Spring Cloud que ajuda bastante e inclusive já vi ser aplicada "as is" em alguns projetos legados que toquei e ela é muito bem descrita.&lt;/p&gt;

&lt;p&gt;O mais interessante destas referências é que, ao contrário do livro do Sam Newman, estas são locais, pessoas daqui, do Brasil, ou seja: são casos &lt;strong&gt;próximos a nós&lt;/strong&gt;. E o aprofundamento conceitual também é fenomenal: o Alexandre levanta várias questões ao apresentá-los e vai muito além de uma mera apostila. &lt;/p&gt;

&lt;p&gt;Aliás... não é uma apostila, &lt;strong&gt;é um livro que deveria ser publicado como tal.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;E está totalmente acessível de graça neste &lt;a href="https://github.com/caelum/apostila-microservices-com-spring-cloud"&gt;link do Github&lt;/a&gt;. Fantástico termos outro material nacional de altíssimo nível nesta lista, hein?&lt;/p&gt;

&lt;h2&gt;Livros não técnicos&lt;/h2&gt;

&lt;p&gt;Houve um tempo em que via a minha menção a livros não técnicos como algo "off topic": hoje já vejo como algo totalmente "in topic" pois está bem claro pra mim que os melhores profissionais são aqueles que vão bem além do teclado. Faz todo o sentido se você pensar que software interage com o mundo humano.&lt;/p&gt;

&lt;h3&gt;Laranja Mecânica - Antony Burgess&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LU0uFXNg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://m.media-amazon.com/images/I/51AES0xVwHL.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LU0uFXNg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://m.media-amazon.com/images/I/51AES0xVwHL.jpg" alt="Laranja mecânica por [Anthony Burgess]" width="328" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No meu &lt;a href="https://devkico.itexto.com.br/?p=3267"&gt;post do ano passado&lt;/a&gt; disse que estava finalizando Laranja Mecânica e só o fiz em janeiro, então ele entra nesta lista. Mas mais do que isto: foi o livro que me acompanhou durante todo este período graças à minha relação com Alex, o protagonista.&lt;/p&gt;

&lt;p&gt;Burgess mostra neste livro como a linguagem e a ignorância de Alex expõem sua visão de mundo (determinismo linguístico clássico!). Enquanto parte de um grupo extremamente ignorante ao ponto de, por falta de vocabulário (notaram como estou usando esta palavra aqui?) criar um idioma próprio e depois, mais vivido e culto, o abandono deste vocabulário próprio e adoção de um mais civilizado, deixando pra trás seu passado criminoso.&lt;/p&gt;

&lt;p&gt;Enquanto alguém de 42 anos (43 dia 9) me pegava pensando no meu duplo papel enquanto leitor: como alguém mais velho que interage com uma geração mais nova e me lembrando quando era mais jovem e como interagia com a geração mais velha. Este diálogo interno entre mim, Alex e o mundo enriqueceu horrores o meu ano.&lt;/p&gt;

&lt;h3&gt;A Peste - Albert Camus&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J_oCfmdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ufmg.br/thumbor/TCuLmT_PxZU2cgN8JD8ncpVnGH8%3D/0x0:1660x2560/1660x2560/https://ufmg.br/storage/6/1/9/5/619585d48223d6a64517786894a124da_15846234822211_1756346235.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J_oCfmdW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ufmg.br/thumbor/TCuLmT_PxZU2cgN8JD8ncpVnGH8%3D/0x0:1660x2560/1660x2560/https://ufmg.br/storage/6/1/9/5/619585d48223d6a64517786894a124da_15846234822211_1756346235.jpg" alt="Ver a imagem de origem" width="880" height="1357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Já que estou em uma pandemia, por que não, né? Neste caso foi quase uma releitura, pois meu primeiro contato com este livro se deu quando tinha uns 16, 17 anos. E ao reencontrá-lo em 2021 percebi que &lt;strong&gt;não havia entendido NADA daquela primeira leitura&lt;/strong&gt;. :D&lt;/p&gt;

&lt;p&gt;É fascinante você observar os paralelos entre a realidade descrita por Camus e o que vivemos neste ano. A desinformação, o momento em que negamos uma realidade que pode se mostrar terrível, a aceitação da mesma, o pânico... é quase uma descrição de 2020 e 2021 aqui no Brasil. Valeu cada página.&lt;/p&gt;

&lt;h3&gt;Lula, volume 1: Biografia - Fernando Morais&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uqAi5lXO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/417PXb0d8xL._SX345_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uqAi5lXO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/417PXb0d8xL._SX345_BO1%2C204%2C203%2C200_.jpg" alt="" width="347" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em tempos polarizados (será que estamos tão polarizados assim hoje?) mencionar uma personagem como Lula pode gerar reações interessantes. O que posso dizer então? Goste ou não de Lula (o curioso da pessoa que me critica por ter lido a biografia do Lula mas lê a do Hitler...), pode ler esta biografia, é &lt;strong&gt;magistral&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;É uma biografia diferente: não segue o formato clássico do momento do nascimento até o último momento da personagem. Começa a narrativa a partir da prisão de Lula em 2018 e faz uma narrativa quase que de hora em hora do que aconteceu. É Fernando Morais clássico: se você já leu os outros trabalhos dele sabe o que vai encontrar.&lt;/p&gt;

&lt;p&gt;Pode ler como literatura, é certo que você vai gostar e muito da coisa. Há os que dirão que é um material político... com certeza é, mas se for pra ser, que seja algo muito bem escrito pelo menos. Fazia muitos anos que não lia uma biografia tão boa.&lt;/p&gt;

&lt;h3&gt;A Criação do Patriarcado: História da Opressão das Mulheres pelos Homens - Gerda Lerner&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U9skLidN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51B8UEZh6GL._SX337_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U9skLidN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51B8UEZh6GL._SX337_BO1%2C204%2C203%2C200_.jpg" alt="" width="339" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É um soco no estômago enquanto homem este livro: que narra desde a antiguidade até os tempos atuais como foi criado o patriarcado e de que formas se manifestou a opressão às mulheres e as hipóteses apresentadas pela autora são fascinantes. Se você gosta de história tá aí um belo livro: muitas referências e uma pesquisa claramente muito bem feita. Me impactou bastante.&lt;/p&gt;

&lt;p&gt;A introdução escrita para esta edição por Lola Aronovich já te ganha. Está disponível no Kindle Unlimited caso você seja assinante.&lt;/p&gt;

&lt;h3&gt;O Genocídio do Negro Brasileiro - Abdias Nascimento&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X8AuJeD3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/418lJWSK32L._SX365_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X8AuJeD3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/418lJWSK32L._SX365_BO1%2C204%2C203%2C200_.jpg" alt="" width="367" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E aqui um soco no estômago enquanto branco: este livro do Abdias Nascimento me foi indicado pela Nanna para que fosse lido. Tem uma história curiosa: o texto aparece pela primeira vez em 1977 para ser apresentado em um congresso na Nigéria e que é duramente sabotado por mostrar, já naquela época, uma visão sobre a história brasileira discordante da que nos foi imposta pelos militares durante a ditadura e que tem seu retorno com os bolsonaristas atuais.&lt;/p&gt;

&lt;p&gt;É importante ler este texto hoje pra que tenhamos uma visão mais dura da monstruosidade a que foram submetidas estas pessoas e pra entender que sim, há uma dívida histórica. &lt;/p&gt;

&lt;h3&gt;Uzumaki - Junji Ito&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hVOO8iFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/515ymxY5X%2BL._SX346_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hVOO8iFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/515ymxY5X%2BL._SX346_BO1%2C204%2C203%2C200_.jpg" alt="" width="348" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eu pagando língua aqui: sempre achei animes muito, muito, muito chatos. Mas ouvi &lt;a href="https://open.spotify.com/episode/44lW37U60fQBNWSG7EhVGl?si=MkjIo4-eQYa3x5tXRZxTnQ"&gt;um episódio&lt;/a&gt; do podcast Mundo Freak Confidencial que me deixou curioso sobre o autor e... que negócio maluco! Que narrativa bizarra! Me ganhou.&lt;/p&gt;

&lt;p&gt;Primeiro por que como nunca tinha lido um anime (então como eu achava "muito muito muito chato"? puro preconceito) então li ao contrário primeiro. Aí vi que tinha de ler do outro modo. Dos dois modos gostei bastante. Leria mais coisas do autor? Não: confesso que me exauriu ali, mas fica aqui minha sugestão de quadrinho pra quem curte pois realmente gostei muito deste.&lt;/p&gt;

&lt;h3&gt;1177 B.C: The Year Civilization Colapsed - Eric H. Cline&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SC6lJjtR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51HIYFUJQzL._SX326_BO1%2C204%2C203%2C200_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SC6lJjtR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images-na.ssl-images-amazon.com/images/I/51HIYFUJQzL._SX326_BO1%2C204%2C203%2C200_.jpg" alt="" width="328" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você sabia que houve um colapso civilizatório neste ano? Eu também não: e este livro que descobri por acaso quando o YouTube me mostrou &lt;a href="https://www.youtube.com/watch?v=bRcu-ysocX4&amp;amp;t=2s"&gt;este vídeo &lt;/a&gt;chamou muito minha atenção então acabei com este material em mãos.&lt;/p&gt;

&lt;p&gt;E é fascinante e assustador como Cline faz paralelos entre o que ocorre na era do bronze e os tempos atuais. Como uma curiosidade histórica é bem interessante. Não cheguei a buscar críticas a este livro, mas como leitura, vale à pena. Tem no Kindle.&lt;/p&gt;

&lt;h1&gt;Projeto pra leituras de 2022&lt;/h1&gt;

&lt;p&gt;Enquanto escrevia este post não me saia da cabeça a impressão de que estava esquecendo algum material que tenha me sido importante. Talvez não tenha sido tão importante assim já que o esqueci, mas poderia ter sido importante para alguém que leia este blog. Sendo assim vou tentar durante este ano ir publicando aqui as coisas interessantes que leio. Não prometo, mas vou tentar, ok? &lt;/p&gt;

&lt;p&gt;Que 2022 seja melhor que os dois anos anteriores que tivemos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=5V9i6ndGwD8"&gt;https://www.youtube.com/watch?v=5V9i6ndGwD8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=3377"&gt;Minhas boas leituras de 2021&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>ptbr</category>
      <category>leituras</category>
      <category>livros</category>
    </item>
    <item>
      <title>O que pode prejudicar seu aprendizado no desenvolvimento de software</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 04 Apr 2022 05:06:07 +0000</pubDate>
      <link>https://dev.to/loboweissmann/o-que-pode-prejudicar-seu-aprendizado-no-desenvolvimento-de-software-13c7</link>
      <guid>https://dev.to/loboweissmann/o-que-pode-prejudicar-seu-aprendizado-no-desenvolvimento-de-software-13c7</guid>
      <description>&lt;p&gt;Conforme a empresa cresce boa parte do meu tempo hoje é investida na formação de pessoas que estão iniciando na carreira de desenvolvimento de software na &lt;a href="https://itexto.com.br"&gt;itexto&lt;/a&gt;, &lt;a href="https://www.investtools.com.br"&gt;InvestTools&lt;/a&gt; ou em nossos clientes. Esta experiência já tem uns bons anos (desde a fundação da itexto) e acabei detectando alguns padrões que dificultam muito o processo de aprendizado de quem está dando os primeiros passos na área. Antes de começar, dois pontos importantes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Esta não é uma lista exaustiva, mas sim os comportamentos que observo com maior frequência: leve em consideração que estou tratando do meu ambiente de trabalho que pode ser (e é) bem diferente do seu.&lt;/li&gt;
&lt;li&gt;Estou escrevendo para quem está começando a programar e sente dificuldades em assimilar tanto conteúdo e não para aqueles que tem como função formar estes profissionais.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Ilusão de poder&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CvnT2iQn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/ilusao.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CvnT2iQn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/ilusao.jpeg" alt="" width="640" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É fácil se enganar achando que desenvolver software é fácil: não é, e pela minha experiência tem se tornado mais difícil com o tempo (na minha opinião involuímos (nota mental: escrever um post mostrando historicamente como isto ocorreu)). Acredito que dois fatores criam esta ilusão, sendo  primeiro deles a &lt;strong&gt;volta da oralidade.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(Na minha experiência a maior parte dos desistentes existe ao caírem nesta armadilha)&lt;/p&gt;

&lt;h3&gt;A volta da oralidade&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"Volta da oralidade"?&lt;/strong&gt;  Na Grécia arcaica dominava a oralidade: a Ilíada e a Odisseia, textos fundadores da cultura Grega, eram passados oralmente. Com o tempo a escrita substituí a oralidade e gera questionamentos na época: no Fedro (de Platão), Sócrates chega a dizer que apesar da escrita parecer ser um remédio para a memória, &lt;a href="https://sapientia.pucsp.br/handle/handle/11727"&gt;na realidade seria um mal&lt;/a&gt; (ironicamente este diálogo é &lt;strong&gt;escrito&lt;/strong&gt;). &lt;/p&gt;

&lt;p&gt;Em tempos recentes algo similar volta a acontecer: o YouTuber é o novo &lt;a href="https://pt.wikipedia.org/wiki/Homero"&gt;Homero&lt;/a&gt;, só que muito mais carismático. Não me leve a mal: há material MARAVILHOSO publicado (talvez a maior parte) tanto no YouTube como na forma de cursos online baseados em vídeo. São bem produzidos, os autores de uma eloquência incrível, gente muito bem preparada mesmo. Porém não raro há uma falha que pode ser fatal: raríssimas vezes há erros nas gravações. Tudo flui com perfeição: o código é escrito de tal forma que funciona de primeira. Iniciante, não se engane: as aulas sempre são ensaiadas (até pra que tenham a qualidade que tem).&lt;/p&gt;

&lt;p&gt;(é por isto que meus treinamentos sempre são ao vivo: todos aprendemos HORRORES com meus vacilos (que não são raros)!)&lt;/p&gt;

&lt;p&gt;E aqui &lt;strong&gt;o problema não está em quem produz conteúdo&lt;/strong&gt;, mas no espectador pelo &lt;strong&gt;modo como o consome&lt;/strong&gt; passivamente. &lt;strong&gt;Todo conteúdo didático deveria ser consumido como um diálogo entre espectador e autor, não como se fosse um filme&lt;/strong&gt; &lt;strong&gt;de ação&lt;/strong&gt;. Então, como você, iniciante, deveria consumir este conteúdo? Seguem algumas sugestões:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Não use a funcionalidade de aceleração de conteúdo&lt;/strong&gt;: a informação não é transmitida apenas pelas palavras, mas também pela &lt;strong&gt;entonação&lt;/strong&gt; do autor. Uma pausa pode representar, por exemplo, uma ironia. &lt;/li&gt;
&lt;li&gt;Use e abuse da possibilidade de poder assistir o mesmo trecho várias vezes: não entendeu o que a pessoa disse? &lt;strong&gt;Volte e assista de novo quantas vezes for necessário&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Questione&lt;/strong&gt; o que está sendo dito: ouviu o que a pessoa disse, será que está certo mesmo? Mentalmente você consegue conceituar aquilo que foi dito?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Se é código fonte sendo exposto, programe junto!&lt;/strong&gt; Pause o vídeo: abra seu editor ou IDE e experimente o código exposto por si mesmo. Evite copiar me colar: &lt;strong&gt;digite&lt;/strong&gt;. Deu errado? Tente de novo até entender aonde está seu erro.&lt;/li&gt;
&lt;li&gt;Tem dúvidas e existe um canal de comunicação? Use-o! Não tenha vergonha de perguntar: é &lt;strong&gt;obrigação moral &lt;/strong&gt; de quem está instruindo considerar todas as dúvidas válidas.&lt;/li&gt;
&lt;li&gt;Há exercícios? Faça-os e no processo pense em como o conteúdo apresentado se relaciona aos problemas que você está resolvendo.&lt;/li&gt;
&lt;li&gt;Não há exercícios? Invente os seus próprios, se questione sobre o que está aprendendo.&lt;/li&gt;
&lt;li&gt;São mencionadas outras fontes no conteúdo? Se sim, explore todas, se não, desconfie do curso (mais sobre isto falo &lt;a href="https://devkico.itexto.com.br/?p=2539"&gt;neste link&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Resumindo: tenha paciência no consumo do conteúdo e o faça de modo &lt;strong&gt;interativo e não passivo.&lt;/strong&gt; É por isto que como avaliador (e não só eu) não dou tanto valor a "certificados de conclusão" de cursos online: como saber se você de fato &lt;strong&gt;interagiu&lt;/strong&gt; e aprendeu no processo?&lt;/p&gt;

&lt;p&gt;Agora posso ir para aquela que considero ser a segunda causa da "ilusão de poder": você pode estar &lt;strong&gt;aprendendo ao contrário&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;Aprendendo ao contrário&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wca04cd4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/sedimentos.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wca04cd4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/sedimentos.jpeg" alt="" width="640" height="337"&gt;&lt;/a&gt;Os aprendizado é construído como sedimentos, de baixo pra cima&lt;/p&gt;

&lt;p&gt;Todo conhecimento (ou quase todo (desenvolvimento de software com certeza sim)) se constrói de forma sedimentar. Você aprende alguns conceitos elementares, fixa-os em sua mente (os sedimenta), brinca com eles, tenta aplicá-los a elementos do seu dia a dia (a la Paulo Freire).&lt;/p&gt;

&lt;p&gt;Na sequência, com base nestes conceitos elementares, que agora formam uma camada em sua mente, começam a ser depositados conceitos e ideias baseados na camada abaixo. E segue assim sucessivamente, sempre criando novas abstrações sobre o que já está sedimentado. Há vezes em que você irá sedimentar camadas que ultrapassam mais de uma abaixo, mas elas vão se montando, e com o tempo, tal como na imagem acima, você passa a entender como as camadas foram se formando.&lt;/p&gt;

&lt;p&gt;Você não aprende a escrever frases sem antes aprender as palavras e as letras, o espaço... Aí na sequênciaaprendemos diferentes tipos de pontuação (a exclamação, a interrogação, as reticências...), e aí você começa a escrever seus primeiros parágrafos, textos, capítulos, livros.&lt;/p&gt;

&lt;p&gt;No desenvolvimento de software vejo ocorrer o contrário: a pessoa aprende primeiro o framework (React Native, por exemplo), no meio do processo uma coisa no meio é exposta de forma praticamente acidental (a linguagem (JavaScript, TypeScript, outra qualquer)), surgem umas ferramentas que compilam seu projeto e de repente ele tá executando no seu celular como mágica.&lt;/p&gt;

&lt;p&gt;Não raro o primeiro projeto aprendendo assim costuma dar certo por serem coisas bem simples (lista de to-dos...), mas passado pouco tempo você começa a se sentir perdido por não entender COMO as coisas funcionam, POR QUÊ é deste jeito? Por que não funciona mais? Por que tá dando tão errado?&lt;/p&gt;

&lt;p&gt;Eu adoraria que tivéssemos evoluído ao invés de involuir tecnicamente, mas você &lt;strong&gt;precisa conhecer os fundamentos se quiser ir além de projetos que servem como introdução a frameworks e ferramentas.&lt;/strong&gt; Há uma pletora de coisas que é necessário conhecer: a linguagem de programação, lógica de programação (há quem diga que não, mas não levo a sério este papo), algoritmos, &lt;a href="https://devkico.itexto.com.br/?p=2760"&gt;o que vêm a ser um framework de fato&lt;/a&gt;, aonde seu código irá ser executado... &lt;/p&gt;

&lt;p&gt;É muita coisa: talvez você não tenha tempo de aprender tudo isto. Talvez a faculdade não seja uma opção pra você (eu mesmo só fiz faculdade anos após estar no mercado (sim, recomendo muito)), talvez você tenha sido aceito em um novo emprego, usem uma ferramenta e você precise aprendê-la rápido. Então, o que sugiro?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Busque os conceitos durante o aprendizado - se vai começar aprendendo ao contrário, na leitura do material busque identificar os conceitos. Identificou os que acredita ser essenciais? Se possível, pare o que está fazendo e busque uma definição rápida dos mesmos.&lt;/li&gt;
&lt;li&gt;Use e abuse da documentação oficial. Não raro esta possui duas seções: Tutorial e Guia do desenvolvedor. Evite começar pelo Tutorial e vá para o guia maior, pois normalmente é lá que os conceitos principais da ferramenta são tratados.&lt;/li&gt;
&lt;li&gt;Descubra onde esta ferramenta é executada: se é um framework, qual a linguagem de programação? Se é o desenvolvimento de uma aplicação móvel, trata-se de qual plataforma? É baseado em outro framework, se sim, qual ou quais? Com base nestas informações, caso esteja cru nestes assuntos, pause o aprendizado da ferramenta e comece por estes outros assuntos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Planeje seus estudos&lt;/strong&gt; - deveria ter sido  primeiro item da lista. Infelizmente não somos ensinados a fazer isto. Bom: criei uma metodologia pra tal que você pode ver &lt;a href="https://devkico.itexto.com.br/?p=3093"&gt;neste lin&lt;/a&gt;k.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Rápido disclaimer sobre a "ilusão de poder"&lt;/h3&gt;

&lt;p&gt;Não é raro que eu levante o tema "ilusão de poder" e seja chamado de "gate keeper", "elitista", etc. Entenda: não estou dizendo que desenvolver software seja algo pertencente apenas a uma elite, pelo contrário: estou te mostrando que há um caminho a ser seguido que te permite construir as estruturas mentais para que possa ir muito além, minimizando com isto a frustração.&lt;/p&gt;

&lt;p&gt;Não raro encontro pessoas desesperadas sem entender por que não conseguem avançar no desenvolvimento de seus projetos e adivinha a causa? Duas: consumo passivo de conteúdo e aprendizado superficial dos frameworks que estão sendo adotados.&lt;/p&gt;

&lt;p&gt;Você se ilude achando que é fácil, consegue entregar o primeiro projeto e a partir do terceiro ou quarto, conforme a confiança dos outros sobre você aumenta, também aumenta a complexidade do que lhe será pedido. Normal: é a vida.&lt;/p&gt;

&lt;h2&gt;Uma apresentação muito limitada do mercado&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kwFcOGKY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/viseira-1024x788.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kwFcOGKY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/viseira-1024x788.jpeg" alt="" width="880" height="677"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tratei deste assunto no meu último post aqui (&lt;a href="https://devkico.itexto.com.br/?p=3475"&gt;A Web Como Martelo&lt;/a&gt;), mas talvez o lugar daquele post seja este. Tal como ali disse, talvez seja apenas minha impressão, mas a mídia especializada reinante hoje sobre desenvolvimento de software fala tanto de desenvolvimento web, e apenas de desenvolvimento web, que muitas vezes para quem está querendo entrar no mercado cria-se a impressão de só haver... desenvolvimento web.&lt;/p&gt;

&lt;p&gt;E isto é péssimo pra quem está começando: cada um é um, então será que a dificuldade que você está enfrentando em aprender desenvolvimento de software seria por que desenvolvimento web neste momento é complicado demais pra sua condição atual? Não me leve à mal: talvez você tenha mais facilidade em outra área pra começar, como, por exemplo, programação de baixo nível, desktop, científica, etc. Você poderia começar por outra área na qual se sente mais à vontade (e se descubra) e depois, melhor preparado, voltar ao desenvolvimento web, o que me acha? &lt;/p&gt;

&lt;p&gt;Vejo isto com muita frequência: aí o que faço é apresentar estas outras áreas à pessoa. Convenhamos: a web requer uma série de conhecimentos que não raro se relacionam de forma muito íntima e difícil pra quem está começando. Nem tanto por serem assuntos complexos (são), mas por serem &lt;strong&gt;muitos.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Então, se você está tendo muita dificuldade em aprender a desenvolver software e começou pela web, vou mencionar algumas outras áreas aqui pra que você pesquise a respeito. Quem sabe você não se apaixona/descubra em uma destas?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desenvolvimento desktop - ainda existe (e muito). Setor financeiro, por exemplo, adora.&lt;/li&gt;
&lt;li&gt;Jogos (ignore os jogos pra web :) neste primeiro contato!)&lt;/li&gt;
&lt;li&gt;Algoritmos científicos - existe todo um mercado de pesquisadores que precisam de programadores que materializem suas ideias.&lt;/li&gt;
&lt;li&gt;Financeiro - implementação de cálculos, protocolos de comunicação e integração, ferramentas de auditoria (há muito desenvolvimento web também, mas acho interessante mencionar apenas estes pontos aqui).&lt;/li&gt;
&lt;li&gt;Ferramentas de linha de comando - como os comandos do Linux, por exemplo. Existe todo um mercado pra isto, e você ainda pode explorar projetos muito interessantes, como o &lt;a href="https://github.com/curl/curl"&gt;cURL&lt;/a&gt;, por exemplo.&lt;/li&gt;
&lt;li&gt;Desenvolvimento de baixo nível, como o do Linux, por exemplo.&lt;/li&gt;
&lt;li&gt;Criação de aplicações gráficas (meio que cai no universo desktop).&lt;/li&gt;
&lt;li&gt;Implementação de protocolos de comunicação (o cURL que citei acima é um belo exemplo).&lt;/li&gt;
&lt;li&gt;Segurança da informação.&lt;/li&gt;
&lt;li&gt;Inteligência artificial.&lt;/li&gt;
&lt;li&gt;Ferramentas de desenvolvimento de software. Pra quem tá começando? Sim! Talvez a sua dificuldade seja na realidade a oportunidade de ajudar outras pessoas em um problema comum, porém não identificado ainda.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lista é quase infinita, e a que coloquei acima é bem limitada. O importante é saber que existe muita vida &lt;strong&gt;além da web.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;Ter paciência com o conceito&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_4FBETuO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/hegel.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_4FBETuO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2022/04/hegel.jpeg" alt="" width="600" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando se está começando há sempre aquela ansiedade em se ir pra prática o mais rápido possível. É normal: passei por isto também (ainda passo), porém este é talvez o maior problema e está conectado à questão da "volta à oralidade" que mencionei no início deste post. Resumo: &lt;strong&gt;você precisa ler sequencialmente&lt;/strong&gt; e ser paciente em relação ao seu processo de aprendizagem (mais ou menos o que Hegel chamava de "paciência do conceito").&lt;/p&gt;

&lt;p&gt;(quase doze anos atrás (!!!) escrevi sobre isto &lt;a href="https://devkico.itexto.com.br/?p=728"&gt;aqui&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Há muitas fontes de informação que você pode seguir: livros, cursos, vídeos, palestras, documentações, forums, etc. E aí está um problema: é impossível consumir tudo isto ao mesmo tempo, mas a nossa ansiedade acaba nos forçando a tal. E aí o que ocorre? Consumimos picadinho tudo isto e no final do processo absorvemos muito pouco.&lt;/p&gt;

&lt;p&gt;Minha sugestão aqui é que você escolha uma das opções que surgirem em sua frente, agarre-a e leia do início ao fim, &lt;strong&gt;especialmente se for um livro ou curso.&lt;/strong&gt; Quem cria este tipo de conteúdo traça para você um caminho (daí o nome "curso") de aprendizado que acredita ser o ideal para que se construa o conhecimento essencial ou uma boa introdução sobre o tema. Se você é um iniciante provavelmente não sabe ainda qual o melhor caminho a seguir, certo? Então: alguém já traçou um pra você e isto é ótimo!&lt;/p&gt;

&lt;p&gt;O problema das inúmeras fontes no entanto ainda persiste. Neste caso indico de novo minha metodologia de planejamento de estudos pois nela mostro como você pode selecionar e categorizar todas estas fontes de aprendizado para otimizar melhor seu tempo (aqui o &lt;a href="https://devkico.itexto.com.br/?p=3093"&gt;link&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Mas a questão vai além: muitas vezes lemos inúmeras vezes um texto e não conseguimos entender  que está ali. No meu caso, por sorte percebi ser quase analfabeto funcional quanto tinha mais de vinte anos. Tive de literalmente reaprender a ler. E esta é uma pergunta que você deve se fazer com muita coragem e honestidade: estou realmente sabendo ler? Anos atrás relatei esta minha experiência &lt;a href="https://devkico.itexto.com.br/?p=2555"&gt;neste texto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Como você pode verificar se está conseguindo conceituar bem o que está aprendendo? Escreva: crie um blog (pode ser anonimamente), mande seus textos a alguém. Se a pessoa entender o que está escrito ali, é provável que você tenha aprendido.&lt;/p&gt;

&lt;h1&gt;Concluindo&lt;/h1&gt;

&lt;p&gt;Se você chegou até aqui talvez já tenha conseguido (ou está conseguindo) superar o problema da paciência do conceito ( :) ). O importante é que você tenha a consciência de que aprender realmente é difícil para todo mundo: não há atalhos, mas a partir do momento em que o problema é reconhecido o caminho fica mais nítido. Bons estudos!&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=3525"&gt;O que pode prejudicar seu aprendizado no desenvolvimento de software&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>carreira</category>
      <category>aprendizado</category>
      <category>braziliandevs</category>
      <category>ptbr</category>
    </item>
    <item>
      <title>A web como martelo</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 04 Apr 2022 00:08:13 +0000</pubDate>
      <link>https://dev.to/loboweissmann/a-web-como-martelo-am0</link>
      <guid>https://dev.to/loboweissmann/a-web-como-martelo-am0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A criança nunca sabe o que é um martelo, até confundir o dedo com um prego.&lt;/p&gt;
&lt;cite&gt;Stephen King&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ah, aplicações web: se você está começando a programar agora é grande a probabilidade de até este momento só ter desenvolvido aplicações web, certo? Talvez ela tenha um front-end feito com algum framework de mercado (Vue? Angular? React?), talvez seja apenas um conjunto de endpoints (aka "API" (alguém ainda usa SOAP?)). &lt;strong&gt;No entanto, já se questionou quais seriam os limites da web?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;Como deveria ser a interação com uma aplicação web?&lt;/h2&gt;

&lt;p&gt;Do ponto de vista de interação com usuários (sejam estes humanos ou não) em teoria deveríamos ter todas as interações baseadas no princípio de requisições ao servidor que nos retornem &lt;strong&gt;rapidamente&lt;/strong&gt; um resultado ou que, pelo menos, não nos bloqueiem após termos realizado a requisição ao servidor.&lt;/p&gt;

&lt;p&gt;Mesmo que a aplicação web não tenha um servidor e seja executada inteiramente no browser, o ideal é que seja responsiva. Aliás, não é por acaso que ainda hoje o JavaScript adota um modelo não bloqueante de desenvolvimento quando o assunto é I/O, né?&lt;/p&gt;

&lt;p&gt;E é aqui que aparece  problema.&lt;/p&gt;

&lt;h2&gt;O problema está em achar que programar se limita a escrever aplicações web&lt;/h2&gt;

&lt;p&gt;Não me entenda mal: gosto de escrever aplicações web e a maior parte do que faço são sistemas que usam a web como meio. Mas mais do que programar, a maior parte do meu trabalho é &lt;strong&gt;evoluir sistemas que não foram projetados ou programados por mim&lt;/strong&gt; (&lt;a href="https://www.youtube.com/watch?v=9wL3RMhHwQw"&gt;link&lt;/a&gt;), e na minha experiência o que observo como um dos principais problemas arquiteturais é justamente o que chamo de "web em excesso". &lt;/p&gt;



&lt;p&gt;Explico: chamo de "web em excesso" quando &lt;strong&gt;todo processamento no sistema é inteiramente executado em requisições web.&lt;/strong&gt; Com certeza você que programa já topou com situações assim: aquela requisição que realiza longos cálculos que demoooooram a fornecer uma resposta ao usuário final, aquela importação de dados a partir de um endpoint que recebe milhares de registros a serem processados que poderia ser feita de forma assíncrona ou mesmo aquelas tarefas agendadas que são executadas no seu monolito, lembra delas? Resumindo: requisições que &lt;strong&gt;duram demais.&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;E é muito fácil cometer este erro: estamos tão habituados em escrever aplicações web (e apenas aplicações web...) que fica difícil muitas vezes (especialmente em dias apertados) projetar um processamento que não seja iniciado, desenvolvido e finalizado em uma única requisição. E quando usamos frameworks full stack como Rails ou Grails, devido à própria facilidade no desenvolvimento, mesmo que estejamos incluindo toda a lógica de negócio em serviços acabamos por esquecer algo importante: &lt;strong&gt;requisições web devem ter vida curta&lt;/strong&gt;.&lt;/p&gt;



&lt;p&gt;Repare: &lt;strong&gt;não estou dizendo que os processamentos devam ser rápidos, mas que as requisições que os iniciam tenham vida curta&lt;/strong&gt;. Resolver este problema no desenvolvimento de aplicações é relativamente simples e possui &lt;strong&gt;longa&lt;/strong&gt; bibliografia: você pode começar a pensar e programar assincronamente, mover o esforço pesado para processos externos, modularizar melhor sua aplicação, enfim: há diversas soluções pra isto. &lt;strong&gt;A questão da requisição longa é apenas um sintoma de um problema maior.&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;(arquiteturalmente falando o ideal é que a web seja um componente do seu sistema, e não TODO o sistema se for uma aplicação grande)&lt;/p&gt;



&lt;h2&gt;Quando a web te limita profissionalmente&lt;/h2&gt;

&lt;p&gt;Estou nesta vida desde 1996: dado que hoje estou com 43 anos, mais da metade do meu tempo na Terra foi desenvolvendo software. Comecei quando o desenvolvimento era centrado no desktop e vivi o trauma da transição para a web: foi horrível e muitos colegas da época não conseguiram fazer a transição que, no meu caso, se consolidou MESMO só lá pros idos de 2004, 2005. &lt;/p&gt;



&lt;p&gt;E neste tempo todo passei por vários ambientes de desenvolvimento e, graças à itexto, por uma gama de mercados que pouquíssimas pessoas tiveram o privilégio de conhecer, o que me permitiu escrever, projetar ou participar direta e indiretamente de softwares de uma infinidade de tipos: integrações, aplicações desktop, linha de comando, ferramentas de baixo nível, sistemas comerciais, corporativos, segurança, protocolos de comunicação, drivers, sistemas de arquivo, plataformas de e-commerce, jogos, sistemas operacionais (indiretamente), comunicações, embarcados, gráficos (tipo CAD), automação industrial, aplicações científicas, engenharia, matemáticas, financeiros, linguagens de programação (desculpe!), inteligência artificial, áudio, aeroespacial (!)... &lt;/p&gt;



&lt;p&gt;Após ter passado por tanta coisa sabe o que me choca? Gente jovem que pensa em desenvolvimento de software estritamente como... desenvolvimento web "apenas". Nada de errado em ser excelente em desenvolvimento web, mas a pergunta que me faço é: será que estas pessoas não poderiam ser ainda melhores se explorassem também outras áreas do desenvolvimento? E os sistemas que projetam, não poderiam ser ainda mais fantásticos? &lt;/p&gt;



&lt;p&gt;Tenho visto muitas discussões sobre a dificuldade de pessoas iniciantes em entrarem no mercado. É realmente muito difícil, mas será que não fica ainda mais difícil por se focar o aprendizado de desenvolvimento e engenharia de software apenas no mundo web quando a esmagadora maioria das pessoas olha apenas para este mercado?&lt;/p&gt;



&lt;p&gt;E todos estes outros nichos que não aparecem tanto na "mídia especializada" (que convenhamos, hoje é dominada por um monte de "influencers" que ao menos pra mim parecem todos iguais), será que não mereciam um pouco mais de atenção nas publicações/vídeos/podcasts/lives? Pouco tempo atrás o &lt;a href="https://twitter.com/adrianolcp"&gt;Adriano&lt;/a&gt; me mostrou uma realidade que não acreditei num prieiro momento: uma IMENSA quantidade de vagas para desenvolvedores... C++! Realmente: o mercado de engenharia precisa deste pessoal, mas pouco se fala a respeito.&lt;/p&gt;



&lt;p&gt;(aliás, já notou como a mídia escrita para desenvolvimento praticamente morreu? (algo a se pensar))&lt;/p&gt;



&lt;p&gt;Meses atrás implementei uma automação industrial de baixo nível com equipamentos usando Rust e comunicação por sockets apenas. Poderia ter sido feito em Java/C#/C++/VB/JavaScript ou qualquer outra linguagem que permita comunicação neste formato. E sabe  que me chamou a atenção? Um iniciante poderia facilmente aprender o suficiente para se tornar produtivo em pouco tempo. Você não seria um expert, claro, mas conseguiria se virar sozinho. (e há menos pra se aprender ALI do que no desenvolvimento web pra ser eficiente, acredita?)&lt;/p&gt;



&lt;p&gt;Resumindo: na minha opinião se você quando pensa em um sistema já começa decidindo que este deveria ser web sem sequer vislumbrar outras possibilidades talvez seja o sintoma de uma percepção bem limitada do mercado.&lt;/p&gt;



&lt;h2&gt;Concluindo&lt;/h2&gt;



&lt;p&gt;Amo projetar e programar sistemas: talvez este "excesso de web" seja uma percepção equivocada minha, resultado do meio em que vivo, mas talvez haja alguma coisa por trás desta fumaça.&lt;/p&gt;



&lt;p&gt;Semanas atrás dei uma relida no Kant que levanta a possibilidade do nosso conhecimento ser muito limitado pelo modo como percebemos o mundo (e a estrutura interna da nossa mente). Talvez este excesso de web quando programamos nos cegue para todo um Universo que pudéssemos explorar por aí.&lt;/p&gt;



&lt;p&gt;Quem sabe? Bom: anos atrás escrevi algumas coisas sobre "determinismo linguístico", que você pode conferir nestes links. Faz muitos anos que escrevi isto, mas minha opinião não mudou muito. Você encontra estes textos neste &lt;a href="https://devkico.itexto.com.br/?page_id=766"&gt;link&lt;/a&gt; do "Essencial de /dev/Kico".&lt;/p&gt;







&lt;p&gt;The post &lt;a href="https://devkico.itexto.com.br/?p=3475"&gt;A web como martelo&lt;/a&gt; appeared first on &lt;a href="https://devkico.itexto.com.br"&gt;/dev/Kico&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>carreira</category>
      <category>arquitetura</category>
      <category>braziliandevs</category>
      <category>ptbr</category>
    </item>
    <item>
      <title>O framework "Maria vai com as outras"</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 21 Jun 2021 13:46:48 +0000</pubDate>
      <link>https://dev.to/loboweissmann/o-framework-maria-vai-com-as-outras-1j1h</link>
      <guid>https://dev.to/loboweissmann/o-framework-maria-vai-com-as-outras-1j1h</guid>
      <description>&lt;p&gt;&lt;em&gt;Texto escrito em 2012&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devkico.itexto.com.br/wp-content/uploads/2011/06/Snoopy-Joe-Cool.jpg"&gt;&lt;img title="Snoopy-Joe-Cool" src="https://res.cloudinary.com/practicaldev/image/fetch/s--DSCJUKJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2011/06/Snoopy-Joe-Cool-199x300.jpg" alt=""&gt;&lt;/a&gt;"Sabe Kico, eu acho Grails muito legal, mas fico receoso em usá-lo no meu novo projeto porque não é um framework muito popular. O que você acha disto?". Escuto esta pergunta umas 4 ou 5 vezes por semana. Então resolvi me aprofundar nesta questão e, como resultado, surgiu este post, que não deve ser lido como algo específico sobre Grails, mas sim meus pensamentos aplicados a qualquer tecnologia "nova" ou "menos popular".&lt;/p&gt;

&lt;h2&gt;Definição de popularidade&lt;/h2&gt;

&lt;p&gt;A definição mais ingenua seria "aquilo que é muito usado" porque só leva em consideração a quantidade, ignorando completamente "quando" e "onde".&lt;/p&gt;

&lt;p&gt;Muitas vezes escuto a seguinte frase: "tecnologia X não é muito popular, pois não conheço muitas pessoas que a usam". É um argumento idiota: basta pedir ao sujeito que saia um pouco da sua zona de conforto e pesquise direito antes de falar bobagem. 90% dos profissionais com quem lido trabalham com Java. Isto quer dizer que .net seja impopular?&lt;/p&gt;

&lt;p&gt;Outro bom contra-exemplo: Cobol. Não conheço nenhum programador COBOL, mas um estudo de 2007 da &lt;a href="http://www.linuxinsider.com/story/55216.html?wlc=1307819305"&gt;Gartner &lt;/a&gt;descobriu que 75% (SETENTA E CINCO PORCENTO) das aplicações corporativas eram escritas em... bem: Cobol.&lt;/p&gt;

&lt;p&gt;Sendo assim, &lt;strong&gt;antes de pensar na popularidade de uma tecnologia, remova as suas impressões pessoais sobre o assunto&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Popular então é algo que possua um grande número de usuários em um certo domínio em um dado momento. Ok, uma definição mais completa, mas que não adiciona nada (ao menos pra mim), e que levanta a seguinte questão:&lt;/p&gt;

&lt;h2&gt;Qual o grande "ganho" da popularidade?&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://devkico.itexto.com.br/wp-content/uploads/2011/06/qefc-I-Robot-Mov.jpg"&gt;&lt;img title="qefc I Robot Mov" src="https://res.cloudinary.com/practicaldev/image/fetch/s--3-0dbdni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2011/06/qefc-I-Robot-Mov-300x280.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mais gente pra falar a respeito e maior suporte da "indústria". Além disto, também há aquele sentimento imbecil de que "se é muito usado, é porque deve ser muito bom".&lt;/p&gt;

&lt;p&gt;Gerentes cretinos amam,  pois fica mais fácil encontrar mão de obra e substituir elementos problemáticos. Se você pensa na sua equipe como uma linha de montagem de software, a popularidade de um framework é fundamental.&lt;/p&gt;

&lt;p&gt;Pessoalmente tenho nojo desta linha de raciocínio porque só serve para uma coisa: &lt;strong&gt;alimentar a mediocridade gerada pela massificação.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;É inegável o sentimento de segurança provido pela popularidade de um framework: afinal de contas, peixes muito grandes torcem para que isto ocorra, pois assim conseguem reduzir os custos de produção.&lt;/p&gt;

&lt;p&gt;(só pra lembrar, o uso em massa de uma tecnologia acarreta na redução do seu custo que, no caso do software, é a mão de obra, ou seja, você desenvolvedor)&lt;/p&gt;

&lt;h2&gt;Qual o grande risco da "impopularidade"?&lt;/h2&gt;

&lt;p&gt;Óbviamente o desaparecimento da tecnologia. Porém este risco só é real se esta for fechada e o acesso a seu código fonte inexistente. Mas como hoje open source domina, no pior dos casos você ainda poderia dar manutenção naquela base de código sozinho. Afinal de contas, migrar de framework em 99,999% dos casos equivale à reescrita completa da aplicação, certo?&lt;/p&gt;

&lt;h2&gt;O que realmente importa?&lt;/h2&gt;

&lt;p&gt;Atender &lt;strong&gt;bem&lt;/strong&gt; ao cliente. Não vou usar um framework só porque todas as pessoas "legais" do meu bairro o fazem também, mas sim porque me sinto à vontade com ele e o resultado do seu uso gera um produto cujo nível de qualidade satisfaça (e bem) as necessidades do meu cliente.&lt;/p&gt;

&lt;p&gt;Tenho cá minhas dúvidas se realmente é possível atingir a qualidade sem o prazer na execução do trabalho. Eu pelo menos nunca consegui. E outra: se o projeto é &lt;strong&gt;seu&lt;/strong&gt;, por que ficar usando o que não gosta só porque é popular? Pra aparecer bonito na fita?&lt;/p&gt;

&lt;h2&gt;No final das contas...&lt;/h2&gt;

&lt;p&gt;Há dois caminhos a serem seguidos: ser pastor ou cordeiro. Escolhi o caminho mais caro que é o primeiro e até hoje não me arrependi. :)&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>ptbr</category>
    </item>
    <item>
      <title>Armadilhas para desenvolvedores: a síndrome do contato alienígena</title>
      <dc:creator>Henrique Lobo Weissmann (Kico)</dc:creator>
      <pubDate>Mon, 21 Jun 2021 13:45:26 +0000</pubDate>
      <link>https://dev.to/loboweissmann/armadilhas-para-desenvolvedores-a-sindrome-do-contato-alienigena-4gec</link>
      <guid>https://dev.to/loboweissmann/armadilhas-para-desenvolvedores-a-sindrome-do-contato-alienigena-4gec</guid>
      <description>&lt;p&gt;&lt;em&gt;Texto escrito em 2012&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devkico.itexto.com.br/wp-content/uploads/2011/06/et___the_extra_terrestrial.jpg"&gt;&lt;img title="et___the_extra_terrestrial" src="https://res.cloudinary.com/practicaldev/image/fetch/s--sZQKDE4I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2011/06/et___the_extra_terrestrial.jpg" alt=""&gt;&lt;/a&gt;Nos últimos dias tenho pensado muito sobre os poucos casos que conheço nos quais o uso do Grails foi um fracasso. Nisto encontrei um elemento em comum que, acredito, pode ser aplicado à adoção de qualquer tecnologia. Chamo-o de &lt;strong&gt;síndrome do contato alienígena&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;Analogia alienígena&lt;/h2&gt;

&lt;p&gt;Considero alienígena qualquer objeto com o qual me deparo e em um primeiro momento não encontro qualquer &lt;a href="http://pt.wikipedia.org/wiki/Analogia"&gt;analogia &lt;/a&gt;que me ajude a compreendê-lo melhor. Nestes momentos, é como se aquele ser não se parecesse com nada que conheço. É portanto alienígena!&lt;/p&gt;

&lt;p&gt;Este contato alienígena me oferece algumas alternativas:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;span&gt;Fico parado observando o objeto (desespero)
&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;Inicio um processo de tentativa e erro manipulando o alienígena buscando algum comportamento que me pareça familiar (repare como  parece uma autópsia) (desespero++)
&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Busco mais informações sobre aquele elemento&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As duas primeiras alternativas caracterizam a &lt;strong&gt;síndrome do contato alienígena&lt;/strong&gt;, enquanto a terceira é a única via sensata que conheço. Há uma razão pela qual estou usando repetidas vezes a palavra &lt;strong&gt;analogia&lt;/strong&gt;: esta é a base do aprendizado, que é o problema que estou tratando neste post.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pt.wikipedia.org/wiki/Douglas_Hofstadter"&gt;&lt;img title="hofstadter-douglas" src="https://res.cloudinary.com/practicaldev/image/fetch/s--sj_2Ajk_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2011/06/hofstadter-douglas1.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;( sobre analogia e cognição, recomendo muito a vocês que assistam a &lt;a href="http://www.youtube.com/watch?v=n8m7lFQ3njk"&gt;esta &lt;/a&gt;palestra do&lt;a href="http://pt.wikipedia.org/wiki/Douglas_Hofstadter"&gt; Douglas Hofstadter&lt;/a&gt;. )&lt;/p&gt;

&lt;h2&gt;Reproduzindo em escritório a síndrome do contato alienígena&lt;/h2&gt;

&lt;p&gt;Você precisará dos seguintes igredientes:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Um profissional mediocre ou desmotivado (qualquer um com preguiça de aprender, ao menos pra mim, está afogado na mediocridade)&lt;/li&gt;
    &lt;li&gt;Uma tecnologia com a qual este profissional não possua contato anterior&lt;/li&gt;
    &lt;li&gt;Ausência de introdução a esta tecnologia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É um cenário muito comum em fábricas de software. Como há forte pressão para que o lucro seja o maior possível, muitas vezes o contratado não é o melhor, mas sim o mais barato e que "dará conta do recado". Como em cima deste indivíduo é colocada a forte necessidade de que suas tarefas sejam entregues &lt;strong&gt;no prazo&lt;/strong&gt;, este passa a ver seu trabalho não como algo do qual possa tirar proveito, mas sim como um &lt;strong&gt;problema desagradável&lt;/strong&gt; que precisa ser resolvido rápido.&lt;/p&gt;

&lt;p&gt;Como "agilidade" é tudo e nosso amigo medíocre não possui tempo ou motivação suficiente para pesquisar a respeito, o que lhe resta fazer? Resta buscar desesperadamente qualquer semelhança entre aquela tecnologia e &lt;strong&gt;qualquer outra&lt;/strong&gt; com a qual já possua alguma experiência, por mais mínima que seja.&lt;/p&gt;

&lt;h2&gt;Um caso&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://devkico.itexto.com.br/wp-content/uploads/2010/02/grails_logo.png"&gt;&lt;img title="grails_logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--3xwsxBK---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2010/02/grails_logo.png" alt=""&gt;&lt;/a&gt;Um bom  exemplo deste comportamento está em uma frase que ouvi de um "profissional"  ao se deparar com Grails. Segue a pérola:&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;"Sabe, como não vou ficar muito tempo neste projeto, vou programar em Grails exatamente como faço em Java, pois é o que conheço"&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Óbviamente, o fruto do "trabalho" deste indivíduo foi &lt;strong&gt;retrabalho&lt;/strong&gt; para os que precisaram depois arrumar a casa. Na realidade, o único fruto foi esta frase, cuja autópsia vou iniciar agora.&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;(...) como não vou ficar muito tempo no projeto (...)&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Chamo este trecho de "imbecil detector".  Não é necessário me aprofundar muito nesta &lt;em&gt;sub-pérola. &lt;/em&gt;Fica nítido que o sujeito não possui comprometimento com a sua equipe ou com a qualidade do próprio trabalho.&lt;/p&gt;

&lt;blockquote&gt;(...) &lt;em&gt;vou programar em Grails exatamente como faço em Java, pois é o que conheço&lt;/em&gt;
&lt;/blockquote&gt;

&lt;p&gt;Olha ai a síndrome explícita. Primeiro quando o sujeito diz &lt;em&gt;"vou programar em Grails"&lt;/em&gt;, expõe a sua ignorância completa sobre o assunto. Não se programa &lt;em&gt;em Grails&lt;/em&gt;, mas sim &lt;em&gt;em Groovy&lt;/em&gt;, que é a linguagem na qual o framework se baseia.&lt;/p&gt;

&lt;p&gt;Logo em seguida, a busca desesperada por uma analogia fácil: &lt;em&gt;"como faço em Java, pois é o que conheço"&lt;/em&gt;. Neste caso, Groovy realmente é uma linguagem próxima do Java, &lt;strong&gt;mas&lt;/strong&gt; &lt;strong&gt;não é &lt;/strong&gt;Java. O resultado foi que Grails, apesar de ser o framework mais produtivo que conheço, neste caso foi um dos mais desastrosos que já vi.&lt;/p&gt;

&lt;h2&gt;Uma terapia&lt;/h2&gt;

&lt;h3&gt;Faça uma introdução gentil à ferramenta&lt;/h3&gt;

&lt;p&gt;É errado enfiar tecnologia em um profissional que não a conhece (ei! seres humanos não possuem entrada pra cartuchos, sabia?). De fato: fazer isto é o mesmo que implorar pela mediocridade. O mais interessante é, em situações de contato alienígena, fornecer ao indivíduo um tempo (1 a 2 semanas) para que se adapte à tecnologia &lt;strong&gt;fora&lt;/strong&gt; do ambiente de trabalho (de preferência, com algum material que possa ser usado como ponto de partida).&lt;/p&gt;

&lt;p&gt;Por que &lt;strong&gt;fora&lt;/strong&gt; do escritório? Para reduzir a pressão sobre o seu aprendizado. Nada pior que alguém o tempo inteiro lhe perguntando: "e ai? tá entendendo melhor agora?". Além disto, é também um modo interessante de se medir o interesse do indivíduo pelo seu trabalho.&lt;/p&gt;

&lt;p&gt;Se passado o período, o sujeito continua completamente cru no assunto, então é sinal de que não vale a pena o investimento naquela pessoa.&lt;/p&gt;

&lt;h3&gt;Comprometa-se com a tecnologia&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://devkico.itexto.com.br/wp-content/uploads/2011/06/arriscar.jpg"&gt;&lt;img title="arriscar" src="https://res.cloudinary.com/practicaldev/image/fetch/s--XN71yA99--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2011/06/arriscar-225x300.jpg" alt=""&gt;&lt;/a&gt;Se a ferramenta X te oferece um modo de trabalhar parecido com o de Y que você já conhece, trabalhar com X como se fosse Y é burrice.  A adoção de uma tecnologia envolve comprometimento.&lt;/p&gt;

&lt;p&gt;Toda tecnologia envolve riscos, porém ter medo de usá-la plenamente é bobagem. Se você vai usar Grails ou Camel ou Erlang ou qualquer outra coisa no seu projeto, mergulhe de cabeça. Pense de acordo com o paradigma adotado pelo que você está usando, e não pelo que gostaria de usar.&lt;/p&gt;

&lt;p&gt;Se mesmo assim você ainda estiver inseguro com relação à ferramenta adotada, acredito que auto crítica seja fundamental. Eu sempre me faço a seguinte pergunta:&lt;/p&gt;

&lt;blockquote&gt;Esta tecnologia foi desenvolvida por pessoas altamente capacitadas (muito provávelmente mais capacitadas que eu). Será que o problema está na ferramenta, comigo ou no fato de não ser a opção certa para o meu projeto?&lt;/blockquote&gt;

&lt;p&gt;Se acreditar que não é a escolha certa para o seu projeto, e esta não foi uma decisão sua, neste caso, o ideal é procurar o responsável por esta decisão. Normalmente (se esta pessoa não for debilóide) há uma excelente razão para que esta escolha tenha sido tomada.&lt;/p&gt;

&lt;h2&gt;Concluindo&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://devkico.itexto.com.br/wp-content/uploads/2011/06/grey-alien.gif"&gt;&lt;img title="grey-alien" src="https://res.cloudinary.com/practicaldev/image/fetch/s--tPLELRjg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://devkico.itexto.com.br/wp-content/uploads/2011/06/grey-alien.gif" alt=""&gt;&lt;/a&gt;Vejo duas causas possíveis para este "contato alienígena".&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
&lt;strong&gt;Gerência mediocre:&lt;/strong&gt; quando não são dadas ao indivíduo as condições necessárias para que este se adapte (e quem sabe, até venha a gostar) da tecnologia.&lt;/li&gt;
    &lt;li&gt;
&lt;strong&gt;Profissional medíocre:&lt;/strong&gt; quando o sujeito sequer pensa em pesquisar a respeito do assunto e já de cara inicia um processo de tentativa e erro buscando alguma forma barata de extrair suco de pedras&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Resumindo: se não houver o esforço para que o aprendizado ocorra, sua realidade não será terrena jamais! :)&lt;/p&gt;

&lt;p&gt;PS: normalmente a mediocridade é o resultado de você estar fora do seu lugar&lt;/p&gt;

</description>
      <category>armadilhas</category>
      <category>ptbr</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
