Plano de Carreira em Programação

Faço Análise de Sistemas a dois anos, e a impressão que tenho é que para ter uma carreira na área, é necessário ser experiente e “quebra-galho” em tudo.

Gostaria de focar em Java (já aprendi o básico, mesmo que meu conhecimento seja meio capenga) ou C#/C++/.Net (por meu interesse principal ser aprender a programar e mexer com jogos). Como o mercado de onde eu moro (Brasília) foca muito em Java, vai ele mesmo.

O problema é que boa parte dos anúncios que vejo, ao menos para onde moro, envolve programação em Java + tecnologias front-end + algo em banco de dados + vários frameworks e complementos a Java, tornando muito extensa a lista de requisitos para sequer começar a trabalhar com isso.

Normalmente vejo exigirem, além de “sólidos conhecimentos” em Java, experiência com Java EE, JSF, JPA, algum outro framework de Java, Angular, Maven, Spring Boot, “sólidos conhecimentos” em SCRUM e programação agile, Jenkins, Wildfly/JBoss, JWA(?) e mais umas quinhentas tecnologias. É isso mesmo ou estou procurando o nível errado de vagas para ingressar na área?

Se não, pergunto a pessoas experientes em Java: o que é principal para começar trabalhando com Java, mesmo que como trainee/estagiário ou Jr.?

1 curtida

Olá @Matheus_Pimentel tudo bem?

Você esta buscando o primeiro emprego como desenvolvedor? Talvez eu possa te ajudar.

Vamos la:
A única diferença que eu vejo em questão de formação referentes aos 3 níveis, é que o Trainee você tem que estar formado já, Estágio tem que estar cursando e o Jr. você pode estar cursando, ser formado ou então nem ter faculdade.

Em questão de conteúdos de programação, eu sinceramente não vejo distinção entre o Trainee e o Estágio. Sabendo Java 8, SQL, JDBC (JPA melhor ainda) e ter noção da base da WEB (HTTP, HTML, CSS e JS) já da para começar, e claro, se você souber mais coisas, é melhor.

O que eu vejo crescendo bastante é a busca por desenvolvedores Full Stack nos níveis Jr+

O que eu mais vejo de diferença do cargo Jr para Estágio/Trainee é o grau de conhecimento/confiança/domínio da linguagem de back-end (no caso Java) e o conhecimento de algum Framework WEB. Aqui eu vejo que a JPA ou o Hibernate se tornaram obrigatórios.

Em relação a frameworks Web, é basicamente isso ai que você falou, ou é JSF + JPA ou Spring + Angular/React. Se eu fosse você, veria a distribuição desses frameworks ai na cidade que você mora. Se tiver mais JSF, vá de JSF, senão vá de Spring + Angular/React(Antes de aprender um desses dois é importante ter uma base bem sólida de HTML, CSS e JS).

Vou deixar o link de um curso muito bom de JSF caso você opte por ele
https://www.softblue.com.br/site/curso/id/60/CURSO+DE+JAVA+EE+8+WEB+TOTAL+AVANCADO+ON+LINE+JA60

Na verdade ele não aborda só o JSF, mas sim boa parte da especificação Java EE (Servlets, JSF, JPA, EJB, CDI, Web Services Rest com JAX-RS e JMS), além de AJAX, JSON, etc

Eu digo que é muito bom pq eu já o fiz e foi o que mais me ajudou a conseguir o primeiro emprego (Dev Jr.)

Uma dica: pratique muito independente da tecnologia e na hora das entrevistas mostre (pelo celular mesmo) os sistemas que você desenvolveu em casa que ai certamente as suas chances de conseguir o emprego aumentarão e muito :+1:

Abraços

3 curtidas

Evite pagar !!!
Comece por aqui e escolha sua carreira
Carreira Java

Realmente, foi estranho quando eu descobri que vagas Jr. eram até mais sensatas nos requisitos que vagas para estágio ou trainee. Claro, vagas Jr. exigem conhecimentos melhores, mas ver vagas de estágio exigindo tanta coisa apenas para ter a chance de entrar é um tanto absurdo. Por definição, o estagiário está se candidatando para aprender, e não para chegar lá sabendo o suficiente de tudo. Percebi que mais vale focar em uma vaga Jr. mesmo.

Bom, eu diria que estou no caminho certo, então. Estou aprendendo Java EE, JPA, JSF, Angular 6 (nas horas vagas, onde faço estágio), utilização de beans e DAO, já tenho noções de SQL, Java SE (apesar de que, confesso, preciso rever muitas coisas e colocar as mãos na massa), HTML, CSS e PHP (apesar de utilizá-las pouco).

Inclusive, fiz um “trabalho” simples de cadastro de séries para minha aula de Java Web, com campos para temporadas e outras informações, que permite salvar, alterar e deletar o conteúdo em um banco de dados SQL (não consegui ainda terminar a função de salvar).

Pedem mais Spring + Angular/React, pelo que eu vi no Catho. Inclusive, utilizam Angular no meu local de estágio (órgão público + fábrica de software terceirizada) e me recomendaram aprendê-lo. Então, suponho que não dê pra fugir do JS.

O curso que você me indicou parece ótimo, mas é muito caro para mim. Vou mantê-lo como alternativa, em todo caso.

No mais, obrigado pela resposta!

1 curtida

Quando terminar seu projeto de cadastro de série, plubique-o para que recrutadores possam vê-lo. Você pode usar Github, ou até mesmo plubicá-lo em um Heroku da vida, disponibilizar um acesso de visitante e durante a entrevista contar pra eles como você desenvolveu, o que usou, etc. Isso vai lhe ajudar bastante a demonstrar que o pouco que você já sabe está dominado com algo prático. Acredite, para o seu avaliador o blá blá de currículo pouco importa, mostrar que você já fez algo e ter autoridade do conhecimento intríseco da solução é muito mais importante.
Com um sisteminha desse publicado e você dizendo como fez e o que está aprendendo/fazendo para melhorá-lo, teu entrevistador já te olha com outros olhos.

No mais é isso, meus 2 centavos, sucesso e boa sorte nas entrevistas que em breve virão :wink:

OBS: pense com carinho também sobre continuar estudando a sua trilha para jogos. Perceba, o mercado para jogos no Brasil não é ruim, podem não ter fortes desenvolvedoras de jogos no país mas isso quer apenas dizer que aí pode ter uma oportunidade. Se você tem paixão por isso, porque não ser o sócio da próxima grande empresas de jogos BR reconhecida mundialmente? :wink:

Também moro em brasília e realmente, vagas são quase 100% para java, mas recomendo fazer o que gosta.

Se for pela linha Java tem que encarar uma infinidade de complementos de terceiros mesmo, sem falar que cada empresa usa uma sopa de letrinhas diferente, pq Java não tem uma boa direção oficial. Nesse momento o mais importante é conseguir estágio enquanto está na faculdade, seja lá qual for tecnologia, ganhar experiencia profissional.

Não sei bem o que seria uma “direção oficial”, que você está falando, mas hoje acho que podemos dizer que a comunidade Java caminha de mãos dadas com o Spring, claro, importantíssimo conhecer o JEE padrão também, mas o mais importante mesmo no final das contas é conhecer as bases, os conceitos profundamente, pois eles se repetem em todas as linguagens tecnologias… Acho que uma analogia para você que gosta de games seria, ao invés de aprender a desenvolver jogos usando Unity, estudar os algoritmos que resolvem os problemas matemáticos e de física de seus jogos, que no final o Unity deve usar (não sei mesmo, sou zerado em games). Nesse caso, entenda sobre como funciona a plataforma Java e como ela entende um SO, como é a gestão de memória, concorrência, etc. Isso você precisa conhecer estando em qualquer linguagem/plataforma.

Como usar cache, como criar soluções de integração (REST, GraphQL, etc.), como usar segurança, mesmo que configurado pelo seu framework favorito, entenda como ele aplica as regras de segurança.

Descendo mais, entenda de coleções para saber quando usar uma lista, um mapa, um conjunto, uma tupla, um dicionário, etc. não importa o nome que a sua linguagem favorita dá. Esse é um dos maiores problemas na programação atualmente, o cara sabe criar um Sistema Spring MVC usando JPA ou Hibernate, mas no final, usa lista pra tudo, não entende pra que serve um map ou um Set, como isso pode lhe ajudar a otimizar consultas, etc.

Tudo isso é muito mais importante que qualquer linguagem ou framework, pois esses conceitos acompanham todas as linguagens e frameworks existentes, desde os legados até os atuais.

Então seguindo a dica do @javaflex, cuide logo de arranjar um estágio, independente da tecnologia pra você pegar o ritmo e entender o mercado, enquanto isso crie seus próprios projetos, pois toda empresa irá “tolir” você de aprender toda e qualquer buzzword da moda que voê acabou de ler naquele blog maneiro. Pra isso, você desenvolve seus projetos pessoais :wink:

1 curtida

Qualquer profissão que seja, sempre nos vendem uma imagem que não é a real.
Por que?
Simples: a maioria das vezes nós teremos que encarar atividades que não são as que mais gostamos. E é por isso que nos pagam.
Definir um plano de carreira, em programação, é atirar no escuro.
As tecnologias mudam. Há 10 anos, JSF era o top. 5 anos atrás, frameworks action based. Hoje, SPAs. Amanhã, sabe-se lá.
Logo, você deve se preocupar em entender conceitos e esta pronto para mudar de linguagem, paradigma e etc, a qualquer momento.
É como Darwin teorizou: não é o mais forte, nem o mais adaptado. É aquele que melhor se adapta as mudanças que tem mais chances de sobreviver.

Isso não significa que você não deve focar em uma linguagem agora. Apenas que não deve achar que só essa linguagem vai ser a bala de prata para tudo.

Jogos? Tenha em mente estudar o máximo que puder sobre os conceitos básicos das linguagens que vier a utilizar. A partir daí, você cria seu background para conseguir evoluir e atingir seus objetivos.

1 curtida

Idem +1

Perfeito… :+1: