Iniciando com Java

23 Feb 2017 » java, carreira (aproximadamente 3 minutos de leitura)

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?

  1. Lógica de programação
  2. Estrutura de dados
  3. Orientação a Objetos
  4. Linguagem Java
  5. 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/