Livro “O codificador limpo (Clean coder)”

Finalizei a leitura do livro “O codificador limpo – um código de conduta para programadores profissionais”.

Livro tem como autor, Robert C. Martin (Uncle Bob).
Sem dúvida, Uncle Bob é um grande exemplo para todos nós desenvolvedores de software.

E, com este livro, ele tentou passar inúmeras experiências vividas afim de tornar-se um programador “profissional”.
Felizmente, o livro explora bem histórias vividas por Uncle Bob, explicando caso-a-caso.

Porém, algo triste no livro (obs: ao qual, acontece com muitos livros na nossa área..), são os erros em relação a tradução do mesmo.
Sugestão: Tradutores e editoras, avaliem termos técnicos ao traduzirem. Em inúmeros casos, ao meu ver, deve-se permanecer em inglês o termo.

Enfim, citarei alguns trechos que identifiquei serem interessantes:

É bem mais fácil não ser profissional. Não profissionais não podem ser responsabilizados pelos trabalhos que fazem – eles deixam isso para seus empregadores. Se um deles comete um erro, o empregador limpa a bagunça. Mas quando um profissional comete um erro, ele limpa a bagunça.

À medida que amadurece em sua profissão, sua taxa de erro deve diminuir rapidamente em direção à assíntota de zero. Ela jamais chegará a zero, mas é sua responsabilidade chegar ao mais próximo possível.

Você deve planejar trabalhar 60 horas por semana. As primeiras 40 são para seu empregador. As 20 restantes para você. Durante essas 20 horas restantes, você deve ler, praticar, aprender e, de outro modo, potencializar sua carreira.

Aqui vai uma lista mínima de coisas em que todo profissional de software deve ser proficiente:
– Design patterns: Você deve ser capaz de descrever todos os 24 padrões do livro GOF e ter um conhecimento de trabalho de muitos dos padrões do livro POSA.
– Design principies: Você precisa conhecer os princípios SOLID e ter um bom entendimento de seus principais componentes.
– Metodologias: Você precisa entender XP, Scrum, LEan, Kanban, Waterfall, Análise estruturada e design estruturado.
– Disciplinas: Você precisa praticar TDD, design orientado a objetos, programação estrutural, integração contínua e programação em par.
– Artefatos: Você deve saber como usar UML, DFDs, estrutura de gráficos, Petri Nets, Diagramas e tabelas de transição, gráficos de fluxo e tabelas de decisão.

[…] S meta ao formar uma equipe é dar a ela tempo suficiente para se tornar sólida e então mantê-la como um motor a fim de conseguir que mais projetos sejam feitos.

Estas são as citações que gostaria de apresentar neste post.
Recomendo a leitura deste livro.

Pensando bem, recomendo a leitura de todos materiais de Uncle Bob! =D

Até a próxima!

Anúncios

6 comentários sobre “Livro “O codificador limpo (Clean coder)”

  1. Tássio Auad disse:

    Gustavo, estou com esse livro em minha prateleira para ler desde o meio do ano hahahah! Sempre que olho pra ele lembro da quantidade de pessoas que recomendam a leitura. Nunca me arrependi de ler um livro do Uncle Bob e eu realmente preciso tirar um tempo para lê-lo, seu post me confirma isso. Excelentes esses trechos que você destaca no post, ótima escolha para o post, principalmente por nos guiar em um mundo que tem muito o que se estudar, sempre há algo novo e acabamos perdidos gastando tempo com conteúdos que talvez não sejam tão importantes.

    Sempre procurei alguém que me dissesse “Estude por esse caminho aqui que você estará focando no essencial” ou “Foque nesse passo a passo de estudos”, mas nunca encontrei em um lugar só. Sempre tive que filtrar conteúdo por conta própria e pode-se pensar que Uncle Bob tenha vivido tudo isso e escrito o livro com o intuito de nos ajudar nessa jornada cheia de possíveis caminhos para se chegar a um mesmo lugar.

    OBS: O meu é traduzido, espero não ter problemas! hahaha!

    Abraços!

  2. Gustavobit disse:

    Tássio, é um excelente livro, tendo como propósito principal de expandir a mente e mostrar que problemas/bugs de últimas hora (por exemplo), não é algo específico somente da empresa A, B ou C.
    N cenários diferentes acontecem em N empresas/projetos diferentes.
    O que destaca o desenvolvedor/profissional é ter ‘jogo de cintura’ para saber lidar com tal situação e claro, sempre trabalhando com profissionalismo.

    Compartilho desse seu sentimento, de procurar alguém ‘expert’ para auxiliar no caminho correto. Porém, por tudo que tenho estudado e analisado, vejo que que não existe um ‘checklist do caminho correto’, hehe.

    A minha sugestão é que devemos focar em uma ou duas tecnologias específicas, e tornar-se especialista na mesma.
    Não adianta ser aquele cara que tapa o sol com a peneira. Em outras palavras, não adianta aprender 15 linguagens, 10 bancos de dados, sendo que saberá apenas o básico de cada um.
    Básico não promove soluções inteligentes, básico apenas resolve problema que possivelmente, tende a voltar posteriormente.

    Tens algum checklist de futuros aprendizados? Quais são suas metas?

    Abraço

    • Tássio Auad disse:

      Quem dera se existisse esse “checklist” universal! Hahaha! Demorei a perceber isso, pelo menos uns 2 anos da faculdade. O segredo é aprender a aprender, já que nossa vida é ser autodidata e, por isso, saber a melhor maneira para se aprender é essencial.

      Concordo quanto a ser especialista e fugir de ser o “Bombril” com sua mil e uma utilidades. Acho que essa é uma das poucas verdades universais no nosso meio. Eu vi uma vez o currículo de um desenvolvedor americano bem enxuto, basicamente…PHP e MySQL. Ele tinha ~15 anos de experiência nos dois e participava de uma série de projetos open source. Imagina a segurança e garantia de ter um desenvolvedor assim na equipe!

      Outro detalhe que vejo a partir das vagas de trabalho é que empresas menores precisam de funcionários que saibam de tudo um pouco, empresas maiores exigem especialistas em seus times. Não é?

      Foi muito boa essa sua pergunta quanto ao meu checklist. Percebi agora que está chegando ao fim e que preciso pensar em um novo. Então, estou aproveitando a oportunidade para já pensar no checklist para 2016. Para começar, eu pretendo tirar minhas certificações Java. Preciso realmente tirar um tempinho para fazê-las, estou adiando demais. Outro objetivo é concluir a Nanodegree em Desenvolvimento Android da Udacity/Google que estou fazendo e quem sabe aceitar uma proposta de mestrado que tive esse ano que envolve computação móvel mas não entrei por não ter agora o foco necessário que o curso exige.

      Parando pra pensar, quanto ao conteúdo, vou estudar Programação Funcional, MVVM no Android e RxJava. Tem alguns frameworks para Android que estou devendo olhar melhor, como o greenDAO, Flow, Mortar e Otto. Vou dar preferência a estudar tudo isso criando projetos no GitHub, até mesmo como portfolio, o que fiz pouco esse ano.

      Quero fechar o ano criando um bom post e um projeto simples de exemplo sobre MVP Passive View + Injeção de Dependências(Dagger/ButterKnife) + Teste Unitário Clássico(JUnit) e com Mocks (Mockito), que foi grande parte do meu foco em 2015 e abordagem hoje adotada nos meus aplicativos.

      Claro que tudo isso são planos feitos me baseando em minha situação de vida hoje, mas tudo pode mudar com novas propostas e caminhos melhores surgindo. Só não posso ficar parado!

      • Gustavobit disse:

        Fato! O segredo, na área de Computação, é aprender a aprender.

        O único ‘problema’ em tornar-se expert em coisas específicas, é acabar ficando pra trás com o avanço da tecnologia/linguagens/frameworks. Mas é um risco não tão impactante, levando em consideração que o fato de já ser expert em poucas coisas (provavelmente, por ser autodidata..), torna-o capaz de migrar para outra tecnologia quando a sua estiver totalmente obsoleta ou o mercado não ser mais satisfatório.. (porém, acho esse cenário um pouco difícil de acontecer.. Sempre vão precisar de profissionais de diferentes nichos/tecnologias..

        Trabalhei por quase 4 anos para uma empresa de grande porte. E, lá, com exceção a um projeto de 1 ano que trabalhei com Android.. O meu trabalho sempre foi específico, JavaEE/Web. Após sair da empresa, trabalhei em algumas startups, e pude então, tirar a conclusão que você teve também. Empresas grande portes precisam de profissionais específicos, com foco em poucas tecnologias, mas que possuem muito know-how.. Enquanto, startups, necessita de colaboradores que abrace o máximo de coisas possível.

        Muito bom suas metas para este próximo ano.
        As minhas são muito parecidas com as suas.

        Preciso tirar minhas certificações Java também. Já empurrei muito tempo com a barriga isso! 😦
        Devo fazer alguns cursos que tenho muito interesse no Alura, pois comprei o pacote anual deles ,e , também, iniciar uma pós-graduação (que ainda estou analisando se será em gerenciamento de projetos ou arquitetura de softwares..).

        Neste próximo ano, irei aderir ainda mais metodologias ágeis. Portanto, provavelmente irei tirar algumas certificações como Scrum Master e PMI-ACP. E também, pretendo/necessito me aprofundar em gestão de negócios, pois com o Climero (http://climero.com.br) concorrendo ao Sinapse da Inovação, esse tema será crucial.

        No meio tecnológico, quero estudar ainda mais o Android, e com isso iniciar um projeto pessoal para aprimorar meus conhecimentos. E, pra fechar, no último trimestre de 2016, se o dólar colaborar, pretendo comprar um MacBook e iniciar a migração desse projeto pessoal para iOS. Pois irei procurar me especializar em “Mobile nativo”..

        É… pelo visto, 2016 será pequeno também.. hehehe!

        Para concluir.. Realmente.. Nunca fique parado!
        Ficar parado na nossa área, quer dizer que depois você terá que perder noites para repor esse tempo deixado para trás.. haha!

        Forte abraço!

Obrigado pelo comentário.

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s