# 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.