O que o programador Jr. precisa saber ?
Vamos conhecer as skills para ser um desenvolvedor com potencial de crescimento e superar os desafios.
Iniciando a carreira como desenvolvedor é muito importante esclarecer aonde queremos chegar e o que é preciso para alcançar esses requisitos. O primeiro passo, com certeza, é atuar como desenvolvedor e nesse momento, será em uma vaga júnior. E para isso ser desafiador mas com resultados surpreendentes, vamos escrever essas skills.
Como saber se estamos prontos para nos candidatar a uma vaga e ingressar na área de desenvolvimento ?
Iniciamos com quatro pontos fundamentais da programação: lógica de programação, estrutura de controle, estrutura de dados e POO. Esses requisitos vem antes mesmo de escolher linguagem de programação e frameworks.
Nessa etapa, a necessidade é entender conceitos, aplicar lógicas booleanas, estruturas de controle de fluxo como for, while, do while, if else, switch, break, continue, try catch, finally, entre outras, também estruturas de dados como vetores, matrizes, listas, pilhas, filas, entre outras. Há POO que trata-se de programação orientada a objetos para assim, entender classes, objetos, métodos, construtores, herança e composição, encapsulamento, modificadores de acesso, sobrecarga, sobrescrita e ainda mais detalhes, conceitos.
No primeiro contato pode parecer complexo mas é muito importante aprender e dominar esses conteúdos.
A segunda etapa do treinamento, escolher a plataforma e a linguagem de programação
A escolha aqui tem o objetivo de focar mesmo que no percurso da carreira ocorra mudanças. Nesse primeiro momento escolher a plataforma de atuação permitirá especializar-se e ter uma curva de aprendizado acelerada.
As opções de atuações são web, mobile, desktop e temos também embarcados, IoT, ciência de dados entre outros. Para cada uma delas temos suas particularidades de atuação.
web
Para quem escolher web terá entre front-end e back-end. No front-end temos possibilidades de linguagens de programação Javascript, a linguagem de marcação HTML e folhas de estilo CSS. No back-end temos possibilidades de linguagens de programação Java, C#, PHP, Python, Ruby. Ainda há outras linguagens e escolher uma é optar por todo um universo de tecnologias, bibliotecas e conceitos que constroem esse ambiente. Uma terceira alternativa é ser um desenvolvedor full stack que atua tanto no front-end como no back-end.
mobile
Para quem escolher mobile as divisões são a respeito da lojas que serão disponibilizados os aplicativos, ou iOS ou Android. Sendo cada um com sua linguagem nativa ou então, escolher um framework multiplataforma como Ionic, React Native entre outros.
desktop
O mercado atual está cada vez com menos oferta para atuar em desenvolvimento de aplicações para desktop mas ainda há oportunidade para manutenções de sistemas já criados, aperfeiçoamentos e até mesmo aplicações novas específicas para clientes específicos. Sendo em Java, C#, Delphi.
outras plataformas
Podem ser em C, Java, Assembly.
Requisito a aprender uma linguagem de programação
O principal fundamento para uma determinada linguagem de programação é construir um CRUD, estruturar uma SPA, Single Page Application, manipular o dado da informação em local storage, guardar o tokin de acesso da sessão.
Escolhido a linguagem de programação, há a necessidade de escolher um framework para potencializar os resultados na construção das aplicações.
Aprender um framework da linguagem de programação escolhida
Escolha um framework da linguagem de programação escolhida e foque nele até ter realmente dominado seu conteúdo, e direcione seu currículo para vagas que sejam voltadas para o que você optou.
Nesse momento, estamos diante da seguinte situação, por exemplo, escolhi Javascript para ser minha linguagem de programação, e estou entre os frameworks mais populares dela que são, Angular, React e Vue.
Aprender um pouco de SQL
Mesmo que a intenção não seja trabalhar com back-end, ter conhecimentos iniciantes a respeito de banco de dados e seus conceitos é de muita importância para construir aplicações front-end e entender as demandas das tarefas na rotina de desenvolvimento.
Validar o conteúdo com testes tradicionais
Partindo que foi escolhido desenvolvimento front-end web javascript com ReactJS, listei alguns questionamentos que devo fazer para sugerir que além de digitar código, temos que ter tranquilidade para falar de temas técnicos.
Quais critérios utilizei para escolher a stack que desejo trabalhar ? Respostas como, o que o mercado está procurando, o tamanho da comunidade e ecossistema ao redor da tecnologia, quem está por trás do desenvolvimento, os casos de uso de sucesso, quantidade de vagas disponíveis e quais empresas estão utilizando.
Critérios para ter acesso as melhores vagas ? dominar um conjunto específico de tecnologias e ser capaz de resolver problemas com elas, estar presente no Linkedin e Github com conteúdos relevantes que mostrem sua evolução.
A melhor forma de acertar na escolha da stack ? Espelhar-se em quem já está aonde deseja-se alcançar. Se possível, conseguir orientações para seguir o caminho.
As tecnologias A stack escolhida está completa com ReactJS no front-end web, React Native no front-end mobile e o NodeJS sendo uma plataforma escrita em cima do motor V8 do Google Chrome, um back-end.
A responsabilidade do back-end é garantir as regras de negócio, realizar a conexão com o banco de dados e estabelecer a comunicação com webservices.
Existe uma estrutura de dados utilizada para conectar o back-end com outros clientes e essa estrutura é o JSON. Muito poderosa e facilita todo esse processo.
O ReactJS oferece uma abordagem SPA, onde as requisições trazem apenas dados como resposta e, com esses dados, o front-end pode preencher as informações em tela.
O React Native oferece uma abordagem onde todo o código é feito em Javascript e os próprios dispositivos passam a entender esse código para gerar uma interface nativa.
O Expo é uma ferramenta que nos permite desenvolver para React Native sem instalar recursos nativos do Android e do iOS. Com o Expo, instalamos um aplicativo no celular e dentro dele há tudo que precisamos para desenvolver no React Native.
Já as migrations no back-end tem o objetivo fazer o controle de versão do banco de dados e facilitar o trabalho de mais devs no projeto, mantendo a base de dados sempre atualizada.
Query Params são parâmetros nomeados enviados na rota após o ? usados em filtros de paginação, por exemplo.
Route Params são parâmetros utilizados para identificar recursos.
Request Body é o corpo da requisição utilizado para criar ou alterar recursos.
Outro ponto importante é entender o funcionamento de protocolos, como por exemplo HTTP. Os métodos desse protocolo, temos o GET para buscar e listar uma informação, o POST para criar uma informação, o PUT para alterar a informação e o DELETE para deletar uma informação.
O conceito de IMUTABILIDADE no ReactJS trata-se de, não podemos manipular o valor de um estado de uma forma direta. Podemos apenas sobrepor o valor da variável do estado.
O Estado no ReactJS trata-se de uma informação a ser mantida pelo componente. Toda vez que o Estado é alterado, o componente faz a renderização novamente exibindo as novas informações em tela.
As principais diferenças entre ReactJS e React Native pode ser percebida em, no ReactJS, os elementos em tela possuem significado semântico enquanto no React Native não há semântica nos elementos. Uma outra diferença interessante é que no React Native sempre precisamos passar uma tag style que recebe um objeto com a estilização, já o ReactJS podemos definir classes estilizadas.
A técnica TDD, trata-se de Test-Driven Development, onde fazemos testes antes de terminar o desenvolvimento da funcionalidade.
Outras duas importantes observações sobre testes são, o teste unitário que testa um pedaço muito isolado de código e a necessidade de configurar um banco de dados específico para testar a aplicação, a parte do banco de dados real que está em produção.
Esses são exemplos de assuntos para se conversar com quem está começando para perceber o quanto esse programador estuda e realiza projetos, mesmo que projetos pessoais, pequenos.
Ferramenta de Versionamento
Toda vaga pede conhecimentos em pelo menos uma ferramenta de versionamento, e as mais populares são GIT ou SVN. Encontrei um curso gratuito na Udemy e outro no portal GitHowTo.
Entender um Diagrama de Classes
Há a necessidade de entender diagramas como o de Classe e o de Entidade Relacionamento.
E uma boa ferramenta para construir esses e outros diagramas é o UML.
Padrões de Projeto
Conhecer os principais padrões de projeto conforme a área de atuação das aplicações que deseja desenvolver. O MVC — Model, View e Controller se pretender trabalhar na plataforma web. Além do MVC, há outros padrão de projeto (Design Patterns), como o Factory e o Observer.
O meu Portfólio
E finalizando essa pesquisa dos requisitos iniciais exigidos para ser considerado um desenvolvedor júnior, é a construção de um portfólio a partir dos treinamentos e projeto pessoais realizados para demonstrar a experiência adquirida e para isso ser ainda mais característico da área, coloque os projetos no Github.
Para recapitular esse artigo, vou listar os itens a serem cumpridos:
- Dominar os fundamentos de programação: lógica de programação, estrutura de controle, estrutura de dados e POO
- Programar em uma linguagem de programação
- Ser desenvolvedor em um Framework
- Aprender comandos SQL, modelar um BD
- Dominar o Git, uma Ferramenta de Versionamento,
- Saber UML, diagramas de classe
- Conhecer Padrões de Projeto
- Montar um Portfólio
Seguimos o desafio de esclarecer os passos para construir uma carreira de desenvolvedor e poupar os tropeços, há outros detalhes para ter uma vaga e consolidar os estudos e direcionar os esforços.
- ter foco
- aprenda bem a tecnologia que vai utilizar no trabalho
- aprenda testes de unidade
- aprenda algum framework
- aprenda versionamento de código
- crie um portfólio
- participe de comunidades de programação
- faça um bom currículo e mantenha seu LinkedIn atualizado
Acho que terminamos. O objetivo aqui é conquistar a primeira vaga como desenvolvedor e completar esse desafio no menor tempo possível com o maior proveito tanto para você e sua carreira quanto para quem o contratou. E esse artigo tem a intenção de esclarecer o caminho a seguir o que priorizar e o que descartar. Até o próximo artigo e ótimos códigos.
Douglas A B Novato douglasabnovato