Introdução
Atualmente, existem diversos materiais na internet que falam sobre a linguagem de programação Java. Alias, na internet em quase todas meios disponíveis existe algo de Java. Seja no github, youtube, ou sites, é bem tranquilo encontrar material sobre como aprender Java. Mas será que é apenas isso que é necessário para estar habilitado para o mercado de trabalho? No ano passado fizemos pelo Java Bahia um Tour pelas universidades de Salvador para divulgar a comunidade Java e sentir a demanda dos grupos estudantis. Então, nosso grupo desenvolveu palestras técnicas, sobre comunidade e eu fiquei com a responsabilidade de falar sobre carreira. Então criei essa apresentação. Mas volta e meia as pessoas perguntam a mesma coisa…Como aprender? Como estudar? O que estudar? Resolvi tentar escrever no post para dar uma direcionada a galera que está começando.
Um ponto importante, se você está começando na carreira de desenvolvedor, lembre que o inglês é o idioma oficial desse mundo, portanto aprender a ler é fundamental e ao longo do tempo vocês perceberão que ouvir em inglês também aumenta a possibilidade de obter conhecimento. Falar e escrever abrem portas profissionais, mas isso é tema para um outro post. Caso queira ver esse ponto de vista de alguém mais experiente que eu, recomendo a leitura do texto do Bruno Souza (Java Man).
Então, antes de entrar no mercado de trabalho o que vocês devem aprender?
- Lógica de programação
- Estrutura de dados
- Orientação a Objetos
- Linguagem Java
- Banco de dados (mesmo que exista JPA, em algum momento da sua vida, você poderá precisar saber SQL).
Antes de querer saber o que é JSF, Spring, JDBC, JPA e outras siglas, crie uma base sólida desses 5 pontos que serão seus pilares.
Qual IDE uso?
Eclipse? Netbeans? A resposta é, aquela que você se tornar mais produtivo. IDEs são ferramentas para auxiliar na programação e não para programar por você.
Como praticar?
-Desafios de programação: (Exemplo:) -Exercícios e mais exercícios: (Exemplo:) -Usando criatividade criando variações de exercicios: Se o professor lhe pede uma calculadora de somar, tente fazer subtrair, multiplicar, dividir, raiz quadrada e potência. -Grupo de estudos na faculdade: Se não existe, monte um. Traga exercícios e façam juntos. -Frequentando eventos da área e interagindo com a comunidade: -Criando projetos pessoais: Sabe aquela loja de seu pai? Faz um sistema de controle de estoque para ele, e a medida que você for ganhando experiência vai refazendo e melhorando. -Participando de projetos open source: Normalmente entramos para tentar resolver um problema nosso, ou somos convidados. Existem milhares. Vejam github e bitbucket -Colaborando com projeto de amigos: Seu amigo que tem uma idéia sempre precisa de ajuda. Participar do projeto pode ser uma forma de aprender também.
Conhecimentos diferenciais
Esses, preferencialmente, devem ser aprendidos durante a graduação e serão levados para toda vida profissional (não necessariamente nessa ordem):
- Arquitetura de computadores: Entender sobre memória, processores, multi-core, barramentos, etc.
- Sistemas operacionais: O que é paginação, swap, como funciona sistema de arquivo, gerenciamento de memória, etc.
- Redes de computadores: Protocolos TCP/IP, HTTP, dentre outros. Como funciona uma rede. Você sabe que a internet é uma rede? Então, para fazer aplicações WEB (que rodam na internet) vocês precisarão de alguns conceitos básicos).
- Sistemas distribuídos: O que é um grid/cluster. Sabe o nome cloud? Nuvem? É disso que eles são feitos.
- Linux: Normalmente ambientes Java, PHP, Python, Ruby são hospedados em servidores Linux. Sabe AWS? Azure? Google Cloud? Advinha qual SO que eles oferecem para suas aplicações serem implantadas?
- Html, CSS e javascript: Se quiser fazer alguma aplicação Web, pelo menos o básico disso precisam saber.
Onde aprender mais?
Cursos online pagos (com direito a suporte de professores, e outros recursos):
- https://www.alura.com.br/
- http://www.globalcode.com.br/home
- http://www.algaworks.com/
Cursos online e gratuitos:
- https://www.coursera.org/learn/orientacao-a-objetos-com-java
- http://loiane.training/curso/java-basico/
- http://loiane.training/curso/java-basico-ii/
- http://loiane.training/curso/estrutura-de-dados-e-algoritmos-com-java/
- https://www.youtube.com/user/Loianeg
- https://www.caelum.com.br/apostila-java-orientacao-objetos/
- https://www.caelum.com.br/apostila-java-estrutura-dados/
Material em inglês:
- https://www.coursera.org/specializations/java-programming
Livros?
- https://www.casadocodigo.com.br/collections/livros-de-java
- https://pragprog.com/titles/category/java_vm?f[sort_by]=pubdate&f[category]=java_vm&f[skill_level]=All&f[title_contains]=
- http://www.altabooks.com.br/use-a-cabeca.html
- http://www.altabooks.com.br/
- https://www.casadocodigo.com.br/