5 coisas que todo desenvolvedor deveria saber

Quando se diz que estão faltando profissionais qualificados no mercado de TI, geralmente são aqueles que são muito especializados e que sabem entregar resultados.

Por isso, se você quer ser o/a profissional que qualquer empresa gostaria de contratar, você precisa, em primeiro lugar, dominar o básico.

E quando falamos de coisas básicas, não significa que elas possam ser dispensáveis. Muito pelo contrário, sem uma boa base, todo o restante fica deficiente, fica mais difícil.

Sendo assim, resolvi listar aqui 5 coisas que qualquer desenvolvedor precisa saber para se dar bem no mercado de trabalho.

A ideia não é ensinar sobre esses tópicos, até porque seria impossível fazer isso num único artigo. Só pretendo apontar um caminho para que você possa se guiar. 

Num outro post eu já falei sobre uma soft skill essencial para nós: lidar com pessoas. Mas aqui eu quero focar em habilidades técnicas.

Isto foi tema de uma palestra que eu dei em 2020. Confira esta lista porque os temas continuam muito atuais. É claro que não poderia ser diferente, já que essas coisas são a base para todo o restante.

Só um lembrete: isso aqui está longe de ser a lista definitiva. São coisas baseadas na minha experiência pessoal e naquilo que já vi acontecer durante muitos anos como desenvolvedor.

1. Algoritmos e estruturas de dados 

Sabe quando você entra na graduação em TI e encara aquelas matérias que muitos acham chatas como lógica de programação, estruturas de dados e análise de algoritmos?

Pois é, dá para perceber que não tem como ir adiante sem elas. E não é por acaso. Aquilo é a base para quem quer se tornar um bom desenvolvedor. 

É preciso saber escrever um bom algoritmo para resolver um problema, assim como é preciso ler um algoritmo e entender o que ele faz. Aliás, essas duas coisas são uma parte fundamental do aprendizado: 

  • ler código dos outros 
  • e aprender a escrever os seus próprios. 

Lendo código você aprende com diferentes estilos e com o raciocínio dos outros e ainda descobre soluções que não tinha pensado antes. Escrevendo seus próprios códigos você exercita suas habilidades de programação.

Mas isso não é tudo. Por exemplo, entender porque um algoritmo tem um desempenho melhor que outro e como medir a complexidade de diferentes algoritmos estão entre as coisas que te ajudam escrever um código melhor.

Complexidade de algoritmos
Complexidade de algoritmos.
Imagem retirada de: http://www.inf.ufrgs.br/~prestes/Courses/Complexity/aula1.pdf

2. Uma base sólida em programação orientada a objetos

Aqui eu falo de programação orientada a objetos – POO – porque praticamente todas as linguagens mais populares seguem esse paradigma.

Mas isso não quer dizer que você não deva conhecer outros paradigmas de programação, como a programação funcional, por exemplo.

Falando em POO, tem alguns conceitos que você precisa obrigatoriamente saber:

  • Abstração
  • Encapsulamento
  • Herança
  • Polimorfismo

Estes são os 4 pilares da POO. E não basta saber a definição, tem que saber usar. A partir disso, você tem condições de entender e usar na prática outros conceitos essenciais no dia a dia, como interfaces, classes abstratas, padrões de projeto e até mesmo arquitetura de software.

No meio disso tudo, eu diria que a capacidade de abstração é uma das habilidades mais fundamentais.

Tem ainda uma habilidade que eu chamo de “pensar como um desenvolvedor” e que tem tudo a ver com abstração.

Quando você desenvolve essa habilidade, você se torna capaz de: 1) bolar uma solução para um problema e 2) implementar essa solução em forma de software. E só se chega a isso treinando.

3. Controle de versão – Git e GitHub

Também não dá para trabalhar sem saber o mínimo sobre versionamento de código.

Primeiro, é preciso entender como funcionam os fluxos de trabalho mais usados. São algumas coisas básicas que a gente usa praticamente todo dia. 

Repositórios locais e remotos, pull, push, commit, stash e outros termos muito usados.

Git - comandos

Depois, pode partir para fluxos mais avançados, sempre atento às boas práticas, como: 

  • Escrever commits bem descritivos
  • Criar e mesclar branches (merge)
  • Resolver conflitos de mesclagem.

Então, você está pronto para lidar bem com o Git Flow, GitHub Flow, forks, pull requests, code review, etc.

Para publicar seu código ou trabalhar em equipe, o GitHub é o serviço mais popular, mas também pode ser GitLab ou um serviço parecido em alguma plataforma de computação em nuvem.

Se você está começando, quando for desenvolver qualquer projeto para estudar ou praticar, mesmo que seja uma simples página HTML, publique seu trabalho no GitHub.

4. Bancos de dados

Esse é um outro tema do qual não dá para fugir.

Algumas vagas de emprego exigem experiência num determinado banco de dados, como MySQL ou Oracle, por exemplo.

Mas existem dois principais tipos de bancos de dados: relacionais e não relacionais (NoSQL).

Quanto aos bancos relacionais, apesar de toda a facilidade que temos para desenvolver hoje em dia, eu te digo: aprenda SQL. Um bom lugar para começar é o SQLZOO.

Depois disso, você só vai ter que lidar com variações de sintaxe ou recursos que alguns bancos de dados tem e outros não.

É muito provável que você acabe usando um framework que acessa o banco de dados e faz todo o trabalho para você, sem precisar manipular os dados diretamente.

Tendo um bom conhecimento sobre o tema, você saberá o que esses frameworks fazem “por baixo dos panos”. Isso pode te ajudar a resolver possíveis problemas bem mais rápido.

Já os bancos de dados NoSQL são cada vez mais populares quando se fala em big data. Acontece que aplicações com pequenos volumes de dados também podem usar NoSQL.

Por isso, não ignore o conceito de persistência poliglota. Uma mesma aplicação pode usar diferentes bancos de dados para diferentes necessidades.

Portanto, entenda como funciona e para que serve cada tipo de banco de dados.

5. Testes

“Teste rápido, falhe rápido e ajuste rápido”

Tom Peters

Testar software não é simplesmente procurar bugs. É encontrar falhas e corrigi-las o mais cedo possível. É garantir a qualidade do software entregue.

Por isso, todos os testes que puderem ser feitos devem ser feitos.

É bom pensar na ideia de adicionar os testes ao processo de desenvolvimento desde o início.

Nesse contexto, é bom que você saiba que existem diferentes técnicas, tipos e níveis de testes.

Entre as técnicas mais utilizadas estão o TDD e BDD.

Enquanto o TDD se baseia em casos de testes, escritos e executados em ciclos curtos, o BDD se baseia em cenários e especificações do comportamento da aplicação.

Sobre os níveis de testes, a melhor imagem que consigo trazer é a da pirâmide de testes.

Pirâmide de testes
Pirâmide de testes

Testes unitários, que são isolados e executam mais rápido, devem existir em maior quantidade.

Subindo a pirâmide, os testes ficam cada vez mais abrangentes, cobrindo mais partes do sistema funcionando juntas. Por isso chamamos de testes de integração.

Em qualquer nível, o profissional que sabe automatizar os testes tende a ser mais valorizado no mercado. Essa automação não é só uma questão de agilidade, mas também de qualidade: testes manuais estão muito mais sujeitos a erros.

Assim, mesmo quem é da área de qualidade de software e não atua no papel de desenvolvedor precisa ter conhecimentos de programação para escrever os testes automatizados.

Essas são as minhas recomendações. Se você é iniciante na TI ou se não se sente confortável com algum desses tópicos, se dedique a aprender porque eles são realmente muito importantes.

O tema é extenso mas acredito que não há nada melhor para aprender do que pôr a mão na massa. 

A dica é: crie um projeto que resolva algum problema real, como um app, e comece a praticar.

Então, qual é a sua maior dificuldade entre esses 5 tópicos? Deixe seus comentários.


Photo by Nubelson Fernandes on Unsplash

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.