Somos sua nova área de tecnologia

O que separa os melhores desenvolvedores da multidão: 10 traços críticos.

Inscreva-se em nossa Newsletter!

  • Trabalhamos duro para melhorar nossas habilidades técnicas e comportamentais. Mas nossas características de personalidade, nossa mentalidade – nós as damos por certo. Uma parte inata e fixa de quem somos. E assim, deixamos que elas funcionem no piloto automático.
  • Esse modo de pensar é prejudicial. Não só a sua mentalidade é crítica para uma carreira bem-sucedida em desenvolvimento de software (talvez até mais do que suas habilidades), mas também está sob seu controle.
  • Verdadeiros desenvolvedores sêniores reconhecem que as características de personalidade são maleáveis, têm consciência de sua mentalidade e trabalham deliberadamente nela. Esta é a superpotência que os diferencia da multidão e acelera sua carreira.
  • Neste post, discutirei as 10 características mais críticas de um desenvolvedor de sucesso, por que elas são importantes e compartilharei algumas dicas sobre como você pode moldá-las.

3 Coisas que Você Precisa para Ter Sucesso como Desenvolvedor de Software.

O desenvolvimento profissional de software é uma disciplina complexa que requer um conjunto diversificado de habilidades para ter sucesso. Podemos agrupá-los em três categorias principais:

Habilidades Técnicas.

Este é o grupo mais óbvio. Para ser um desenvolvedor de sucesso, você precisa ser bom em sua profissão: linguagens de programação e frameworks, princípios de código limpo, arquitetura, testes, depuração, etc. Você também precisa ser hábil com suas ferramentas: controle de versão, linha de comando e IDE.

No entanto, apenas habilidades técnicas não te levarão longe em uma configuração profissional e em equipe. É por isso que você também precisa de habilidades interpessoais.

Habilidades Interpessoais.

Para poder trabalhar em grandes projetos comerciais, você precisa de um conjunto sólido de habilidades comportamentais: trabalho em equipe, comunicação, gerenciamento de projetos e planejamento, trabalho remoto, auto-organização, aprendizado, produtividade pessoal e similares.

Muitos de nós acham essas habilidades menos divertidas do que as técnicas, e assim, muitas vezes negligenciamos elas – então elas já podem separar desenvolvedores sólidos e profissionais da multidão. Mas pelo menos reconhecemos elas.

Existe também uma terceira categoria, porém, que é igualmente importante, mas voa abaixo do radar de quase todos, mesmo dos desenvolvedores bons.

Mentalidade

Mentalidade é um pouco semelhante a habilidades suaves, mas as “habilidades” que ela é composta são mais fundamentais e características básicas: curiosidade, paciência, empatia, persistência, adaptabilidade, etc.

Em algum nível, sabemos que essas características são importantes para uma carreira bem-sucedida de desenvolvimento de software. Mas, porque elas parecem ser parte inata e fixa da nossa personalidade, não tentamos aprendê-las de forma deliberada da mesma forma que aprendemos técnicas de gerenciamento de projetos ou produtividade pessoal.

Isso nos deixa cegos para uma grande e importante parte de nossas habilidades e pode prejudicar muito nossa evolução.

[Para uma perspectiva ainda mais abrangente sobre como avançar na sua carreira como desenvolvedor profissional, confira meu “Guia Definitivo para se Tornar um VERDADEIRO Desenvolvedor Sênior” no GitHub]

Por que ser cego para sua mentalidade pode colocar em risco a sua carreira

O desenvolvimento de software é um campo complexo, às vezes frustrante e loucamente rápido. Aprender, crescer e permanecer relevante como desenvolvedor (e não se queimar no processo) requer um mix específico de traços de caráter.

Ao mesmo tempo, é um jogo 100% de equipe. Hackers solitários não têm lugar no desenvolvimento de software profissional, não importa quão bons sejam tecnicamente. E funcionar bem em uma equipe requer outro conjunto de características, aparentemente opostas.

Mentalidade é algo diferente que habilidades. Entender os princípios de desenvolvimento ágil não é o mesmo que ser adaptável e aberto a mudanças frequentes.

E saber as técnicas de depuração não é o mesmo que ter a curiosidade e persistência para realmente desfrutar de perseguir o problema por várias horas sem se cansar ou desanimar.

Mas, enquanto essas características podem parecer fixas e inatas à nossa personalidade, elas são igualmente aprendíveis como habilidades.

Sem entender quais características são cruciais para um programador e aprimorá-las deliberadamente ao longo do tempo, você nunca alcançará seu potencial máximo. Os verdadeiros desenvolvedores sêniores sabem disso, são auto-conscientes de sua mentalidade e trabalham continuamente para melhorá-la.

Esta é a diferença, o superpoder que separa os melhores desenvolvedores da multidão.

Ok, mas quais características são as mais importantes? Vamos mergulhar um pouco mais nos detalhes.

10 Traços de um Verdadeiro Desenvolvedor Sênior

1. Curiosidade

Projetar e codificar é aprender. Depuração é aprendizado. Testar é aprender. Se eu tivesse que resumir em uma frase o que é desenvolvimento de software, diria que é sobre aprender. Você precisa ficar atualizado com tecnologias e processos de desenvolvimento de software em constante evolução.

Você precisa aprender os detalhes profundos de domínios de negócios complexos (vários ao longo de sua carreira). Analisar e esclarecer os requisitos é aprender. Pesquisa é aprender. Projetar e codificar é aprender. Depurar é aprender. Testar é aprender.

Otimização de desempenho e depuração – em outras palavras, mergulhando profundamente nos mecanismos internos do código – é também uma forma de aprendizado.

Desenvolvimento de software também é sobre trabalhar com pessoas (e para pessoas).

Você trabalhará em equipes multidisciplinares com um conjunto diversificado de pessoas de diferentes especializações e origens (hoje em dia, na era do trabalho remoto, provavelmente de vários países e culturas).

Você terá que entender o “negócio”. Você terá que entender e resolver os problemas e as dores dos usuários.

Sem uma boa dose de curiosidade, não só você será menos eficaz em tudo isso, mas também se cansará rapidamente.

2. Afinidade com Resolução de Problemas

Desenvolvimento de software é um quebra-cabeça gigante – um fluxo infinito de problemas para serem resolvidos. A razão pela qual você é contratado como desenvolvedor é para resolver os problemas da sua empresa e dos seus clientes.

Para isso, você precisa resolver problemas organizacionais (como funcionar como um time, como organizar seu trabalho, quais processos usar) e problemas técnicos (lógica, arquitetura, desempenho, etc.).

Esses problemas consistem em problemas ainda menores e aninhados, até problemas atômicos, como como projetar e nomear uma função ou teste de unidade específicos.

Se você não gosta de resolver quebra-cabeças, se você não tem o talento para desenvolver e desenrolar problemas, sua carreira de desenvolvimento de software será um desafio.

3. Paciência

Tornar-se um verdadeiro desenvolvedor sênior requer anos de prática deliberada. Você também experimentará muitos contratempos ao longo do caminho. Desenvolver sua carreira é gratificante, mas também um processo lento e às vezes doloroso.

Para alcançar a excelência e chegar ao topo, você deve estar pronto para uma dedicação de toda a vida. E isso exige muita paciência.

A paciência também é crítica para muitas coisas adjacentes ao nosso trabalho: lidar com o suporte técnico, trabalhar com usuários não muito familiarizados com a tecnologia e lidar com a burocracia organizacional. Além disso, é uma ótima ferramenta de solução de problemas.

E você não conseguirá se sustentar trabalhando em uma indústria tão dinâmica e em constante mudança como a tecnologia sem paciência.

4. Grit (Na Quantidade Certa)

O desenvolvimento de software exige muita persistência. Caçar bugs. Decifrar APIs e bibliotecas mal documentadas. Desenrolar códigos legados. Rastrear gargalos de desempenho. Mesmo simplesmente sustentar um foco profundo por períodos prolongados de tempo.

Você vai lutar, falhar, ficar preso e frustrado muitas vezes – não importa o quão experiente você seja. E você precisará de muita força de vontade para passar por isso e não se desgastar.

Mas você também precisa entender qual é a quantidade certa de força de vontade. Qual é o ponto ideal entre bater a cabeça de forma improdutiva por horas e dias vs constantemente interromper sua equipe pedindo ajuda imediatamente quando você encontra até mesmo o menor obstáculo no caminho?

5. Inteligência Emocional

O desenvolvimento de software gira em torno de pessoas e equipes. Você trabalhará muito de perto com seus colegas em um nível individual: programas em par, depuração em conjunto e revisão de seu código.

Você também trabalhará com eles em uma configuração de equipe: brainstorming, planejamento e tomada de decisões em grupo. E essa colaboração é bagunçada: seu trabalho se sobreporá ou entrará em conflito e você terá opiniões diferentes.

Você negociará seu roteiro com a administração. Finalmente, para construir um ótimo produto, você terá que se colocar no lugar dos usuários.

Além disso, todas essas pessoas vêm de diversos backgrounds, tanto técnicos quanto não técnicos. Eles são apaixonados. Eles têm opiniões fortes. Eles podem às vezes ter caracteres difíceis.

E o seu sucesso como desenvolvedor depende de como você consegue construir relacionamentos com eles. Sem alta inteligência emocional, simplesmente será impossível.

6. Capacidade de Manter o Seu Ego Sob Controle

Desenvolvimento de software (e trabalhar em equipe em geral) é um equilíbrio delicado. Por um lado, você é contratado por sua experiência. É esperado que você tenha opiniões fortes e guie pessoas menos experientes tecnologicamente ou mais jovens.

Por outro lado, você trabalhará com colegas de trabalho igualmente experientes e opinativos que desafiarão sua visão de mundo, com quem você terá que tomar decisões em grupo.

Seu ego muitas vezes será ferido no processo. Você deve ser capaz de mantê-lo sob controle, mas sem se retrair e desengajar.

Você deve ser opinativo, mas não fanático. Tenha uma opinião forte, mas segure-a fracamente; esteja aberto a ser convencido de outra forma. Você deve estar pronto para defender sua opinião, mas também saber quando soltá-la, para não ser um arrogante, brilhante e irritante.

Você precisa respeitar a equipe, a empresa e os clientes. Ser capaz de discordar, mas comprometer-se. E aceitar de forma graciosa feedback construtivo (e até mesmo puramente negativo). Caso contrário, você não será capaz de trabalhar efetivamente em equipe.

7. Adaptabilidade

Tudo na desenvolvimento de software está se movendo tão rápido. As tecnologias estão constantemente mudando. Novas metodologias ficam populares. As empresas mudam de direção.

Ao longo de sua carreira, você também mudará projetos, equipes, empresas e domínios de negócios. Mesmo um único projeto é uma atividade constante de inspeção e adaptação (especialmente em abordagens ágeis). E sua equipe também se reorganizará constantemente.

A maioria das pessoas é alérgica à mudança. Mudança é difícil. É desconfortável. É estressante. Ser adaptável e aberto à mudança o destacará imediatamente. Não só permitirá que você suba para o topo da escada de senioridade, mas também permitirá que você fique lá por muito tempo.

8. Confiabilidade

Eu estou repetindo ad nauseam, mas o desenvolvimento de software é um jogo de equipe. Seus colegas, gerente e empresa – todos contam com você para fazer sua parte.

Ninguém jamais o considerará um verdadeiro desenvolvedor sênior – não importa sua experiência técnica – se não puderem confiar em você para cuidar de seu trabalho e cumprir suas promessas sem precisar de microgerenciamento.

Isso não significa que você nunca possa cometer erros. Falhas acontecem. E as melhores empresas as veem como oportunidades de aprendizado valiosas.

Mas para isso acontecer, você precisa ser capaz de pegar uma bola caída, recuperar-se com graça e ser confiável para aprender com seu fracasso e não repeti-lo no futuro.

9. Pragmatismo

Desenvolvimento de software profissional é uma arte de compromissos. Você precisa constantemente comprometer entre velocidade de desenvolvimento e qualidade. Equilibre o novo e promissor com o comprovado e estável.

Ande na linha fina entre sub-e super-engenharia.

Para ter sucesso no desenvolvimento de software profissional, você precisa ser muito pragmático. Você precisa entender que nada é preto e branco, e que nenhum princípio ou padrão se aplica a todas as situações.

Você deve ter grande intuição para fazer compromissos entre diferentes abordagens, tecnologias e soluções; se sentir confortável ao cortar cantos, mas ter bom senso de quanto.

10. Visão Positiva

Sua vida como programador não é toda sol e arco-íris. Você vai encontrar clientes irritantes. Enfrentar prazos apertados. Seu projeto pode ser cancelado. Você pode discordar de sua equipe ou gerenciamento, mas ainda terá que se comprometer e executar.

Você também vai trabalhar com código feio. (Sim, toda base de código tem partes boas e ruins, mesmo nas melhores empresas como o Google.)

Você vai ficar cansado, frustrado e aborrecido.

Se você deixar que a negatividade tome conta, se você começar a criticar e reclamar, não só vai desmotivar a si mesmo, mas também vai matar o moral da sua equipe – o que não vai levar sua carreira muito longe.

Você precisa ter um viés positivo. Ser otimista e alegre. Sempre procure um lado positivo. Seja a pessoa que reúne sua equipe, mata o mau humor e restaura o moral. Isso não só vai te fazer notar e promover, mas também vai tornar sua carreira mais agradável e sustentável.

Bônus: Algumas Dicas de Como Deliberadamente Formar Seu Mindset

Habilidades, obviamente, podem ser treinadas – tanto as habilidades técnicas quanto as suaves. Você pode melhorar na depuração, assim como na comunicação. Mas e quanto a traços aparentemente inatos como curiosidade ou uma visão positiva? Você realmente pode treinar a si mesmo para ser mais otimista ou curioso?

Sim, você pode! Este é um vasto tópico, vale a pena vários livros (“Mindset” de Carol S. Dweck é um ótimo ponto de partida). Mas deixe-me rapidamente compartilhar algumas dicas:

  • Reconheça que sua mentalidade não é fixa e que seus traços são maleáveis.
  • Desenvolva a autoconsciência. Observe como você reage em diferentes situações. Tente entender o que te faz sentir de uma maneira particular (curioso vs entediado, positivo vs mal-humorado, ansioso vs defensivo).
  • Reflita sobre seu comportamento de uma perspectiva de um ou dois dias. Sua opinião era realmente pragmática ou era o seu ego falando? Como você poderia ter agido de forma diferente?
  • Prepare-se com antecedência. Planeje com antecedência como você se comportará da próxima vez em uma situação semelhante e identifique o gatilho certo que o lembrará de seu plano quando chegar a hora.
  • Exponha-se a situações que lhe permitam exercitar e fortalecer os traços desejados. Procure ativamente por essas oportunidades.
  • Concentre-se em um único traço por algum tempo. Isso facilitará a encontrar oportunidades para exercitá-lo e aumentar sua autoconsciência sobre esse traço.
  • Reformule. Seja consciente e deliberado sobre como você se fala. A ideia não é estúpida, é surpreendente. Aquele tremor não é ansiedade, é empolgação. O problema não é frustrante, é interessante.
  • Contrate ajuda. Não tenha medo de pedir feedback ao seu colega ou gerente – ou até mesmo de se tornar o seu “parceiro de responsabilidade” que pegará e apontará seu comportamento indesejado.

Também incentivo você a aprender um pouco sobre viés cognitivos e formação de hábitos. Esta é uma disciplina bem desenvolvida, com um grande corpo de conhecimento, e bastante divertido de explorar.

Ponto-chave

Se você quiser ser um verdadeiro desenvolvedor sênior, precisa ser completo. Você deve ter a mistura certa de habilidades técnicas, habilidades sociais e traços de caráter, e não pode ignorar nenhuma parte deste trio.

Os traços de caráter são a parte mais complicada. A maioria dos desenvolvedores negligencia-os porque eles não são auto-conscientes deles, não sabem quais são importantes ou não acreditam que eles são maleáveis.

Mas se você conseguir superar essa forma falha de pensar – se você puder mudar sua mentalidade – você pode transformá-la em um superpoder que elevará sua carreira e fará com que você realmente se destaque.

Gostou do artigo?

Facebook
LinkedIn
Pinterest
WhatsApp
Picture of Amanda Braga

Amanda Braga

×