paint-brush
O que separa os melhores desenvolvedores da multidão: 10 características críticaspor@trueseniordev
11,911 leituras
11,911 leituras

O que separa os melhores desenvolvedores da multidão: 10 características críticas

por TrueSeniorDev10m2023/05/01
Read on Terminal Reader

Muito longo; Para ler

Trabalhamos duro para melhorar nossas habilidades tecnológicas e interpessoais. Mas consideramos nossos traços de caráter como garantidos - uma parte fixa de quem somos. Essa forma de pensar é prejudicial. Suas características são ainda mais críticas para uma carreira bem-sucedida de desenvolvimento de software do que suas habilidades. E eles estão sob seu controle. Os verdadeiros desenvolvedores seniores reconhecem isso e desenvolvem deliberadamente suas características. Esse é o superpoder que os destaca da multidão e acelera sua carreira.
featured image - O que separa os melhores desenvolvedores da multidão: 10 características críticas
TrueSeniorDev HackerNoon profile picture
  • Trabalhamos duro para melhorar nossas habilidades tecnológicas e interpessoais. Mas nossos traços de caráter, nossa mentalidade - nós tomamos isso como certo. Uma parte fixa e inata de quem somos. E assim, deixamos rodar no piloto automático.


  • Essa forma de pensar é prejudicial. Sua mentalidade não é apenas crítica para uma carreira bem-sucedida de desenvolvimento de software (talvez até mais do que suas habilidades), mas também está sob seu controle.


  • Os verdadeiros desenvolvedores seniores reconhecem que os traços de caráter são maleáveis, são autoconscientes de sua mentalidade e trabalham deliberadamente nisso. Esse é o superpoder que os destaca da multidão e acelera sua carreira.


  • Nesta postagem, 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 de software profissional é 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 no que faz: linguagens e estruturas de programação, princípios de código limpo, arquitetura, teste, depuração e assim por diante. Você também precisa ser habilidoso com suas ferramentas: controle de versão, linha de comando e IDE.


No entanto, habilidades técnicas por si só não o levarão longe em uma configuração profissional baseada em equipe. É por isso que você também precisa de soft skills.

Habilidades interpessoais

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


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


Há também uma terceira categoria, porém, que é igualmente importante, mas passa despercebida por quase todos, até mesmo os bons desenvolvedores.

Mentalidade

A mentalidade é um pouco semelhante às soft skills, mas as "habilidades" que a compõem são características mais fundamentais e essenciais: curiosidade, paciência, empatia, coragem, adaptabilidade e assim por diante.


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


Isso nos torna cegos para uma parte enorme e importante de nosso conjunto de habilidades e pode prejudicar gravemente nossa progressão.


[Para uma perspectiva ainda mais abrangente sobre como avançar em 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 prejudicar sua carreira

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


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


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


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


Mas embora essas características possam parecer fixas e inatas à nossa personalidade, elas também podem ser aprendidas como habilidades.


Sem entender quais características são críticas para um programador e aperfeiçoá-las deliberadamente ao longo do tempo, você nunca atingirá todo o seu potencial. Os verdadeiros desenvolvedores seniores sabem disso, são autoconscientes de sua mentalidade e trabalham continuamente para melhorá-la.


Este é o diferencial, 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 fundo nos detalhes.

10 características de um verdadeiro desenvolvedor sênior

1. Curiosidade

Se eu tivesse que resumir em uma frase o que é desenvolvimento de software, diria que é sobre aprendizado. Você precisa se manter atualizado com tecnologias em constante evolução e processos de desenvolvimento de software.


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


A otimização e depuração de desempenho - em outras palavras, investigar profundamente o funcionamento interno do código - também é um tipo de aprendizado.


O desenvolvimento de software também envolve trabalhar com pessoas (e para pessoas).


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


Você terá que entender de "negócios". Você terá que entender e resolver os pontos problemáticos e problemas do usuário.


Sem uma dose saudável de curiosidade, você não apenas será menos eficaz em todas essas coisas, mas também se esgotará rapidamente.

2. Afinidade para resolução de problemas

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


Para fazer isso, você precisa resolver problemas organizacionais (como funcionar em equipe, como organizar seu trabalho, quais processos usar) e problemas técnicos (lógica, arquitetura, desempenho e assim por diante).


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


Se você não gosta de resolver esses quebra-cabeças, se não tem talento para decifrar e desvendar problemas, sua carreira de desenvolvimento de software será uma luta.

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 a dedicação ao longo da vida. E isso requer muita paciência.


A paciência também é fundamental para muitas coisas adjacentes ao nosso trabalho: lidar com o suporte técnico, trabalhar com usuários que não entendem muito de tecnologia e lidar com a burocracia organizacional. Além disso, é uma grande ajuda para a resolução de problemas.


E você não vai continuar trabalhando em uma indústria tão rápida e em constante mudança como a tecnologia sem paciência.

4. Grit (na quantidade certa)

O desenvolvimento de software requer muita persistência. Caçando insetos. Decifrar APIs e bibliotecas mal documentadas. Desembaraçando o código legado. Rastrear gargalos de desempenho. Mesmo simplesmente mantendo um foco profundo por longos períodos de tempo.


Você vai lutar, falhar, ficar preso e muito frustrado - não importa o quão sênior você seja. E você precisará de muita areia para abrir caminho e não se queimar.


Mas você também precisa entender qual é a quantidade certa de areia. Qual é o ponto ideal entre bater a cabeça contra a parede de forma improdutiva por horas e dias ou interromper constantemente sua equipe solicitando assistência imediatamente quando você encontra o menor obstáculo na estrada?

5. Inteligência Emocional

O desenvolvimento de software gira em torno de pessoas e equipes. Você trabalhará em estreita colaboração com seus colegas em um nível individual: emparelhar programas, depurar juntos e revisar seus códigos.


Você também trabalhará com eles em uma configuração de equipe: brainstorm, planeje e tome decisões como um grupo. E essa colaboração é confusa: seu trabalho se sobrepõe ou entra em conflito e você terá opiniões diferentes.


Você negociará seu roteiro com a gerência. Finalmente, para construir um ótimo produto, você terá que se colocar no lugar de seus usuários.


Além disso, todas essas pessoas vêm de diversas formações, tanto técnicas quanto não técnicas. Eles são apaixonados. Eles têm opiniões fortes. Às vezes, eles podem ter personagens difíceis.


E seu sucesso como desenvolvedor depende de quão bem você pode construir relacionamento com eles. Sem alta inteligência emocional, será simplesmente impossível.

6. Capacidade de manter seu ego sob controle

O desenvolvimento de software (e o trabalho em equipe em geral) é um ato de equilíbrio. Por um lado, você é contratado por sua experiência. Espera-se que você tenha opiniões fortes e que oriente pessoas menos experientes em tecnologia ou mais juniores.


Por outro lado, você trabalhará com colegas de equipe igualmente experientes e opinativos que desafiarão seu ponto de vista e com quem você terá que tomar decisões em grupo.


Seu ego geralmente se machucará no processo. Você deve ser capaz de mantê-lo sob controle - mas sem ser retraído e desengajado.


Você deve ser opinativo, mas não fanático. Tenha um ponto de vista forte, mas mantenha-o fracamente; esteja aberto para ser convencido do contrário. Você deve estar pronto para defender sua opinião, mas também saber quando deixar ir, para não ser um idiota brilhante e condescendente.


Você precisa respeitar a equipe, os negócios e os clientes. Ser capaz de discordar, mas cometer. E graciosamente receba feedback construtivo (e até puramente negativo). Caso contrário, você não conseguirá trabalhar efetivamente em equipe.

7. Adaptabilidade

Tudo no desenvolvimento de software está se movendo tão rápido. As tecnologias estão em constante mudança. Novas metodologias se popularizam. As empresas giram.


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


A maioria das pessoas é alérgica a mudanças. A mudança é difícil. É desconfortável. É estressante. Ser adaptável e aberto a mudanças irá instantaneamente diferenciá-lo. Isso não apenas permitirá que você suba até o topo da escada de antiguidade, mas também permitirá que você permaneça lá por muito tempo.

8. Confiabilidade

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


Ninguém jamais o considerará um verdadeiro desenvolvedor sênior - não importa sua experiência em tecnologia - se não puder confiar em você para cuidar de seu trabalho e cumprir suas promessas sem precisar ser microgerenciado.


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


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

9. Pragmatismo

O desenvolvimento de software profissional é uma arte de compensações. Você precisa constantemente se comprometer entre a velocidade e a qualidade do desenvolvimento. Equilibre o novo e promissor com o comprovado e estável.


Percorra uma linha tênue entre subengenharia e superengenharia.


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


Você deve ter grande intuição para fazer compensações entre diferentes abordagens, tecnologias e soluções; sinta-se confortável cortando cantos, mas tenha uma boa noção de quanto.

10. Perspectivas Positivas

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


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


Você ficará cansado, frustrado e chateado.


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


Você precisa ser tendencioso para o positivo. Seja otimista e alegre. Sempre procure um forro de prata. Seja a pessoa que reúne sua equipe, mata o mau humor e restaura o moral. Isso não apenas fará com que você seja notado e promovido, mas também tornará sua carreira mais agradável e sustentável.

Bônus: algumas dicas sobre como moldar deliberadamente sua mentalidade

As habilidades, obviamente, podem ser treinadas - tanto as suaves quanto as técnicas. Você pode melhorar tanto na depuração quanto na comunicação. Mas e quanto a características aparentemente inatas, como curiosidade ou uma perspectiva positiva? Você pode realmente treinar para ser mais otimista ou curioso?


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


  • Reconheça que sua mentalidade não é fixa e que suas características são maleáveis.


  • Construir autoconsciência. Observe como você reage em diferentes situações. Tente entender o que faz você se sentir de uma maneira específica (curioso x entediado, positivo x mal-humorado, ansioso x defensivo).


  • Faça uma retrospectiva do seu comportamento a partir de uma perspectiva de um ou dois dias. Sua opinião era realmente pragmática ou era seu ego falando? Como você poderia ter agido de forma diferente?


  • Prepare-se com antecedência. Planeje com antecedência como você se comportará na próxima vez em uma situação semelhante e identifique o gatilho certo que o lembrará do seu plano quando chegar a hora.


  • Exponha-se a situações que lhe permitam exercitar e fortalecer as características desejadas. Procure ativamente por tais oportunidades.


  • Concentre-se em uma única característica por algum tempo. Isso facilitará encontrar oportunidades para exercê-lo e aumentar sua autoconsciência sobre esse traço.


  • Reformular. Seja consciente e deliberado sobre como você fala consigo mesmo. A ideia não é estúpida, é surpreendente. Esse arrepio não é ansiedade, é excitação. O problema não é frustrante, é interessante.


  • Conte com ajuda. Não hesite em pedir feedback ao seu colega ou gerente - ou mesmo em se tornar seu "parceiro de responsabilidade" que detectará e apontará seu comportamento indesejado.


Eu também encorajo você a aprender um pouco sobre vieses cognitivos e formação de hábitos. Esta é uma disciplina bem desenvolvida, com um enorme corpo de conhecimento e bastante divertida de explorar.

Resumindo

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


Traços de caráter são a parte mais complicada. A maioria dos desenvolvedores os negligencia porque não os conhece, não sabe quais são importantes ou não acredita que sejam maleáveis.


Mas se você conseguir superar esse modo de pensar falho - se puder mudar sua mentalidade - poderá transformá-lo em uma superpotência que elevará sua carreira e o fará realmente se destacar.