Então, chegamos ao fim do nosso curso, mas esse não é o fim, esse é apenas o começo da jornada de vocês na direção de desenvolver software de alta qualidade. O objetivo que eu quis passar nesse curso para vocês para vocês foi essa ideia de que construir software de alta qualidade é algo que a gente deve sempre ter mente ao longo de nossa carreira na área de software, na área de TI, onde qualidade de software tem vários aspectos. A gente olhou bastante para qualidade do código fonte, a forma como a gente escreve o código, que é absolutamente essencial para desenvolvedor de alto nível, ter essa preocupação com a qualidade do código, mas também a qualidade da arquitetura do software. No caso de orientação a objetos, como você organiza as várias classes, como elas se inter-relacionam, como seus objetos vão atuar dinamicamente ao longo da execução do programa. Tudo isso é importante para a gente definir a arquitetura de software. Tem vários outros aspectos de qualidade que a gente não conseguiu ver aqui nesse curso, a gente vai poder estudar outras ocasiões, então, por exemplo, a questão da interface humano-computador, da usabilidade do software do ponto de vista do usuário, a questão se o software atende aos requisitos do cliente, tudo isso são questões de qualidade, também, importantes, que não fazem parte deste curso, mas que vocês vão estudar aí ao longo da sua carreira. O que também é muito importante é que as equipes de desenvolvimento de software tenham ambiente saudável para trabalhar e esse ambiente saudável envolve tanto códigos-fonte bem escrito, claro, de alta qualidade, com uma arquitetura bem organizada, como também até o espaço físico e as formas de comunicação que a equipe tem, a infraestrutura de software e as relações interpessoais também dentro da equipe, baseadas no respeito, na honestidade, na ética, isso aí é fundamental para a gente desenvolver software de boa qualidade, mas depois de tudo que vocês aprenderam agora nesse curso, provavelmente, vocês vão dar uma parada, ficar tempo sem ter outros cursos, mas eu quero passar para vocês aqui uma dica importante, que são dez livros que você precisa ler para se tornar excelente desenvolvedor de software. Na verdade, eu fiz uma enquete com várias pessoas que eu considero que são excelentes desenvolvedores da indústria de softwares, coletei informações e montei esses dez livros aqui, que eu recomendo fortemente que vocês peguem tempo nos próximos meses e até anos da sua vida para ler esses livros. Infelizmente, as novas gerações estão perdendo essa prática de ler livros, mas eu, pessoalmente, aprendi muito lendo livros sobre desenvolvimento de software, boa parte do que eu eu aprendi foi lendo os livros. Outra parte foi na prática, no mundo real, desenvolvendo, interagindo com pessoas, mas livros contém bastante conhecimento de grandes especialistas e nessa área de software a gente tem grandes livros escritos, então vale a pena você dedicar tempo das suas férias, do seu final de semana para ler alguns livros, então recomendo fortemente que você faça. Eu vou dar aqui esses dez livros, eu recomendo que você escolha alguns e que se planeje nos próximos anos para ler a maioria deles. Então, vamos lá. Primeiro, esse aqui é livro muito interessante que se chama O Mítico Homem-Mês ou Mythical Man-Month, que foi escrito pelo Frederick Brooks, que foi uma pessoa que ganhou o Prêmio Turing, que é o Prêmio Nobel da ciência da computação, basicamente por toda sua vida, mas também por esse livro. Ele foi escrito pela primeira vez na década de 70, por volta de 1975 esse livro lançado, então é muito antigo, mas é incrível de ver o quão atual é o livro, porque ele fala sobre os problemas que a gente encontra grupos de pessoas desenvolvendo software, principalmente na indústria, empresas e ele fala muitas coisas que mesmo ele tendo escrito isso há 40 anos atrás ou mais, mais de 40 anos atrás, hoje dia se repete de novo e de novo na indústria de software, então isso aqui é uma leitura obrigatória para todo mundo que quer ser gerente de projeto de software, recomendo fortemente. Tem essa edição, que é a edição do vigésimo aniversário, que foi lançada pouco depois da virada do século. Recomendo ler essa versão, que ela tem alguns artiguinhos a mais e é muito boa. Esse livro influenciou boa parte dos livros que vieram depois e dos movimentos ágeis do desenvolvimento de software que vieram depois. Outro livro que eu recomendo é, a gente já viu nesse curso, o livro do GoF dos padrões de projeto. Se você gosta de C++, Smalltalk, eu recomendo que você leia o livro original, o Design Patterns da gangue dos quatro Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides. Vai o original se você gosta bastante de C++ e Smalltalk, por outro lado se você gosta de outras linguagens, talvez uma leitura mais leve do que na fonte, é esse livro Head First Design Patterns, que é livro que foi escrito bem depois, mas ele é muito didático, tem muito bom humor e muitos exemplos, é uma leitura muito mais fácil de digerir e você vai aprender bastante sobre os design patterns, então você vai se aprofundar relação ao que a gente viu nesse curso. Depois disso tem livro que eu adoro, que é esse Extreme Programming Explained do Kent Beck. O Kent Beck é grande desenvolvedor da indústria de software, consultor desenvolvimento de software e ele propôs uma nova metodologia de desenvolvimento de software chamado Programação Extrema ou Extreme Programming, foi dos primeiros métodos ágeis de desenvolvimento de software e lendo esse livro você vai entender o que é método ágil de desenvolvimento de software e, particular, esse método XP ou Extreme Programming, que é método que garante tanto que você vai produzir software de alta qualidade quanto que você vai atender os requisitos do cliente, porque é uma metodologia que força você a ter contato muito próximo com o cliente a todo o momento durante o desenvolvimento do projeto, então eu recomendo fortemente que você leia esse livro e que aplique na prática as ideias aí de XP, de Programação Extrema. Depois, uma das práticas alí de XP é essa ideia de refatoração, refactoring, que é a ideia de você pegar pedaço de código, melhorar o design desse código para tornar ele mais flexível sem mudar a sua funcionalidade, a gente vai ver que quando a gente usa método ágil no desenvolvimento, essas atividades de refatoração são muito importantes, então esse livro Refactoring é como se fosse catálogo de refatorações que a gente pode fazer no nosso código, então é livro aí bem mais prático e pragmático, mas que é uma coisa bem útil também para a gente entender mais sobre como reformular o código para melhorar essa qualidade. O próximo é esse livro excelente do Robert Martin, eu já falei do Robert Martin nesse curso, quando a gente falou dos princípios solid de orientação a objetos, mas o Robert Martin tem esse excelente livro sobre código limpo, como escrever código claro, funcional, eficiente, enxuto, várias boas propriedades do código limpo, clean code, inglês, esse livro eu recomendo fortemente. Pouco na mesma linha, mas indo mais além, pouco mais ainda sobre a questão mais holística do código tem esse excelente livro chamado Code Complete, do Steve McConnell. É o que ele chama de hand book, como se fosse tratado de como se constrói software com boa qualidade, também livro excelente para você. Já termos pouco mais de design, não tanto de código, mas como você faz o projeto do seu software, da sua arquitetura, eu adoro esta ideia de Domain-Driven Design, que foi uma ideia proposta principalmente pelo Eric Evans e ele tem várias práticas, então, de como você projeta software de alta qualidade e ele foca no projeto, não é tanto na codificação, é no projeto. Tem uma ideia muito boa de você coletar os conceitos do usuário do seu software e trazer isso para dentro do código e ele fala várias boas práticas de se construir o projeto de software. Eu li esse livro original, que é o Domain-Driven Design, mas eu recebi a indicação de que esse novo livro mais recente chamado Implementing Doman-Driven Design ele é mais didático e melhor. Ele tem o prefácio do Eric Evans, mas é livro mais recente, então, talvez, você pode ir para esse segundo livro, mas escolhe dos dois. Depois, livro também muito bom, é da Cristina Videira Lopes, que é uma professora da Universidade da Califórnia, que é esse Exercises in Programming Style. É muito interessante, porque ela pega único problema e ela resolve esse problema de 40 jeitos diferentes. Cada mostrando mostrando estilo de programação diferente, e ela vai dando mais ou menos uma história da evolução do desenvolvimento de software, da história da evolução das linguagens de programação com os diferentes estilos de programação, sempre para resolver o mesmo programa boa parte dos exemplos são Python essa edição 2 já é a versão 3 do Python, mas mesmo que você não saiba detalhes Python dá para acompanhar o livro, e ela reflete sobre essas diferentes formas de escrever software, é livro muito interessante. Agora tem conjunto de livros aqui que é livro específico para linguagem de programação, então, primeiro foi lançado essa Effective Java e Effective C ++ que foram dois livros que cheguei a ler e que dão ideias muito boas de padrões específicos para uma determinada linguagem de programação, às vezes a gente chama isso de padrões idiomáticos que é de determinado idioma, então se você vai fazer software Java eu recomendo que você leia o Effective Java, se você vai escrever C++ eu recomendo que você leia o Effective C++. Python aqui eu dou duas sugestões tem aqui o Effective Python e tem esse Fluent Python, Fluent Python tem esse escrito por colega nosso aqui Luciano Ramalho, que é excelente desenvolvedor de software conhece muito de Python e escreveu este livro Fluent Python. Então eu recomendo que se você vai se aprofundar uma determinada linguagem, se você quiser virar ÁS naquela linguagem, realmente especialista naquela linguagem você tem que pegar desses livros aqui especializados naquela lingagem e se aprofundar nisto. E daí para finalizar, a minha décima dica para vocês é o livro THE LEAN STARTUP, ou Startup enxuta português, do Eric Ries. A idéia aqui, esse é livro mais de empreendedorismo, porque ele fala como criar uma startup de software e basicamente o que ele faz, ele une as idéias de desenvolvimento ágil de software, de métodos ágeis, agile methods com a idéia que se chama costumer development, que é como você encontra produto que atende determinado mercado que atende a determinado anseio de determinados clientes. Ele junta essas duas coisas, esses métodos ágeis e o costumer development junta uma coisa chamada The Lean Startup. Então é uma metodologia de desenvolvimento de negócios comerciais de startups que envolvem software e você faz isso usando o método ágeis. Essa é minha última recomendação para vocês, se vocês lerem esses dez livros vocês já vão ser excelentes desenvolvedores? Não. Esse é só dos elementos que é necessário, para isso você se tornar excelente desenvolvedor você precisa também desenvolver muito software, interagir com outros bons desenvolvedores, aprender com eles, mas essa parte de você conhecer o que esses grandes especialistas já escreveram é uma parte muito importante e é bom para o espírito de como ser grande especialista na área. Então concluído, aprendizado é para sempre, principalmente nesta área de T.I. a cada dois, três, quatro, cinco anos a coisa muda muito então a gente precisa estar sempre se atualizando e ler excelentes livros é uma forma de a gente estar sempre se atualizando, eu usei muito isso na minha carreira. Sempre tive sucesso e sempre me trouxe muita felicidade ler esses livros aí de excelente qualidade. A idéia aqui para finalizar, é que eu espero que vocês tenham gostado, que vocês tenham se divertido,que tenham aprendido muito mas também eu queria passar esta idéia de que você tenha responsabilidade de mostrar para o mundo que produzir código e arquitetura de software de alta qualidade é importante, então na sua carreira você vai ter vários momentos onde pessoas vão falar, não, não precisa escrever códigos bem feitos, pode escrever qualquer porcaria porque o importante é a gente entregar logo para o cliente, não interessa essa história de arquitetura de software, o que interessa é a aparência final do software que a gente vai vender, se vai dar problema depois, a gente conserta depois, vai ter pessoas que vão falar para você escreva código ruim e você vai falar, não, não vou escrever código ruim, vou escrever código de alta qualidade. Eu vou pensar na arquitetura, eu vou escolher uma arquitetura de software de alta qualidade e você deveria fazer também, então eu quero que vocês sejam aí pólo condutor dessas idéias, e quero que vocês passem essas idéias para a indústria ao invés de deixar que a indústria tire de você essa boa visão sobre de como tem que ser o desenvolvimento de software, está bom? E lembra o mais importante de tudo aqui é você fazer isto se divertindo, você tem que estar trabalhando ambiente que você está feliz, que você chega no final do dia e fala, nossa, fiz coisas interessantes, amanhã vai ser mais legal ainda. Então seja feliz e faça os outros felizes, seja generoso, respeite seus colegas transmita para eles o conhecimento que você tem e aprenda como conhecimento deles. Então seja feliz e faça os outros felizes, então é isso, espero que a gente se encontre muitas outras vezes aí no futuro e até a próxima! [SEM_ÁUDIO]