0

Carreira – Competências do desenvolvedor(a)

#Desperte o potencial
Rosemeire Deconti
Rosemeire Deconti

Competências do desenvolvedor(a)

Estou retomando a carreira de desenvolvimento e não tenho certeza de qual o nível de programação a que pertenço e nem mesmo o que o mercado procura.


Então pesquisei sobre os conhecimentos essenciais para ser uma desenvolvedora. Também utilizei as dicas das mentorias da Talent Match Week. Vou manter este artigo o máximo atualizado!


Acredito que estas informações também são importantes para nossa comunidade e por isso compartilho!


Como de costume ao final deste artigo estão as referências que utilizei para criar este texto.


Bons estudos e persistência para que o sucesso ser alcançado!


Neste link vocês encontram todos os artigos que publiquei na Digital Innovation One


Digital Innovation One - Lista de artigos publicados na DIO



Introdução

Quais são os conhecimentos essenciais que todo desenvolvedor precisa ter para ser bem-sucedido na carreira?


A seguir estão listados estes conhecimentos necessários, o que devemos dominar (não apenas conhecer) e atitudes inerentes a esta carreira tão desafiadora e maravilhosa!


Em cada um dos tópicos deve-se levar em consideração seu plano de carreira seja ele para Front-End, Back-End ou Full Stack.


Atitudes de um desenvolvedor profissional


Investir no relacionamento interpessoal


Você terá que lidar com pessoas a todo momento. Profissionais de TI participam das decisões e 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.


Ter foco e persistência


Trabalhar com programação requer profissionais focados e persistentes. É preciso ter gosto pelos estudos para conhecer diferentes softwares, plataformas e aparelhos tecnológicos.


Também, ter persistência no momento de escolher e testar as possibilidades para ter o resultado desejado.


Atualização constante


Com a expansão das esteja sempre ligado nas novidades e tendências do mercado. O ramo da tecnologia muda todos os dias, por isso atualize-se sempre e leia sobre essas mudanças.


A internet facilita muito a sua vida: é possível desde acessar livros e artigos até participar de conversas em fóruns e grupos para trocar ideias. Compartilhar artigos e treinamentos também ajudam muito.


Saber analisar e resolver problemas


Um desenvolvedor que sabe resolver os problemas com agilidade será um profissional de destaque no mercado de trabalho. É comum erros acontecerem, por isso tenha paciência e um planejamento para resolver os casos. Analise a situação e encontre um caminho para a solução. Dica para resolver um problema:

  •  Entendimento: conheça e entenda o problema antes de agir.
  •  Planejamento: organize-se e analise o problema que deve ser resolvido.
  •  Divisão: tenha uma visão ampla do problema, por isso divida-o em pequenas e diferentes partes. Assim, o seu cérebro raciocina melhor e resolve parte por parte, até ter a solução completa.
  •  Execução: tudo preparado para executar as suas ideias e conhecimentos com sucesso.


Saber se comunicar (tanto verbal quanto escrita)


Os desenvolvedores devem desenvolver a habilidade de comunicação para facilitar a compreensão das complexidades com as quais eles trabalham. Assim, quando você conversa com um cliente, ele sente mais confiança no seu trabalho. Seja claro quando explicar como funciona um software, qual o problema e a solução pela qual você optou.


Ter 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. A visão sistêmica 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.


Colocar em prática o conhecimento adquirido


Ser um desenvolvedor não é uma tarefa fácil, pois tem muito conteúdo para absorver no mundo da programação. Para que você consiga absorver o máximo de conteúdo, é indicado a prática.

Crie diversos programas e projetos diferentes, assim você vai se deparar com muitos problemas e terá que buscar soluções, assim criando seu próprio ambiente para se tornar experiente.


Conhecer nunca é demais!


Conhecimentos de hardware e software


Saber utilizar um computador, seu sistema operacional, softwares e hardwares que o compõem é extremamente essencial. O computador é a ferramenta de trabalho.


Conhecimentos sobre infraestrutura de TI


Caso seu objetivo seja ser Front-end este conhecimento é opcional. Fora disso é obrigatório. Entenda sobre Windows e Linux.


Conhecimentos sobre User Experience (UX) e User Interface (UI)


Usuários estão cada vez mais exigentes, portanto, desenvolvedor Front-end deve estudar sobre UX (Experiência do Usuário) e User Interface – UI (Interface do Usuário) para ter mais chances de sucesso como profissional. A beleza das páginas WEB conta muito menos do que a experiência que a aplicação irá proporcionar ao usuário.


Conhecimentos sobre Search Engine Optimization (SEO)


Isto é a otimização para mecanismos de busca (ex: Google e Bing). Estudar as principais práticas e técnicas da área, tendo como objetivo principal de fazer com que a sua aplicação WEB ou site atinja os melhores posicionamentos no ranking dos mecanismos de busca.


Conhecimentos sobre rede


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.


Conhecimentos sobre mensageria


Com o modelo de micros serviços o tema de mensageria deve ser de conhecimento. Este conceito define que sistemas distribuídos, possam se comunicar por meio de troca de mensagens (evento), sendo estas mensagens “gerenciadas” por um Message Broker (servidor/módulo de mensagens).”


Dominar para entregar com excelência!


Dominar lógica de programação


Obrigatório ter conhecimento para programar de uma forma universal. Depois de aprender lógica de programação e algoritmos, os mesmos conhecimentos serão aplicados para 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.


Dominar a orientação a objetos


Orientação a objetos é simplesmente o paradigma de programação mais utilizado pelas linguagens mundo a fora, então, obrigatório ter este conhecimento. É muito aconselhável que você tenha o conhecimento aprofundado nesse padrão, pois será a base de qualquer projeto que você for desenvolver.


Dominar os princípios S.O.L.I.D.


O S.O.L.I.D é um acrônimo que representa cinco princípios da programação orientada a objetos – então é obrigatório que sejam conhecidos e aplicados estes princípios visto que orientação a objetos é a mais utilizada pelas linguagens mundo afora.


Dominar uma linguagem de programação


Para Front-end o domínio obrigatório das linguagens de marcação/programação: HTML, CSS, JQuery e JavaScript. No caso do Javascript é importante conhecer as atualizações do ES6.


Para Back-end o domínio obrigatório de pelo menos uma linguagem e estrutura de programação de back-end.


Para Full Stack ter domínio de mais de uma linguagem é aconselhável.


Existem diversas linguagens, 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.


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 outras.


Dominar o código limpo


Um código limpo é certeza de uma melhora significativa na produtividade de maneira que outro programador, ao pegar o que você já fez, saiba exatamente sobre tudo o que está sendo feito e quais são os pontos importantes.


Para projetos grandes e que envolvem muitas pessoas na construção acaba sendo uma estratégia muito indicada, já que é preciso ter uma coerência em todas as partes, conseguindo organizar todas as informações de forma mais clara.


Dominar padrões de projetos (Design Patterns)


Design Patterns nada mais é do que, melhores práticas para criar um software. Essas melhores práticas são padrões de desenvolvimento que foram criados ao longo do tempo por diversas pessoas para poder solucionar um problema recorrente.


O uso de padrões promove a capacidade de reutilização de código, assim resultando em um código mais robusto e sustentável auxiliando na velocidade do desenvolvimento e consequentemente no preço final da aplicação.


Dominar um banco de dados


Caso seu objetivo seja ser Front-end este conhecimento é opcional. Fora disso é obrigatório. Importante estudar:

  • Como funciona um servidor
  • Como funciona um SGBD (Sistema de gerenciamento de Banco de Dados),
  • Aprender sobre modelagem, funcionamento e desenvolvimento de - uma base de dados.
  • Conhecer os principais comandos para manipulação dos dados.
  • Estude tanto sobre banco de dados relacionais (RDBMS), quanto não relacionais (NoSQL).


Dominar IDEs (Ambiente de Desenvolvimento Integrado)


São ferramentas indispensáveis no ambiente de trabalho. 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 IntelliJ vem se destacando no cenário.


É importante aprender os meandros de seu IDE, atalhos, configurações, customizações, instalação. Para isso, às vezes uma leitura atenta do HELP ou do manual já basta para se aperfeiçoar.


Dominar versionamento e Git


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. As equipes trabalham com versionamento.


Dominar os testes de software


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.


Utilize a metodologia de desenvolvimento chamada Test Driven Development (TDD - Desenvolvimento Orientado a Testes). Esta metodologia coloca o teste de software no foco do desenvolvimento, o que resulta em aplicações com qualidade de software superior.


Dominar Containers


Uma das mais significativas revoluções na forma de se desenvolver nos últimos cinco anos. Devemos 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.


Dominar APIs (Application Program Interface)


Interface de Programação de Aplicações é utilizada no desenvolvimento de qualquer software. A grande função é fazer com que os sistemas consigam conversar e interagir entre si, deixando mais seguro a manipulação e acesso as informações.


Basicamente cria uma ponte para os softwares interagirem entre eles. Junto do desenvolvimento e utilização de APIs temos a utilização de ferramentas como Postman e Swagger que dão suporte ao desenvolvimento e documentação.

 

Dominar gestão de projetos e Agile


Como desenvolvedor você vai trabalhar por projetos. Inicialmente como um recurso, posteriormente, como líder de equipe e gestor.


Estude os conceitos e práticas de gerenciamento de projetos, tanto o modelo tradicional, ditado pelo Project Management Institute (PMI) ou o modelo de Métodos Ágeis (Scrum e Kanban)


Dominar outro idioma (inglês)


Saber falar inglês é uma habilidade que será útil desde o início de sua carreira. Para acelerar o processo de aprendizado você pode fazer um curso presencial ou online. Jogar videogame e ver filmes com legenda em inglês aceleram o processo de aprendizado.


Dominar alguma plataforma de nuvem


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. 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.


Conclusão


Com estas informações e um plano de carreira podemos saber qual é o nosso nível atual de conhecimento.


É importante ser honesto ao analisar cada item para que tenhamos um plano de estudo e assim alcançarmos um processo sustentável.


Referências


Os 13 conhecimentos essenciais a um programador de sucesso! (becode.com.br)

7 habilidades que todo programador deve ter (sos.com.br)

Dez habilidades essenciais para desenvolvedores em 2020 | Código Fonte (codigofonte.com.br)

O que não pode faltar no currículo dos programadores de sucesso | Exame

Desenvolvedor back-end: 14 skills dos melhores devs - Idealogic

10 Passos para ser um programador JAVA (cursofacilonline.com)

Código Limpo: Dicas Práticas Para Melhorar a Escrita e Leitura do Seu Código (brasilcode.com.br)

API: Entenda a Interface de Programação de Aplicação (brasilcode.com.br)

0
12

Comentários (4)

0
Rosemeire Deconti

Rosemeire Deconti

20/05/2021 09:31

Ideilson! Muito grata por suas palavras! Me motivam a continuar! Bons estudos e sucesso!

1
I

Ideilson Cisne

20/05/2021 01:23

Excelente artigo, um dos mais completos que já li.

0
Rosemeire Deconti

Rosemeire Deconti

19/05/2021 20:42

Grata Francisco! Bons estudos e muito sucesso para você!

1
Francisco Souza

Francisco Souza

19/05/2021 20:39

Parabéns Rosemeire pelo artigo. Muito bom, show.

Apaixonada por tecnologia e informação. Na área desde 1.984 e sem previsão de parada.

Brasil