6 habilidades não técnicas que todo desenvolvedor de software precisa

Veja também:Habilidades interpessoais

Os desenvolvedores de software estão governando o mundo. Tudo bem, pode não ser tão dramático, mas o fato é que o desenvolvimento de software se tornou um dos campos de maior impacto.

Quase todos os produtos ou serviços que usamos diariamente (exceto as exceções óbvias) têm uma equipe de desenvolvedores de software por trás deles. É também um trabalho estimulante, onde as ideias são transformadas em realidade e onde se pode realmente fazer a diferença.

Do ponto de vista de ganhar a vida, o desenvolvimento de software é igualmente interessante, com odemanda superando substancialmente a oferta. Definitivamente, uma queda na demanda também não ocorre em um futuro previsível.

Embora as habilidades técnicas sejam essenciais para qualquer desenvolvedor de software que deseje fazer isso no campo, as habilidades não técnicas podem ser tão importantes. Muitas pessoas discordarão, mas, em certas situações, essas habilidades não técnicas podem até se tornar mais importantes do que as habilidades técnicas básicas.


Então, de quais habilidades não técnicas estamos falando exatamente?

Desenvolvedores de habilidades simples

Habilidades para resolver problemas

Quando você conversa com desenvolvedores de software veteranos, eles geralmente resumem todo o desenvolvimento de software em uma palavra (ou duas, dependendo de como você a soletra) - resolução de problemas.

Ou seja, quando você reduz ao básico, o desenvolvimento de software é pura solução de problemas.

No nível macro, cada pedaço de software é uma solução para um problema que as pessoas têm, mesmo quando elas não sabem que o têm. No nível micro, desenvolver software consiste em fazer inúmeras pequenas coisas que podem ter nomes diferentes, mas que são apenas problemas que requerem soluções simples e elegantes.

Infelizmente, nem todas as pessoas que trabalham com desenvolvimento de software entendem isso e muitas delas não trabalham em seushabilidades para resolver problemas, como um resultado.

Eles entendem mal o problema e acabam criando outros. Eles se apegam a práticas antigas porque trabalharam no passado, apesar do fato de a natureza do problema ser totalmente diferente. Eles perdem dias e semanas em algo que poderia ter levado algumas horas se eles o abordassem da maneira certa.

Os exemplos são infinitos.

Não tem que ser assim. A resolução de problemas é uma habilidade que pode ser aprendida e aprimorada ativamente e qualquer pessoa que queira fazer desenvolvimento de software deve dedicar tempo a isso.

Aprendendo habilidades

O desenvolvimento de software muda em uma taxa insanamente rápida, especialmente se você compará-lo com alguns outros campos. Tecnologias e estruturas vêm e vão, novas plataformas e dispositivos são introduzidos e os tradicionais são descartados.

Freqüentemente, isso acontece no meio do desenvolvimento de um software específico.

O que isso significa é que nenhum desenvolvedor de software pode aprender tudo o que existe sobre seu setor e considerá-lo concluído. Em outras palavras, qualquer desenvolvedor de software que se preze precisará dedicar uma quantidade significativa de tempo para aprender sobre os desenvolvimentos mais recentes na área.

É aqui que se estáaprendendo habilidadesrealmente fará a diferença.

Vamos imaginar dois desenvolvedores de software que são absolutamente iguais em todos os aspectos - educação, experiência, habilidades de codificação atuais, etc. A única diferença é queDesenvolvedor Atem ótimas habilidades de aprendizado eDesenvolvedor Btem habilidades de aprendizado menos do que estelares.

É desenvolvida uma nova estrutura para o desenvolvimento de aplicativos, absolutamente superior a tudo o que veio antes (isso não acontece na vida real, aliás) e, de repente, todos estão trabalhando nela.

LevaDesenvolvedor Adois meses para dominar a nova estrutura enquantoDesenvolvedor Bestá lutando com isso seis meses depois.

De repente, nossos dois desenvolvedores de software antes idênticos estão em mundos diferentes. A única razão -Desenvolvedor Atinha habilidades de aprendizagem superiores.

No mundo real, não se resume a uma única estrutura. O desenvolvimento de software envolve aprender e adotar novas práticas o tempo todo. É por isso que é absolutamente essencial que os desenvolvedores de software trabalhem em suas habilidades de aprendizagem.

Habilidades de trabalho em grupo

Muito poucos desenvolvedores de software trabalham sozinhos em projetos. Claro, alguns projetos podem começar como operações de uma pessoa, mas na grande maioria dos casos, o número da equipe de produto aumentará em breve.

Na maioria das vezes, os desenvolvedores de software trabalham em equipes.

No desenvolvimento de software moderno, especialmente se estivermos falando de desenvolvimento de software Agile (falaremos disso mais tarde), a capacidade da equipe de colaborar bem é muitas vezes o fator crucial para que o software seja concluído a tempo, com as especificações exigidas, e dentro do orçamento.

Uma boa colaboração em equipe garante que as pessoas estejam trabalhando naquilo em que deveriam estar trabalhando, que todos se sintam confortáveis ​​para pedir ajuda (e a recebam), que os problemas sejam percebidos e resolvidos desde o início, que ninguém se sinta sobrecarregado e assim por diante.

Nem todo mundo nasce como um verdadeiro jogador de equipe e muitas pessoas lutam para realmente adotar otrabalho em equipementalidade. O bom é que essa é outra habilidade que pode ser aprendida e é algo que todos os desenvolvedores de software devem investigar.

Habilidades de liderança

O desenvolvimento de software é uma área em que é possível avançar com relativa rapidez. Não leva décadas para alguém se tornar um desenvolvedor de software sênior e ser colocado em uma posição onde liderará uma equipe.

Na verdade, é prática comum (pelo menos em boas empresas / equipes de desenvolvimento de software) que os desenvolvedores sejam mentores de pessoas com menos experiência, mesmo quando eles próprios não são muito experientes.

Isso significa que as pessoas precisam desenvolver suas habilidades de liderança mais cedo no desenvolvimento de software do que na maioria dos outros setores. A necessidade disso é ainda mais exacerbada pelo fato de que a realidade do desenvolvimento de software costuma ser bastante agitada e uma boa liderança pode realmente fazer a diferença.

Deve ser apontado, no entanto, que a liderança no desenvolvimento de software tende a ser diferente da liderança em alguns outros setores (mais uma vez,especialmente no desenvolvimento ágil de software) No desenvolvimento de software, a liderança é menos autoritária e prescritiva do que em outros campos, com as pessoas em funções de “liderança” geralmente sendo figuras de apoio e mentor.

Dito isso, alguns clássicoshabilidades de liderançasempre será bem vindo.

Habilidades ágeis

Desde asua “padronização”em 2001, o desenvolvimento ágil de software já percorreu um longo caminho e, hoje, a maioria dos projetos de desenvolvimento de software é feita usando um dosas muitas estruturas / métodos / abordagens Agile, ou uma combinação de poucos.

O desenvolvimento ágil de software enfatiza lançamentos frequentes de software funcional, redução na documentação, auto-organização de equipes, maior colaboração, comunicação aprimorada com o cliente e uma série de outras idéias e práticas destinadas a entregar um software melhor.

A maioria das empresas não deixará de ser um bom desenvolvedor de software só porque não tem conhecimento ou experiência em Agile. Certos princípios básicos podem ser adotados de forma relativamente rápida e fácil, com o resto da aclimatação acontecendo ao longo do tempo.

Dito isso, aprimorar as habilidades Agile de uma pessoa pode definitivamente tornar um desenvolvedor de software mais adequado ao mundo moderno do desenvolvimento de software. Além disso, os valores e ideias do Agile podem ajudar um desenvolvedor a se tornar melhor no que faz, independentemente de sua situação de trabalho atual.

A boa notícia é que não há escassez de recursos quando se trata de desenvolvimento de software Agile. Por um lado, há uma série deÁgileBlogs Scrumonde se pode encontrar um tesouro de conhecimento teórico e prático. Para desenvolvedores que gostam de uma abordagem mais prática,ferramentas Scrum gratuitas modernaspode ser uma ótima maneira de aprender na prática. Existem também cursos e organizações que fornecem certificações formais.

Boa empatia à moda antiga

Ao falar sobre desenvolvimento de software,empatiapode não parecer uma habilidade particularmente importante de se ter. No entanto, quando você realmente começa a pensar sobre isso, percebe que pode fazer a diferença entre um desenvolvedor de software decente e um desenvolvedor realmente excelente.

Por um lado, um desenvolvedor de software precisa ser capaz de se colocar no lugar de seus (futuros) usuários. Sem isso, um software desenvolvido com perfeição pode facilmente falhar simplesmente porque ninguém precisa dele, ou, pelo menos, ninguém precisa dele dessa forma.

Infelizmente, mesmo os desenvolvedores que não sentem que são muito orgulhosos ou míopes muitas vezes são superados por seus preconceitos subconscientes e crenças sobre o que as pessoas querem.

Além disso, os desenvolvedores de software precisam ter empatia pelas pessoas que trabalharão em seu software no futuro. Às vezes, um desenvolvedor terá que escolher entre os dois:

  • Concluir um novo recurso (que atende aos requisitos mais básicos) em trinta minutos e criar um pesadelo absoluto para as pessoas que irão construí-lo ou mantê-lo no futuro (tornando-se também alvo de inúmeras maldições futuras e bonecos de vodu no processo) .
  • Passar um dia inteiro no recurso em questão, escrevendo um código limpo e sustentável que colocará um sorriso no rosto de alguém dois anos depois.

Embora em ambos os casos o recurso seja funcional, qualquer pessoa na indústria de desenvolvimento de software dirá que a segunda opção é a única ética.

É tudo uma questão de pensar nas outras pessoas também.




Palavra de Encerramento

Apesar do que muitas pessoas pensam, é preciso mais do que apenas ser capaz de codificar rapidamente para se tornar um grande desenvolvedor de software. Envolve muitas habilidades e investir tempo e esforço no desenvolvimento dessas habilidades faz muito sentido.


Continua a:
Tomando uma decisão
Habilidades de desenvolvimento pessoal