Os 13 conhecimentos essenciais a um programador de sucesso!

A área de programação ganhou grande visibilidade nos últimos anos, tanto para pessoas envolvidas no mercados de TI, quanto para o público em geral, uma vez que com o avanço da programação, também evoluímos como sociedade.

Graças a evolução da tecnologia, hoje o programador e o desenvolvedor (Dev) estão cada vez mais valorizados. Claro, ainda não chegamos ao patamar de valorização que obviamente gostaríamos. Contudo, é inegável que hoje somos essenciais para praticamente todas as organizações. Vamos aos fatos:

  • Nos anos 90, uma empresa não possuir uma área de TI/ desenvolvimento, era normal e muito frequente.
  • Hoje, se essa mesma empresa não possui um setor de TI/desenvolvimento, por menor que seja esse setor, é praticamente um atestado de falência.

Oportunidade x Qualificação

Essa mudança no paradigma organizacional fez com que a área crescesse em oportunidades. Só o website da Catho, por exemplo, apresenta mais de duas mil vagas em disponível apenas para o termo “programador”, mostrando oportunidades variadas de carreiras que abrangem todas as faixas de salário.

“Wow, vou aprender a programar e ficar rico!”

Calma lá, não é bem assim! Só porque há abundância de vagas, não quer dizer que as organizações vão sair contratando profissionais sem nem ao menos verificar a qualificação do indivíduo.

Sim! É preciso muita qualificação e estudo nessa área. E quando falo estudo, estou comentando sobre um processo contínuo. O que você aprendeu em 2010, talvez já não se aplique em 2016. A tecnologia que você utiliza em um projeto, pode não ser a mesma utilizada em outro. Resumindo, você precisa estar a todo momento tentando se reciclar profissionalmente e se adaptando a realidade do mercado. Entendido?

OK, entendido! Mas como começo na área?

Entendido isso, agora você pode relaxar um pouco, pois no seu início de carreira, as coisas não são tão malucas e mutáveis como falei acima. Em outras palavras, os princípios da programação não irão mudar a cada nova tecnologia que é lançada. Existe sim uma série de conhecimentos essenciais para todo programador de sucesso, independente do rumo escolhido para sua carreira: back-end, front-end, mobile, full-stack, games e outros.

Nesse post, é exatamente sobre isso que iremos falar, os conhecimentos essenciais que todo programador/desenvolvedor precisa ter para ser bem sucedido na carreira. Para facilitar a sua vida, coloquei os conhecimentos em ordem crescente, de mais inicial ao mais avançado.

Claro, isso é apenas a minha opinião. Você pode enxergar de forma diferente, principalmente, ao chegarmos ao final do post. Onde a área de atuação do profissional começa a exercer um papel importante. Portanto, se você possuir uma opinião divergente, fique à vontade para expressá-la nos comentários.

Sem nos prolongarmos mais, o conhecimento mais essencial para ser um programador é…

1º – Hardware e Software

Hardware

Óbvio que ter noções básicas de hardware e software seria o primeiro de todos! Resumindo, saber utilizar um computador, seu sistema operacional, softwares e hardwares que o compõem é extremamente essencial. O computador será a sua ferramenta de trabalho! Por isso, quanto mais domínio você tiver sobre ele e todas as partes que o compõem, mais fácil será sua evolução na área de programação. Não estou dizendo que você precisa saber TUDO sobre software e hardware, isso será mais tarde na sua carreira, mas sim você precisa ter facilidade com ele. Sabe aquele cara na família que todo mundo vai pedir ajuda com questões relacionadas à tecnologia? Bem, esse deve ser você!

Como adquirir esse conhecimento?

Só há um jeito: fuce em tudo! Formate o seu PC, instale softwares, instale sistemas operacionais, abuse do next, next, next. Desmonte seu PC, monte seu PC, troque peças. Faça testes e veja os resultados. Não tenha medo, mas também seja inteligente, busque ajuda na internet, tutoriais, faça backups, não faça downloads de sites duvidosos, enfim… mãos a obra!

2º – Lógica de Programação

Seguindo a nossa trilha de conhecimentos, temos Lógica de Programação e Algoritmos. O primeiro curso que você irá ter que fazer na sua trajetória para ser um programador ou desenvolvedor, com certeza será o curso de Lógica de Programação e Algoritmos.

Porque?

Basicamente, porque esse conhecimento irá te ensinar a programar de uma forma universal. Depois de aprender Lógica de Programação e Algoritmos, os mesmos conhecimentos serão aplicados para praticamente todas as linguagens de programação existentes. O que irá mudar serão apenas as regras especificas de cada linguagem. Contudo, a base será a mesma. Por isso escrevi acima “aprender programação de forma universal”.

Além disso, esse conhecimento também irá te ensinar sobre como um software pensa, se comporta e quais os conceitos e técnicas mais fundamentais da área.

Resumindo, é extremamente importante não medir esforços para dominar Lógica de Programação. Pode ser um pouco chato no início, mas isso pode ser o diferencial entre um programador bom e um programador mediano. Se você encontra-se nessa etapa da carreira de um programador, dê uma olhada também em nosso post que falamos sobre a melhor forma de aprender Lógica de Programação.

3º – Orientação a Objetos

Orientação a Objetos é simplesmente o paradigma de programação mais utilizado pelas linguagens mundo a fora. O que isso significa? Basicamente, que para você desenvolver um software duradouro em termos de manutenibilidade, com qualidade de software superior, de acordo com as boas práticas de programação, utilizar o paradigma OO é uma obrigação em 90% dos casos.

“Ahh, mas eu programo somente em C”

OK, realmente, C não é orientado a objetos e, por isso, você não precisa saber OO para programar com C. Entretanto, você ficará refém dessa linguagem e outras que não se utilizam do paradigma. Em outras palavras, a sua empregabilidade será menor e, por consequência, a sua valorização profissional também. Portanto, não arrisque, aprenda Orientação a Objetos, o seu currículo agradece e o seu futuro também!

IMPORTANTE: Só para deixar claro, não estou dizendo que C não é uma linguagem importante, muito pelo contrário! Entretanto, versatilidade é uma característica muito bem-vinda no mercado de programação. Portanto, saber mais de uma linguagem de programação é fundamental.

Se você ficou curioso para saber mais sobre OO, em outro post explicamos em mais detalhes o que é Programação Orientada a Objetos e porque é tão importante para o profissional da área de desenvolvimento, vale a pena conferir!

4º – Linguagens de programação

Código JavaScript | JavaScript para iniciantes: o que é, origens, para que serve e "Hello World"

Finalmente! Está na hora de aprender e começar a ganhar experiência com pelo menos uma linguagem de programação de mercado.

Existem diversas, sendo que algumas delas são mais populares e possuem mais visibilidade, enquanto outras cobrem nichos de mercado e são voltadas a objetivos específicos. A tarefa de escolher por qual linguagem começar é bem complexa e pode demandar bastante pesquisa, pois a linguagem precisa estar alinhada com o seu objetivo de carreira.

Se você não sabe bem qual rumo você quer dar para a sua carreira, recomendo que você inicie com alguma das linguagens mais populares do mercado, entre elas:

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Python
  • Ruby
  • PHP
  • Swift

Tempo de aprendizagem

Isto irá variar conforme as características e complexidades da linguagem escolhida. Contudo, uma coisa é certa: no momento que você aprender a sua primeira linguagem de programação, a tendência é que o seu tempo de aprendizagem seja cada vez menor com as outra. Isto se você estudou Lógica de Programação. Lembra lá do 2º tópico desse post? Pois é, nesse momento você irá agradecer por ter priorizado o aprendizado em Lógica de Programação antes de qualquer linguagem de mercado.

5º – Banco de Dados

Os 13 conhecimentos essenciais a um programador de sucesso!

Caso o seu objetivo de carreira seja trabalhar com desenvolvimento, aprender banco de dados é uma obrigação, principalmente, se você pretende trabalhar com linguagens back-end. Afinal de contas, para a sua aplicação funcionar, ela precisará de um servidor e um banco de dados.

Tá, mas eu quero front-end, preciso mesmo?

Não! Quer dizer… Sim! Se você for trabalhar com desenvolvimento front-end, “até que dá” para dizer que saber banco de dados é algo opcional. Contudo, hoje em dia, no mercado de desenvolvimento tudo está muito interligado e, especialmente em empresas pequenas, onde encontramos um profissional de TI que acaba sendo responsável por todas as áreas de atuação.

Meio maluco isso, mas é o que acontece. O profissional que cuida da infraestrutura é o mesmo que cuida do desenvolvimento que, por sua vez, realiza os testes e também otimiza o banco de dados e faz o front-end. Sendo assim, a minha recomendação é: aprenda o básico de Banco de Dados!

Como funciona um servidor e um SGBD (Sistema de gerenciamento de Banco de Dados), aprenda sobre modelagem, funcionamento e desenvolvimento de uma base de dados. Para finalizar, conheça os principais comandos para manipulação dos dados.

Se possível, estude tanto sobre banco de dados relacionais, quanto não relacionais (NoSQL). Se não sobrar tempo para tudo isso, opte por aquele que mais se adequam ao seu objetivo de carreira. Nesse caso, acredito que esse post irá ajudar. Nele, você encontra um resumo sobre os top 10 SGBDs do mercado de TI.

E se a empresa possuir um DBA?

É muito possível que você trabalhe em conjunto com um DBA (Database Administrator). Nesse caso, ele será o responsável por toda a administração e otimização do Banco de Dados. Contudo, mesmo nesses casos, você precisará conhecer o mínimo sobre banco de dados para que a sua aplicação (desenvolvimento) consiga conversar da maneira correta com o banco de dados.

Dev x DBA

Até para você se preparar, existe uma certa rixa entre Devs e DBAs. Isso ocorre, pois frequentemente as aplicações que são desenvolvidas em “desacordo com as boas práticas” (para não falar coisa pior) acabam consumindo recursos demasiados do banco de dados e isso prejudica o trabalho do DBA, cujo o principal objetivo é zelar pela integridade, segurança, administração, performance e otimização da base de dados!

6º – Infraestrutura de TI (Linux, Microsoft)

| Os 13 conhecimentos essenciais a um programador de sucesso!

OK, saber infraestrutura não é obrigatório, principalmente se você possui foco na área de front-end. Porém, se você é do back-end, ter esse conhecimento pode te elevar a um outro patamar na área de desenvolvimento. A sua valorização profissional será imediata.

Porque isso?

Historicamente, a área de infraestrutura de TI e a área de desenvolvimento de software nunca se deram muito bem (antes o DBA, agora o cara da infra…). Grosseiramente, o problema consistia no seguinte:

A área de desenvolvimento se preocupava apenas com o desenvolvimento da aplicação. Contudo, no momento que esta aplicação era entregue para a equipe responsável por colocar o software em produção, o software apresentava crashs e bugs ao reproduzir a aplicação no ambiente de produção. Em outras palavras, durante o desenvolvimento, a aplicação funcionava (Dev); no ambiente de produção (Ops), não. Isto ocorre quando a área de desenvolvimento não cria a aplicação de acordo com a infraestrutura estabelecida naquela determinada organização. Em outras palavras, nesse caso, a área de infra e a área de desenvolvimento não são compatíveis e isso é um problema gigantesco!

A partir desse problema comum nas organizações, surgiu o DevOps. Um profissional, uma equipe ou até uma nova cultura na empresa. responsável por realizar a ligação entre a área de desenvolvimento (DEV) com a área de infraestrutura (OPS). Evitando, ou minimizando, os problemas citados acima.

Como ser DevOps?

Claro, chegar no nível de expertise suficiente para fazer parte de uma equipe ou empresa que use as boas práticas DevOps é um desafio e tanto. Você precisará saber muito sobre infraestrutura de TI e sistemas, como Linux e Microsoft. E, além disso, precisará dominar a área de desenvolvimento. Se você curtiu a ideia. Tá ai uma sugestão interessante de rumo para dar para a sua carreira. Contudo, você precisa ser paciente e traçar um plano de longo prazo, pois ninguém vira um DevOps da noite para o dia. Será necessário muito estudo e prática.

Se você já é da área de desenvolvimento, sugiro que você comece os seus estudos com o Linux (Programadores/ Desenvolvedores que sabem Linux são mais valorizados, de acordo com o relatório da Linux Foundation). Caso você seja da área de Infra, faça o caminho contrário, procure estudar sobre desenvolvimento. Nesse caso, esse post já te proporciona um guia e tanto! Após você ter conhecimentos avançados sobre ambas as áreas, avance seus estudos! Busque cursos e informações sobre Integração Contínua, técnicas e ferramentas DevOps.

7º – Visão sistêmica

A visão sistêmica ou pensamento sistêmico é a capacidade de compreender o todo em um objeto de estudo, entendendo suas ligações e interferências no sistema em que ele habita. Por exemplo: não é possível avaliar uma empresa, suas dinâmicas e capacidades analisando somente um setor. É preciso compreender que a conexão entre os setores e as trocas que as pessoas fazem entre eles também influenciam no resultado final da empresa.

A visão sistêmica ajudará muito no entendimento das linguagens de programação e na construção de programas, pois ajudará a arquitetar uma solução sob a ótica de uma amplitude maior do sistema, prevendo problemas que, sem essa visão, seriam deixados de lado. Além disso, ajuda a entender como funciona um sistema e como os problemas para ele devem ser resolvidos.

Resumindo, quanto mais abrangente for a sua visão com relação a um problema ou necessidade de software, melhor será o seu software.

[easy-tweet tweet=”Quanto mais abrangente for a sua visão com relação a uma necessidade, melhor será o seu software.” user=”BecodeTT” hashtags=”SouDev” template=”light”]

8º – Versionamento e Git

O Git revolucionou a forma como desenvolvemos softwares. Hoje, saber utilizar o Git ou qualquer outro sistema de versionamento de software, é uma habilidade extremamente bem-vinda no portfólio de qualquer programador.

O que é versionamento/controle de versão?

Basicamente, controle de versão é um sistema que registra as mudanças realizadas em um arquivo ou conjunto de arquivos ao longo do tempo. Com isso, você pode recuperar versões específicas de um determinado arquivo (ou software inteiro) sempre que necessário. Para um desenvolvedor isso é extremamente útil!

Digamos que você acaba de lançar uma nova versão do seu app, contudo, essa versão não foi bem aceita pelo seu público ou contém muitos bugs. Simples, você pode retroceder a versão anterior. Claro, esse é apenas um exemplo do porquê versionamento é algo tão central na vida de um desenvolvedor experiente. Existem diversas outras situações onde um sistema de controle de versão é fundamental, entre elas, quando você precisa:

Reverter arquivos específicos;  comparar mudanças feitas no decorrer do tempo; ver quem foi o último a modificar algo que pode estar causando problemas; quem introduziu um bug e quando; criar ramificações de desenvolvimento em um mesmo software; criar projetos open source.

Com esse conhecimento e a correta utilização das técnicas de versionamento, o processo de manutenção e atualização de um software é incrivelmente facilitado. Se você tiver interesse, veja esse curso sobre Git na prática.

9º – Testes de Software

| Os 13 conhecimentos essenciais a um programador de sucesso!

Sim, nem todo desenvolvedor gosta disso. Contudo, o desenvolvedor é o principal responsável pela qualidade do seu código. Portanto, aprenda a escrever testes unitários e a validá-los, isso irá facilitar o seu trabalho e o trabalho do testador. A consequência disso será um software muito melhor e um usuário final muito mais satisfeito.

Inclusive, existe uma metodologia de desenvolvimento chamada Test Driven Development – TDD (Desenvolvimento Orientado a Testes, em Português). Esta metodologia coloca o teste de software no foco do desenvolvimento, o que resulta em aplicações com qualidade de software superior.

Resumindo, aprender sobre Testes de Software tem sido fundamental e à medida que você cresce na carreira e, por consequência, busca se destacar na área, testes será cada vez mais essencial. Isso é válido tanto para front-end, quanto para back-end.

10º – UX design, UI e SEO

O usuário está cada vez mais exigente. Portanto, principalmente se você pretende trabalhar com front-end development, estudar sobre User Experience – UX (Experiência do Usuário) e User Interface – UI (Interface do Usuário) será determinante para seu sucesso como profissional. Vivemos em uma época em que a beleza das páginas web conta muito menos do que a experiência que a aplicação irá proporcionar ao usuário.

Imagine um ecommerce em que todas as telas são maravilhosas. Porém, você precisa trocar de tela mais de 5x para finalizar a sua compra e, no final do processo, a página de checkout não funciona. Este ecommerce pode ser lindo e os produtos podem ser demais, contudo, não cumprem com o seu objetivo, “compra/venda”.

Em termos de UX e UI, nesse caso:

  • A UI é terrível, pois a disposição dos elementos na interface não é prática e objetiva;
  • A UX é péssima, pois mesmo passando por todos os processos, o usuário ainda não consegue realizar o seu objetivo que é simplesmente ‘comprar’.

Isso já aconteceu comigo, na Playstation Store, imagine a minha frustração após tentar comprar um jogo, por mais de 5x, tentando com 3 cartões de crédito diferente e nada! Pois é, nível de frustração master!

Mas enfim, voltando ao nosso tópico. Claro que isso é o resumo do resumo do que é UX e UI. Essa área do conhecimento é muito ampla e é utilizada em diversos segmentos do mercado, sendo a TI, uma delas.

…e SEO, por que preciso aprender?

SEO significa “Search Engine Optimization”. Em português, otimização para mecanismos de busca, vulgo Google e Bing. Se for trabalhar com a Web, é muito provável que você lide com SEO. Sendo esse o caso, você precisará estudar as principais práticas e técnicas da área, tendo como objetivo principal: fazer com que a sua aplicação web ou site atinja os melhores posicionamentos no ranking dos mecanismos de busca.

Já adianto que uma dessas ‘técnicas’ é garantir uma excelente experiência de usuário. Sendo assim, podemos dizer que UX e SEO são duas coisas extremamente interligadas. No mais, você precisará saber SEO para conseguir organizar a estrutura do seu site, de acordo com as regras do Google.

Você, como desenvolvedor, possuirá um papel secundário nessa estruturação. Contudo, como é algo que irá acabar respingando na sua área, sempre é bom se adiantar e conhecer pelo menos o mínimo sobre o assunto. Assim você conseguirá se relacionar com as outras áreas envolvidas: Design, Marketing, Negócios e outras!

11º – Gestão de Projetos e Agile

| Os 13 conhecimentos essenciais a um programador de sucesso!

Projetos! Como todo bom desenvolvedor, é muito provável que você vá trabalhar por projetos. Inicialmente como um recurso, posteriormente, como líder de equipe e gestor.

O fato é: você precisa, com o passar do tempo, ir se acostumando com os conceitos, termos e práticas de gerenciamento de projetos, tanto o modelo tradicional, ditado pelo Project Management Institute – PMI ou o modelo de Métodos Ágeis, cultura agilista. À medida que você for aderindo a estas práticas, você verá que a sua produtividade, ou a da sua equipe, irá crescer exponencialmente.

12º – Relacionamento Interpessoal

Relacionamento Interpessoal | Os 13 conhecimentos essenciais a um programador de sucesso!

“Ahh, mas eu escolhi programação justamente porque odeio falar com outras pessoas, meu negócio é máquinas…”

Esquece! Você terá que lidar com pessoas a todo momento. Como falei no início do post, ultimamente, a TI ocupa um papel central nas organizações. Portanto, os profissionais dessa área são cada vez mais importantes e, por isso, participam das decisões. Decisões que são tomadas por pessoas, em conjunto!

Portanto, prepare-se para participar de reuniões, falar com colegas de trabalho e, principalmente, trabalhar em equipe. Não há como evitar. Se necessário, procure treinamento na área. O que é muito comum, existem diversos cursos e workshops que focam literalmente nisso: relacionamento interpessoal, dicção, apresentação, marketing pessoal, etc. E, se você for uma pessoa muito ansiosa e com extrema dificuldade de se relacionar, um psicólogo também é uma alternativa extremamente válida.

Eu acredito que todos deveriam ir a um psicólogo, isso não significa que sejamos loucos, muito pelo contrário!

13º – Inglês

Saber falar inglês é uma habilidade que será útil desde o início de sua carreira. Ela aparece apenas no final da nossa lista por um único motivo: o aprendizado em inglês acaba acontecendo naturalmente com o passar do tempo. Quanto mais você pratica programação, mais vezes você irá se deparar com termos em inglês e textos que você terá que colocar no Google tradutor. Sem contar as explicações que não existem no bom e velho português e, por isso, você terá que recorrer a documentação oficial da tecnologia. Enfim, é um processo natural.

Portanto, não se desespere! Encare isso como um bônus:

“Vou aprender a programar e, na passada, já aprendo inglês!”

Para acelerar o processo de aprendizado, sim, você pode fazer um curso presencial ou online. Ou ainda, mais barato e mais divertido, jogue videogame e veja filmes com legenda em inglês. Pronto, o seu processo de aprendizado será muito mais rápido, só cuidado para não ficar viciado!

Acabou? e agora?

Primeiro de tudo, não se desespere! Para tudo há seu tempo, você não precisa se matricular em 20 novos cursos e querer aprender tudo até ontem. Até porque o nosso corpo humano não é capaz de fazer isso.

Vá com calma, identifique qual é o seu estágio inicial e, a partir disso, trace um plano de carreira e procure estudar estes conhecimentos conforme a sua necessidade, estágio profissional e disponibilidade de tempo e financeira.

Para facilitar a sua vida, nesse post, coloquei os conhecimentos mais essenciais no inicio do texto. Portanto, se você está iniciando nessa área, comece por eles. Entretanto, lembre sempre que na TI tudo é relativo e dependente da especialização que você desejar seguir dentro da área de desenvolvimento: Front-end, Back-end, Mobile, Full-stack, DevOps, Games e entre outros.

Uma vez decidida a área de atuação, criar um plano de carreira em função desse segmento é algo extremamente útil e válido, mesmo que seja algo documentado apenas na sua cabeça. Veja, nesse post, algumas dicas para você montar um plano de carreira vencedor para a área de TI.

No mais, não é uma tarefa fácil, sei disso. Contudo, tenho certeza que se você conseguir atingir todas as habilidades listadas acima, será um profissional extremamente valorizado e preparado para o mercado de trabalho e suas oportunidades. Boa sorte nessa trajetória!

Espero que você tenha gostado do post! Qualquer sugestão, comentário ou crítica, iremos adorar ouvir a sua opinião nos comentários abaixo, abraços e até a próxima!

Erick Scudero

Escrito por Erick Scudero

Especialista em Marketing Digital e apaixonado por tudo que envolve o universo de tecnologia e comunicação. Durante sua jornada na terra dos cangurus (Austrália), atuou em diversos projetos prestando consultoria em questões de UX, SEO, Marketing Digital e modelos de negócio com foco em startups. É cofundador da Becode, da M2up e instrutor de cursos presenciais na TargetTrust.

[QUIZ] Teste de HTML, CSS e JavaScript

[QUIZ] Teste de HTML, CSS e JavaScript

A trajetória de um Desenvolvedor Mobile: tudo que você precisa saber!

A trajetória de um Desenvolvedor Mobile: tudo que você precisa saber!