# Crackeando o processo seletivo da Softplan/UNIC. Um guia (não oficial) para ir bem no processo seletivo da UNIC. Criado e mantido por [Dejair Sisconeto](https://www.linkedin.com/in/dsisconeto) ## Resumo - Aprenda Java - Aprenda Java EE ou Spring - Aprenda JDBC e JPA com Hibernate - Aprenda Programção orientada objetos - Aprenda algum banco de dados relacional - Estude algoritmos para melhorar sua lógica - Aprenda Refatoração - Aprenda código limpo - Aprenda a escrever testes unitários com JUnit e Mockito - Apredada TDD ## Steps by steps ### Estude Java. Como a UNIC usa Java como sua linguagem principal, é importante dominar a linaguagem Java, tente ir além da API básica da linguagem. Alguns cursos de java que você pode usar para estudar: - [Curso de Java do Leonardo Moura Leitao](https://www.udemy.com/course/fundamentos-de-programacao-com-java/) - [Curso de Java do Nelio Alves](https://www.udemy.com/course/java-curso-completo/) - [Formação Java Alura](https://cursos.alura.com.br/formacao-java) - [Formação Java Web Full-Stack](https://www.jdevtreinamento.com.br/formacao-java-web-profissional/desconto.html) O livro [**Java Efetivo do Joshua Bloch**](https://amzn.to/3syH5AX) é essencial para quem já sabe Java e quer ficar mais afiado, recomendo muito a leitura dele. ### Estude Algoritmo Algoritmo é base da programação, então temos que treinar bastante resolução de algoritmos. Site para treinar resolução de algoritmos. - [Exercism](https://exercism.org) ### Estude Java EE e Spring Existe diversos cursos disponíveis na internet, eu não tenho nenhum para recomendar, foi mal. Mas pode ser qualquer um na Udemy. ### Estude Testes Testes unitários não é TDD é importante enteder isso. Além de dominar as ferramentas para crianção de testes como JUnit, Mockito e Pitest, temos que estudar as técnicas. - [Curso de básico para aprender JUnit e Mockito](https://www.udemy.com/course/testes-unitarios-em-java/) - [A Case For Outside-In Design](https://www.youtube.com/watch?v=fKHYBnuPApY) - [The Three Laws of TDD](https://www.youtube.com/watch?v=qkblc5WRn-U) - [Testing and Refactoring Legacy Code](https://www.youtube.com/watch?v=LSqbXorkyfQ) - Outside In TDD by [Sandro Mancuso](https://twitter.com/sandromancuso) - [Parte 1](https://www.youtube.com/watch?v=XHnuMjah6ps) - [Parte 2](https://www.youtube.com/watch?v=gs0rqDdz3ko) - [Parte 3](https://www.youtube.com/watch?v=R9OAt9AOrzI) - [3A – Arrange, Act, Assert](https://xp123.com/articles/3a-arrange-act-assert) - [TestPyramid](https://martinfowler.com/bliki/TestPyramid.html) - [The Practical Test Pyramid](https://martinfowler.com/articles/practical-test-pyramid.html) ## Programação Aprender a desenvolver com qualidade de manunteção é essencial nos dias de hoje. - Livro [Código limpo](https://amzn.to/3tvq9uy). - Livro [Refatoração](https://amzn.to/3C9flWL). - [Top 15 IntelliJ IDEA shortcuts](https://www.youtube.com/watch?v=QYO5_riePOQ&list=PLPZy-hmwOdEU9mhOD2q4mLdwFtvlbMbcZ&index=11&t=32s) - [YAGNI](https://martinfowler.com/bliki/Yagni.html) - [BeckDesignRules](https://martinfowler.com/bliki/BeckDesignRules.html) - [Hexagonal architecture](https://alistair.cockburn.us/hexagonal-architecture/) - [Arquitetura limpa](https://amzn.to/3MhqU2z) - [The Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) - Aprenda sobre object calisthenics em java ## Times e Processo - [On pair Programming](https://martinfowler.com/articles/on-pair-programming.html) - [MVI](https://www.codurance.com/publications/2020/01/27/minimum-valuable-increment) ## Manifestos - [Manifesto Software Craftsmanship](https://manifesto.softwarecraftsmanship.org) - [Manifesto agil](https://agilemanifesto.org/iso/ptbr/manifesto.html) - [Manifesto TDD](https://tddmanifesto.com) # Testes seus conhecimentos Pratique, Pratique, Pratique, Pratique e Pratique mais um pouco. - [Bowling kata](https://github.com/dsisconeto/bowling-kata) - [Api de gerenciamento financeiro](https://hackmd.io/qxheGw8cQw6v8fXuSAHtdQ) ## Dicas - Usar uma IDE como IntelliJ ou Eclipse vai te ajudar muito na hora de rodar os testes e fazer refatoções seguras. - Se você usa uma IDE, é bom conhecer no que ela pode te ajudar. - Sempre que você estiver refatorando um código execute os testes constantemente. - Refatore pela IDE sempre que possível, fazer refatorações manuais é muito trabalhoso e perigoso. - Use teclas de atalhos na IDE principalmente para formatar código e refatorar.