Developers Guide 2019

Este guia cobre as principais linguagens, tecnologias e tendências e serve para quem quer começar a programar ou quem já é desenvolvedor e quer melhorar suas skills.

Última atualização em 15/10/2019




Índice



Quero começar a programar

Se você quer começar a desenvolver softwares e chegou até este guia, parabéns! Embora ser um bom desenvolvedor não seja uma tarefa fácil, com dedicação e muito estudo você consegue se tornar um.

Mas antes de prosseguir neste guia, vamos tirar algumas dúvidas frequentes.

O que faz um desenvolvedor?

Um desenvolvedor, utilizando alguma linguagem de programação, juntamente a algumas tecnologias, cria sistemas ou aplicações, sejam elas Desktop, Web ou Mobile.

Exitem inúmeras linguagens de programação e tecnologias, e é normal que ao decorrer do tempo, algumas novas surjam e outras caiam em desuso. Procure sempre a versão atualizada deste guia.

Embora o desenvolvimento seja abordado de forma geral, desenvolver aplicações Web tem situações específicas, bem como aplicações Mobile ou Desktop, tornando necessário uma especialização em cada uma delas.

Subdivisões da profissão

Desenvolvimento de Websites

Desenvolver Websites é uma tarefa relativamente mais simples, pois existem ótimas ferramentas para isto, como Wordpress. Portanto não abordaremos este modelo aqui neste guia.

Desenvolvimento Web

Um dos principais mercados de desenvolvimento, com ótima demanda e ótimas vagas. A criação de aplicações Web se popularizou devido ao fato de basicamente qualquer dispositivo hoje em dia ter acesso a internet, por meio de um browser.

Basicamente o que difere um Website de uma aplicação Web é que a visão do Website é mais institucional, para mostrar uma marca ou produto, enquanto uma aplicação Web é focada em ser um sistema, fazer controle da empresa, funcionários e afins.

É comum as empresas terem seus sites e suas aplicações separadas, pois elas têm fins diferentes.

Desenvolvimento Desktop

O desenvolvimento de aplicações desktop ficou mais voltado para aplicações como Photoshop, AutoCad entre outros que demandam muito processamento. É bem mais comum sistemas como cadastro de clientes, gestão de fornecedores e afins, terem aplicações Web.

Estamos vivendo uma onda nas quais temos também aplicações Web instaladas no Desktop, o que visivelmente será uma tendência futura.

Em suma, investir em tecnologias APENAS para Desktop atualmente não é uma boa escolha. É aconselhável que escolha uma tecnologia que ao fim do seu código, sua aplicação rode em Windows, Mac, Linux, Android e iOS!

Desenvolvimento Mobile

O crescimento dos dispositivos móveis só aumenta a cada ano, e vivemos em uma era que a praticidade em ter tudo na palma da mão é uma realidade.

Desenvolver aplicações para dispositivos móveis é uma ótima opção para sua carreira, ele tem bom mercado e ainda tem uma ótima gama de tecnologias para escolher sua favorita.

Preciso de Faculdade?

Não mesmo! Dificilmente em uma entrevista de emprego vão te pedir um diploma, pelo contrário, mesmo que mostre o diploma, vão testar você, pedir pra você escrever um código.

Se você está começando, não entre na faculdade ainda! Existem muitos cursos e materiais bons online e presenciais, que podem te dar a bagagem que você precisa para ser um ótimo desenvolver.

Mercado de Trabalho

São incontáveis as vagas para área de TI no Brasil, e boa parte delas para desenvolvedores. Com salários atrativos e empresas modernas (Cheias de mimos), podemos dizer que temos as melhores vagas.

Infelizmente, enquanto sobram vagas, faltam profissionais qualificados, mas fica tranquilo que este guia é justamente para isto.

Boa parte do mercado se concentra nos polos tecnológicos do Brasil, como São Paulo, Sul e agora expandindo para o Norte/Nordeste, mas como São Paulo como destaque.

Além do Brasil, outros países que sempre têm vagas abertas para desenvolvimento são Nova Zelândia, Austrália, Canadá e Portugal.

Linguagens, Tecnologias e Tendências

É importante frisar que as linguagens e tecnologias mudam com frequência, mas até a escrita deste guia, as principais eram as listadas abaixo.

Se você está começando ou quer começar e viu algum destes itens acima, você está basicamente no caminho certo.

Se você está estudando algo que não está nesta lista, não necessariamente você está errado, mas seria interessante entender os motivos da sua escolha, já que os itens listados acima, são ditos como tendências de mercado.


Já sou programador

Se você já é programador e chegou a este guia, parabéns! Significa que você quer ser ainda melhor no que faz e isto é muito bom!

Recomendamos primeiramente que leia o tópico Linguagens, Tecnologias e Tendências do capítulo anterior, para garantir que seus estudos e decisões estão alinhadas com as tendências de mercado.

No mais, basta seguir este guia que estará em boas mãos!


Antes de Começar

Conheça o básico

Independente de ser novato ou expert, ter uma base sólida é o item mais importante deste guia. Saber o básico vai possibilitar que você se mova entre linguagens e Frameworks, e como nossa área muda com frequência, ter essa flexibilidade é extremamente importante.

O que é o básico?

Quando recomendamos aprender o básico, ter uma base sólida, nos referimos a ter uma boa lógica de programação, conhecer bem Orientação à Objetos e alguns Soft Skills que virão no próximo tópico.

Tanto a lógica de programação quanto a OOP (Object Oriented Programming – Programação Orientada à Objetos ou Orientação à Objetos) podem ser adquiridas com qualquer linguagem e reutilizada em diversos cenários.

Além destes dois tópicos principais, existem dois itens importantíssimos para todo desenvolvedor, o SOLID e o Clean Code.

O SOLID é a sigla para cinco princípios que você deve seguir para ter um bom código, é uma espécie de guia, boas práticas, para todo desenvolvedor.

O Clean Code (Código Limpo) age em conjunto com o SOLID, guiando seu código para uma melhor organização, visibilidade e manutenção.

Ambos foram criados por Robert C. Martin, carinhosamente chamado de Uncle Bob!

Soft Skills

Embora codificar bem seja essencial, existem algumas habilidades que todo desenvolvedor precisa ter.

Boa Comunicação

Saber se comunicar bem é essencial em qualquer área, mas no mundo do desenvolvimento é essencial. Saber entender o cliente, repassar a mensagem para o seu time ou mesmo se expressar em situações adversas pode te garantir muitos pontos positivos.

Procure sempre colher feedbacks sobre sua comunicação, e até mesmo participar de cursos, palestras ou outros que agreguem ao mesmo.

Proatividade

Não esperar as coisas acontecerem, se antecipar aos problemas... Não há nada melhor que uma pessoa proativa! Esta é outra Skill que se destaque em todas as áreas, mas principalmente na nossa.

Imagina um bug que causaria milhões de prejuízo e foi impedido por você!

Resolução de Problemas

No fim tudo se resume a resolver problemas, você será pago para isto! Lembre-se sempre que fazemos uso das tecnologias para RESOLVER problemas, nunca ao contrário.

Antes de usar determinada tecnologia, sempre pergunte quais problemas esta tecnologia resolve, e nunca tente achar um problema para utilizar determinada tecnologia.

Outras dicas de carreira

Para mais dicas de carreira, saber dos meus erros e deslizes, acesse o Carreira Dev* no balta.io.
* Disponível apenas para assinantes


O que todo Dev tem que saber!

Fortalecendo o Básico

Existem três itens a serem estudados nesta primeira etapa, e independente do seu nível, recomendo que pelo menos revise estes itens antes de prosseguir.

Lógica de Programação

Um dos primeiros, porém, não menos importantes tópicos do seu aprendizado. Muitas universidades e cursos ensinam LP (Lógica de Programação) com linguagens e IDEs menos robustas, para forçar seu entendimento.

É comum termos aulas de lógica com C, C++ e depois migrarmos para o C#/Java na parte de OOP.

Caso seu tempo seja curto, recomendo já iniciar com sua linguagem de preferência para otimizar seu caminho, mas mantendo-se sempre disciplinado com seus estudos.

Outro ponto é que você será “forçado” a aprender LP durante sua jornada, então, caso sinta-se confortável, estude-a em paralelo ao seu progresso com os próximos tópicos.

Em suma, não se desespere neste tópico, pois você terá muitas oportunidades de treiná-lo, mas também não seja desleixado e deixe-o de lado.

Estude exercícios como ordenação de vetores, Fibonacci, recursividade entre outros.

Material para Estudos
Um livro legal é o Lógica de Programação e Algoritimos com JavaScript, principalmente por utilizar uma linguagem popular e que servirá como base para seu progresso nos estudos.

Livro: Lógica de Programação e Algoritmos com JavaScript
https://novatec.com.br/livros/logica-programacao-algoritmos-com-javascript/

OOP, SOLID, Clean Code e Testes de Unidade

Este sem dúvidas é o tópico mais importante deste guia, e o que mais causa o “falso positivo” onde sempre temos a sensação que já sabemos do assunto, mas na verdade ainda temos muita coisa a aprender.

Você conseguiria resolver um problema real, neste momento, somente usando OOP? Um Console Application, sem UI, sem banco de dados, só OOP...
Se sua resposta foi sim, parabéns, porém não se abale se ela foi não, pois 90% das pessoas reprovam na parte teórica/OOP das entrevistas técnicas.

A OOP que normalmente aprendermos, nos leva a cenários simples e rasos, com exemplos apenas didáticos, e mapear cenários reais requer estudos e principalmente treino, muito treino!

SOLID é a sigla de cinco princípios básicos que devemos seguir para ter um código melhor. Estes padrões vão te ajudar em QUALQUER LINGUAGEM e em muitos cenários... acredite... muitos mesmos!

Clean Code é a junção do SOLID e outros padrões para escrevermos código legíveis, testáveis e performáticos.

O criador do SOLID/Clean Code é o Robert C. Martin ou Uncle Bob, que também é autor de dois ótimos livros
Claro que um bom código é um código testável, e este tópico não deve ficar de fora dos seus estudos. Um bug em uma aplicação pode custar MILHÕES em prejuízo.

Material de Estudos
Curso 1975 – Modelando Domínios Ricos
https://balta.io/cursos/1975

Curso 7182 – Refatorando para Testes de Unidade
https://balta.io/cursos/7182

Livro: Clean Code
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/

Livro: Clean Coder
https://www.amazon.com/Clean-Coder-Conduct-Professional-Programmers/dp/0137081073


Carreiras no balta.io