Estudos #2: Livros, cursos, ect... / Studies #2: Books, courses, etc...
Published: 2022-04-16 04:40:49

> The **english version** follows after the portuguese version.

#Versão em Português

DEMOREI, MAS VOLTEI!

No post anterior eu falei sobre formação - faculdade, mestrado... e dei minha visão, baseado em meu histórico.

Nesse post vamos direto ao ponto sobre *minha recomendação* sobre estudos: quais livros? quais cursos? Com certeza não será o post definitivo e a cada evolução que tiver em meus estudos, vou recomendando algo. Eu mesmo estou estudando e quando acho que sei tudo, descubro que sei nem 0,5% daquilo que deveria e gostaria. 

##Meu background MUITO resumido...

Terminei a faculdade oficialmente em novembro de 2005 - eu fiz todas as matérias em dezembro de 2004, mas faltou minha monografia e a mesma estava vinculada a um projeto em uma empresa a qual estagiava. Eu desenvolvi um sistema de controle de produtividade e o mesmo era feito em Delphi 7.0 persistindo em MySQL 4.0. Antes tinha desenvolvido outras aplicações em Visual Basic 6.0 usando como base arquivos de Excel... saiu legal, mas totalmente procedural. E detalhe: na época o Hibernate era novo, não funcionava direito, não sabia Java e mal entendia UML. E isso me marcou DEMAIS, ainda mais quando entrei em projetos de .NET (ASP.NET, C#). Não sabia **Orientação a Objeto** e essa descoberta me mostrou uma coisa: precisava retornar ao básico para aprender a programar de verdade. E piorou mais ainda quando ouvi um colega falando de uns troços chamados "Design Patterns". Resumindo: tinha uma boa base em programação (LOOOOONGE do ideal) numa grande faculdade (engenharia elétrica, imagine...) e precisava refatorar todo meu conhecimento, fazer uma nova faculdade em paralelo ao meu trabalho.

Li diversos livros e apostilas (ora pagos, outros de graça na internet), fiz alguns cursos (externos à firma, outros internos) e tive muita, mas muita experiência de projetos (trabalhar em Consultoria às vezes é como montar um avião em pleno ar, sem saber o que precisa diversos momentos... isso te faz aprender a aprender na pancada!). Aprendizado ganho, vem então a outra cobrança para ganhar credenciais em vendas de projeto e claro, para agradar ao meu ego e aos olhos de quem te avalia: as *certificações de tecnologia*. Depois de formado, certificações são aquele tipo de prêmio que o jogo de video-game te exige para pular o nível do jogo... é prova de que você anda atualizado no tema, ainda que tenha tanto *coió* que sabe nada e tem certificação.

Estudar, aprender a aprender, isso é eterno... tenho bastante tempo de carreira e não paro, e nem quero... fazendo Mestrado agora e espero, com esse avanço, comentar mais coisa que andarei vendo lá e mudar minhas idéias sempre - mudar de idéia não é o problema, problema é você ser limitado e não querer evoluir e aprender.

*Moral da história*: fui de *desenvolvedor* a *arquiteto técnico senior certificado*. Hoje preciso de outras certificações externas, como a TOGAF, a qual começarei a estudar agora com afinco.

**Diploma, Certificação, Experiência Prática, Conhecimento Teórico e Soft Skills (habilidade em lidar com pessoas)**: sem esse quinteto fantástico (e outros mais que forem aparecendo...), sem chances de crescer no mercado. Eu adicionaria (por minhas crenças e absoluta certeza de que vale muito) a **Fé**, mas isso é outra história que não caberia aqui nesse humilde post. E **Sorte** é consequência dessa galerinha, então estamos de bom tamanho.

##Recomendações de hoje: 16/Abril/2022

Repito e adianto: essa lista não é final e em futuros posts vou recomendando novos livros, cursos, etc... vou recomendar em inglês mas para quase todos tem a versão em português, ainda que prefira a original... não sendo em russo ou alemão, que não falo... toda sugestão será bem-vinda, tenho certeza que há milhões ainda a serem lidos que nem conheço e que tem que estar presentes nessa listagem.

Essa ordem indicada é para facilitar a ordem de estudos e de conteúdo, assim a pessoa consegue ir do mais difícil ao mais fácil. **Pelo menos em meu caso!** 

**Sites de treinamento, apostilas**

Já vou avisando: não sou pago por ninguém nessas referências, já adianto, só recomendo porque são muito bons mesmo! Recomendo sempre porque uso essas referências como estudo.

|Referência|Tipo de estudo|Recomendação|
|-|-|-|
|Apostilas programação gratuitas|PDFs CAELUM|[site da Caelum]( https://www.caelum.com.br/apostilas)|
|Alura|e-Learning de programação|[site da Alura](https://www.alura.com.br/)|
|Aspercom|Escola de Treinamentos Corporativos|[site ASPERCOM](https://aspercom.com.br/)|
|Fabio Akita|Guru de Tecnologia|[Página Youtube](https://www.youtube.com/c/FabioAkita1990)|
|Editora técnica|e-Books para auto-estudo|[site do Casa do Código](https://www.casadocodigo.com.br/)|
|Java Script 2022 (completo, E2E)|e-learning UDEMY|[link do treinamento](https://www.udemy.com/share/1013eS3@UmxRK0RkA1jhxtA71Ofo934IlwTk8mU7c28mAvBhsHwjNGqaxFzAul2zJrmyXpku/)|
|Learn Abap Objects|e-learning UDEMY|[link do treinamento](https://www.udemy.com/share/101XSg3@sW5hv4sf10ptqutRaRzPR0e6N7HYZ_v2Do2BMKFFsKxrjuFMBGgITNmeKJtpCOV6/)|
|SAP Abap for Begginers|e-learning UDEMY|[link do treinamento](https://www.udemy.com/share/101WBA3@rg5oddoziEtkb6r1T53fXTP1mIubytxBHt4zB2FrmfZT6oshb9GtWLntfGEo57V6/)|

**Livros que recomendo**

Um bom comentário inicial aqui seria: vão ao site do IC / UNICAMP, peguem os livros indicados pelos cursos e bons estudos. 

|Ordem de leitura|Livro|Autor|Comentários|
|-|-|-|-|
|1|UML: User's guide|Grady Booch, James Rumbaugh, Ivar Jacobson|o conceito básico sobre orientação a objetos, tudo que se precisa saber sobre UML está nesse livro.|
|2|UML Distilled: A Brief Guide to the Standard Object Modeling Language|Martin Fowler|O legal é que o Martin Fowler simplifica bem o dos 3 amigos, sem perder conteúdo.|
|3|Introdução à arquitetura e Design de software: Uma visão sobre a plataforma Java|Paulo Silveira, Fabio Kung e outros|Até agora que eu saiba só tem a versão em Português. Recomendo começar aqui antes de ir para um DDD do Eric Evans e outros mais complexos, os caras da CAELUM souberam simplificar e foram didáticos ao extremo. Excelente livro.|
|4|Head First: Design Patterns -  Building Extensible and Maintainable Object-Oriented Software|Eric Freeman & Elisabeth Robson|Ele é um resumão do famoso livro de Design Patterns do Gang of Four, mas o legal é isso. Mais fácil que o do GoF, escrito em Java. Pela qualidade e facilidade, recomendo começar aqui antes.|
|5|Domain-Driven Design: Tackling complexity in the heart of software|Eric Evans|Um clássico (complexo) sobre o domínio do software. Ideal para quem já sabe muito bem orientação a objetos, design patterns, fará todo sentido em aprender e estudar. Melhor referência para aprender arquitetura.|
|6|Extreme Programming Explained: Embrace Change| Kent Beck, Cynthia Andres|Excelente livro sobre Metodologia Ágil, sobre a programação XP. Recomendo aqui antes de pensar em Scrum e etc.|
|7|Agile Project Management with Scrum (Developer Best Practices)| Ken Schwaber|O livro do criador do Scrum. Explica as bases da metodologia de maneira fácil e descomplicada.|
|8|Design Patterns: Elements of Reusable Object-Oriented Software|Erich Gama e outros|Um clássico, leitura obrigatória, ótimo para referência constante... todos grandes livros se baseiam nele.|
|9|Software Engineering|Ian Sommerville|Todo ABC da Engenharia de Software se encontra nesse livro, cabeceira de todo curso de graduação e obrigatório saber na pós.|
|10|Mythical Man-Month, Anniversary Edition, The: Essays On Software Engineering|Frederic Brooks|Deveria ser cobrança obrigatória para todo gerente de projetos. Livro com mais de 50 anos de existência que vive dando pancada de bom exemplo até hoje.|

#English Version

DELAYED, BUT I'M BACK!

In the previous post I talked about training - college, master's... and gave my PoV, based on my background.

In this post we go straight to the point about *my recommendation* on studies: which books? which courses? It will certainly not be the definitive post and with each evolution I have in my studies, I will recommend something. I'm still studying and when I think I know everything, I discover that I know not even 0.5% of what I should and would like.

##My VERY short background...

I officially finished engineering school in November 2005 - I took all the credits in December 2004, but my monograph was missing and it was linked to a project in a company where I was an intern. I developed a productivity control system and the same was done in Delphi 7.0 persisting in MySQL 4.0. Before, I had developed other applications in Visual Basic 6.0 using Excel files as a base... it came out nice, but fully procedural. Detail: at the time Hibernate was new, didn't work properly, didn't know Java and barely understood UML. And that marked me A LOT, even more when I got into .NET projects (ASP.NET, C#). I didn't know **Object Orientation** and this discovery showed me something: I needed to get back to basics to really learn to program. And it got even worse when I heard a colleague talking about some stuff called "Design Patterns". In short: I had a good base in programming (FAAAARRR from the ideal) in a well named course (electrical engineering, you know...) and I needed to refactor all my knowledge, make a new college in parallel with my work.

I read several books and handouts (sometimes paid, others free on the internet), took some courses (external to the company, others internal) and had a lot, but a lot of project experience (working in Consulting is sometimes like assembling an airplane in midair , not knowing what you need several moments... that makes you learn to learn on the hit!). After learning gained, then comes another charge to earn credentials in project sales and, of course, to please my ego and in the eyes of those who evaluate you: *technology certifications*. After graduating, certifications are that kind of prize that the video game requires you to skip the game's level... it's proof that you're up to date on the subject, even if you have so much *jerk* that you know nothing and have certification.

Studying, learning to learn, this is eternal... I have a long career and I don't stop, and I don't even want to... doing a Master's now and I hope, with this advance, to comment on more things that I'll be seeing there and change my ideas always - changing your mind is not the problem, the problem is that you are limited and don't want to evolve and learn.

*Conclusion*: I went from *developer* to *certified senior technical architect*. Today I need other external certifications, such as TOGAF, which I will start studying hard now.

**University degree, Certification, Practical Experience, Theoretical Knowledge and Soft Skills (ability to deal with people)**: without this fantastic quintet (and others that appear...), no chance of growing in the market. I would add (for my beliefs and absolute certainty that it's worth a lot) **Faith**, but that's another story that wouldn't fit here in this humble post. And **Luck** is a consequence of these guys, so we're a good size.

##Today's recommendations: 16/April/2022

I repeat and advance: this list is not final and in future posts I will recommend new books, courses, etc... I will recommend it in English but for almost everyone there is the Portuguese version, although I prefer the original... or German, which I don't speak... any suggestion will be welcome, I'm sure there are millions yet to be read that I don't even know and that have to be present in this list.

This order indicated is to facilitate the order of studies and content, so the person can go from the most difficult to the easiest. **At least in my case!**

**Training sites, handouts**

I'll warn you: I don't get paid by anyone in these references, I'll advance, I only recommend because they are really good! I always recommend because I use these references as a study.

|Reference|Study Type|Link|
|-|-|-|
|Free material for study|PDFs CAELUM|[Caelum link]( https://www.caelum.com.br/apostilas)|
|Alura|e-Learning|[Alura](https://www.alura.com.br/)|
|Aspercom|Corporate Training|[ASPERCOM](https://aspercom.com.br/)|
|Fabio Akita|Tech guru|[Youtube link](https://www.youtube.com/c/FabioAkita1990)|
|Brazilian Press|e-Books|[Casa do Código link](https://www.casadocodigo.com.br/)|
|Java Script 2022 (Full, E2E)|e-learning UDEMY|[link](https://www.udemy.com/share/1013eS3@UmxRK0RkA1jhxtA71Ofo934IlwTk8mU7c28mAvBhsHwjNGqaxFzAul2zJrmyXpku/)|
|Learn Abap Objects|e-learning UDEMY|[link](https://www.udemy.com/share/101XSg3@sW5hv4sf10ptqutRaRzPR0e6N7HYZ_v2Do2BMKFFsKxrjuFMBGgITNmeKJtpCOV6/)|
|SAP Abap for Begginers|e-learning UDEMY|[link](https://www.udemy.com/share/101WBA3@rg5oddoziEtkb6r1T53fXTP1mIubytxBHt4zB2FrmfZT6oshb9GtWLntfGEo57V6/)|

**Books I advice**

An excellent tip here is: go to IC/UNICAMP site and get all books used for disciplines on Science Computing.

|Reading order|Book|Author|
|-|-|-|
|1|UML: User's guide|Grady Booch, James Rumbaugh, Ivar Jacobson|
|2|UML Distilled: A Brief Guide to the Standard Object Modeling Language|Martin Fowler|
|3|Introdução à arquitetura e Design de software: Uma visão sobre a plataforma Java|Paulo Silveira, Fabio Kung e outros|
|4|Head First: Design Patterns -  Building Extensible and Maintainable Object-Oriented Software|Eric Freeman & Elisabeth Robson|
|5|Domain-Driven Design: Tackling complexity in the heart of software|Eric Evans|
|6|Extreme Programming Explained: Embrace Change| Kent Beck, Cynthia Andres|
|7|Agile Project Management with Scrum (Developer Best Practices)| Ken Schwaber|
|8|Design Patterns: Elements of Reusable Object-Oriented Software|Erich Gama e outros|
|9|Software Engineering|Ian Sommerville|
|10|Mythical Man-Month, Anniversary Edition, The: Essays On Software Engineering|Frederic Brooks|