Categorias

Dez habilidades essenciais para desenvolvedores em 2020

Se você começou a desenvolver programas e sistemas em 2019 ou já é um veterano de eras passadas, sempre há espaço para aprender, principalmente em uma área em constante mutação. Estar atento às tendências é um dos requisitos básicos de um bom desenvolvedor e algumas habilidades serão essenciais para o ano de 2020 para quem quiser continuar avançando na carreira.

Trazemos aqui uma lista de dez competências que acreditamos que cada programador, cada profissional de TI deveria trazer em seu currículo ou aprender nesse novo ano. Obviamente, essa lista não é definitiva e pode não se aplicar ao segmento da indústria que você escolheu seguir. Entretanto, acreditamos que ela possa funcionar como um guia, um ponto de partida para muitos profissionais.

É possível que algumas dessas você já domine, ou até mesmo a maioria delas, mas nunca é demais ampliar o nosso leque. Portanto, aproveite suas férias (?) ou esse período de calmaria pré-Carnaval para alavancar seus estudos e maximizar seu potencial:

1) Uma nova linguagem orientada a objetos

Como desenvolvedor, certamente você já conhece alguma linguagem de programação, seja C++ ou JavaScript. Entretanto, nossa recomendação para 2020 é que você aprenda outra ou se aprimore ainda mais em uma linguagem orientada a objetos.

Existem várias opções nesse sentido, mas Java segue sendo a linguagem mais solicitada pelo mercado (de acordo com o índice Tiobe) e não há sinais de que isso vá mudar no futuro imediato. Além desse fator, Java é relativamente direta para se começar, o que a torna atraente para iniciantes, e apresenta funcionalidades poderosas que permitem ao programador trabalhar desde com desenvolvimento web até Big Data.

Se você está procurando um ponto de entrada para o Java, nós temos um guia que pode ser bastante útil nesse sentido.

2) Uma linguagem de script

Além de uma linguagem orientada a objetos, é fundamental dominar pelo menos uma linguagem de programação de script. Essa é uma ferramenta prática que pode ser utilizada facilmente para criar suas próprias ferramentas e rotinas para resolver problemas comuns de forma ágil, facilitando automatização de tarefas, por exemplo. Então, mesmo que você seja um especialista em uma linguagem OOP, essa é uma competência que pode complementar seu cotidiano profissional.

É possível consolidar os dois aprendizados? Sim. Algumas linguagens de programação são adequadas para codificar tanto com orientação a objetos quanto com suporte a scripts. Python é uma delas, que combina o melhor dos dois mundos e também é bastante solicitada pelo mercado.

Se você está procurando um ponto de entrada para o Python, nós também temos um guia que pode ser bastante útil nesse sentido.

3) Domínio de IDEs

Houve uma época em que programadores reclamavam dia e noite de seus IDEs, mas os ambientes melhoraram enormemente nas últimas décadas e se tornaram ferramentas indispensáveis no ambiente de trabalho. Não que os desenvolvedores tenham parado de reclamar.

Existem várias opções disponíveis no mercado, cada uma delas mais ou menos adequada para determinada linguagem de programação. Eclipse e Visual Studio Code apresentam dominância, mas Jupiter Notebook, NetBeans e IntellJ vem se destacando no cenário.

É importante aprender os meandros de seu IDE, atalhos, configurações, customizações, instalação e truques que vão além do beabá para aproveitar ao máximo o que ele pode oferecer. Para isso, às vezes uma leitura atenta do HELP ou do manual já basta para se aperfeiçoar, mas um bom livro também pode ajudar o desenvolvedor a ir além de um simples usuário para se tornar um mestre em sua ferramenta.

4) Domínio de editor de texto

Em contrapartida, o bom desenvolvedor não deve jamais se tornar dependente de seu IDE. Dominar um editor de texto é outra competência fundamental para a área. Foi assim no passado e continuará sendo assim em 2020. É leve, é prático, é menos propenso a erros e permite um controle fino do código sendo gerado.

Embora seja possível usar o Bloco de Notas como editor de texto, as ferramentas preferidas dos desenvolvedores trazem mais recursos, já que foram criadas com esse público alvo em mente. Qual é a melhor delas é uma discussão acalorada, então deixamos como sugestões de aprendizado, sem nenhuma ordem de importância, o VIM, o Sublime e o NotePad++. Na dúvida, experimente todos e adote o que lhe for mais confortável.

Novamente, é necessário desenvolver o domínio da ferramenta. Editores de texto especializados podem parecer mais simples do que IDEs completos, mas também é importante conhecer seus atalhos, configurações, customizações etc.

5) Ferramenta de controle de versão

Na hora que o bug aparece, o que distingue bons desenvolvedores dos amadores não é a capacidade de debugar, mas a possibilidade de restaurar uma versão anterior e seguir em frente com o projeto enquanto isso. Se você não está utilizando uma ferramenta de controle de versão em pleno 2020, a hora de começar é agora.

É possível que seu IDE já ofereça esse tipo de funcionalidade, mas é importante também dominar opções alternativas como Git e SVN. O primeiro faz parte do GitHub e obteve uma prevalência impressionante no mercado e na comunidade: mais de 70% das organizações utilizam o poder do Git para suas necessidades.

Independente de sua escolha de serviço ou ferramenta, é importante dominar também os conceitos de controle de versão, como branchingmerging, aprender linhas de comando e não ficar usando somente a interface gráfica.

6) Containers

Se você esteve trancado em seu cubículo nos últimos cinco anos, é possível que tenha perdido uma das mais significativas revoluções na forma de se desenvolver nos últimos cinco anos. Em 2020, nós defendemos que cada programador, engenheiro de software, cientista de dados, gerente de projetos precisa aprender como containers funcionam e suas ferramentas, seja Docker ou Kubernetes.

Containers permitem que desenvolvedores testem suas aplicações em um ambiente unificado e ainda facilitam o processo de embarque para o ambiente definitivo, com todas as dependências corretamente sincronizadas.

Se até agora estávamos falando de competências óbvias para a área de tecnologia, containers são a tendência que tem tudo para se tornar a nova obviedade, o novo conhecimento fundamental para qualquer profissional que queira seguir carreira em desenvolvimento. Esse é o tipo de conhecimento que funciona como um diferencial no mercado.

7) Plataforma de nuvem

A nuvem e suas possibilidades são outro quesito fundamental na caixa de ferramentas de qualquer desenvolvedor. Empresas de todas as áreas estão migrando aplicações e serviços para a nuvem ou integrando seus sistemas internos com plataformas disponíveis remotamente. Se você ainda não precisou trabalhar nesse tipo de ambiente, é apenas uma questão de tempo até que essa competência seja solicitada.

Dependendo do escopo do projeto, apenas um serviço de nuvem pode oferecer a estabilidade, a escalabilidade ou o poder de processamento necessários para tudo funcione. O profissional que não conhecer as soluções existentes no mercado ou como trabalhar integrado a elas se tornará rapidamente obsoleto.

A oferta de serviços é ampla, portanto alcançar o domínio de todas as alternativas é uma tarefa quase impossível. Recomendamos focar os esforços nas plataformas dominantes:  Amazon Web Service (AWS), Google Cloud Platform (GCP) e Microsoft Azure. Se possível, obtenha um entendimento de todas e se especialize nas soluções de pelo menos uma delas.

8) Básico de rede

É grande a quantidade de desenvolvedores profissionais no mercado que não possuem um entendimento básico de como funciona uma rede, apesar de vivermos em um mundo onde tudo está conectado, desde computadores em LAN, passando por redes Wi-Fi e Internet das Coisas. De certa forma, parece que redes se tornaram tão onipresentes que seu conhecimento se tornou desnecessário.

Entretanto, isso não é verdade: nenhuma aplicação vive isolada e compreender a relação cliente-servidor é uma base de sustentação para aperfeiçoar o próprio desenvolvimento da solução. O mínimo de conhecimento da arquitetura de um servidor, sua infraestrutura de rede, o processo de requisição e resposta, a forma como o cliente se conecta, tudo isso já impacta no resultado final.

9) Estrutura de dados e algoritmos

Compreender estrutura de dados e algoritmos é outra competência fundamental para os desenvolvedores e algo que é cobrado pelo mercado. Esse é o tipo de conhecimento, assim como o básico de rede, que o aluno já traz de um bom curso de Ciência de Computação ou programação, mas que pode estar deficiente no conjunto de habilidades dos auto-didatas.

Em um nível mais avançado, é possível começar uma carreira como Cientista de Dados, uma profissão que vem crescendo vertiginosamente no setor de tecnologia e terá um grande impacto em um futuro imediato, com especializações como Big Data Engineering, Inteligência Artificial e Business Inteligence.

Se você possui falhas nessa área, 2020 é um bom ano para compensar esse aprendizado e fortalecer sua base de conhecimento.

10) Banco de dados e SQL

SQL é o banco de dados mais popular do mercado e muitas vezes se confunde com o próprio termo. É bastante provável que, como desenvolvedor, você já domine o básico do SQL, como criação de tabelas, consulta, normalização, queries etc. Se não for o seu caso, é urgente dominar pelo menos os seus pontos fundamentais.

Nossa recomendação, entretanto, é que o profissional vá além do “arroz com feijão”, que tenha um domínio pleno do banco de dados que adotar, seja ele Oracle, MySQL, Microsoft SQL Server, PostgreSQL.

Já que estamos falando de banco de dados, seria interessante também ter contato com NoSQL e seus bancos não relacionais. Esse recurso combinado com a solução de nuvem Azure tem impulsionado negócios e a tendência é de crescimento para 2020 e adiante.