Nearly every software developer or programmer has encountered code written by someone else that proves the cliché “anyone can code”. Mas você já encontrou o supostamente mítico “10x Developer?” Ser um programador 10x tem menos a ver com a excelência em escrever código e mais com saber exatamente que código escrever.
Muitos de nós começaram a programar para um propósito específico. Por exemplo, eu comecei a escrever código para jogos MUD baseados em texto autoplay para mim enquanto dormia e na escola. Eu era um garoto de script aos 13 anos e nem sabia disso. Eu poderia ter uma idéia, escrever o código e testá-lo – tudo sozinho.
O desenvolvimento de software é difícil quando estamos fazendo isso para outra pessoa porque muitas vezes nos falta o mesmo tipo de motivação e excitação que nos impulsiona quando estamos perseguindo nossa própria visão. Nós não chegamos com as idéias, passamos horas em reuniões tentando entendê-las, e então passamos a maior parte do tempo modificando o código de outra pessoa – ou pelo menos contribuindo para isso. Isso pode levar a um nível de desprendimento que diminui a produtividade.
Para ser um desenvolvedor 10x, você tem que aprender a se sobressair nesse ambiente ou até mesmo começar sua própria empresa a liderar a carga.
Anyone pode ser um desenvolvedor 10x, pelo menos durante parte do dia, todos os dias. Eu acredito que existem três coisas em que todos os desenvolvedores devem se concentrar para se tornarem mais produtivos e um melhor membro da equipe.
- As 3 Coisas
- Knowing the What
- Entendendo o Porquê
- Saber Quando Fazer o Que Fazer
- Masterizando o quê, por quê &Quando se tornar um desenvolvedor 10x
- Comece com Why
- Sê um bom desenvolvedor & Excelente solucionador de problemas, Não o melhor programador
- The When Is in Your Gut, or It Isn’t
- Saber o que fazer e o que perguntar
- Conclusão
As 3 Coisas
Para ser um desenvolvedor 10x, você precisa de vários anos de experiência trabalhando com qualquer linguagem de programação e conjunto de ferramentas que você use. Você tem que ser bom em resolver problemas e escrever código; isto é um dado.
É importante entender que como você escreve código não é o que faz de você um desenvolvedor 10x, engenheiro 10x, programador 10x, ou o que quer que você queira chamar.
Você conhece os 5 Ws: “Quem, o quê, onde, porquê, quando.” Enquanto todos estes se aplicam ao desenvolvimento de software, eu quero focar nas três características que definem os programadores 10x. Estas três coisas diferenciam o programador médio do programador 10x:
- What
- Why
- When
Knowing the What
No mundo corporativo, os programadores tendem a trabalhar em projetos pelos quais eles não têm muita paixão e não entendem. Para a maioria dos desenvolvedores, isto não é um grande problema, desde que eles recebam orientações e expectativas muito boas sejam claramente definidas.
O problema é que os desenvolvedores geralmente não recebem instruções adequadas. Em vez disso, nós usamos esta coisa chamada “desenvolvimento ágil”. Recebemos uma nota Post-it com algumas palavras e espera-se que saibamos exatamente o que precisa ser feito.
O desenvolvimento de software é tudo sobre comunicação. Os desenvolvedores precisam saber no que estamos trabalhando, quais problemas estamos tentando resolver, e exatamente como o resultado precisa ser. Quanto mais soubermos na frente, mais rápido podemos ir. O mais importante, conhecer a intenção do trabalho e o que fará do trabalho um sucesso é crucial para o sucesso.
Os desenvolvedores ruins gastarão horas indo na direção errada em um projeto sem fazer nenhuma pergunta. Eles são o que eu chamo de -10x desenvolvedores porque eles não conseguem nada e perdem o tempo de todos os seus colegas de trabalho. Quase todos já encontraram alguns desses desenvolvedores, e pode ser frustrante trabalhar ao lado deles. E você deve ter cuidado para não pegar seus hábitos!
Alguns desenvolvedores trabalham bem mesmo sem muitos detalhes. Eles usam uma grande quantidade de criatividade e fazem as perguntas certas. Estes unicórnios são provavelmente 10x desenvolvedores. Eles sabem como descobrir as coisas e muitas vezes elevam o nível de toda a equipe que trabalha ao seu redor.
O resultado final é que 10x desenvolvedores são realmente bons em determinar rapidamente o que precisa ser realizado e que perguntas fazer.
Entendendo o Porquê
Talvez o maior obstáculo do desenvolvimento de software seja entender o porquê. Se você não entende o problema que está tentando resolver, é realmente difícil resolvê-lo.
Por que eu estava hackeando scripts de terminal juntos para jogar meu jogo MUD enquanto eu dormia e estava na escola? Eu queria atingir o mais alto nível no jogo, é claro. Eu sabia exatamente por quê, e estava fazendo tudo que podia para fazer isso acontecer.
A mesma abordagem se aplica a qualquer projeto de desenvolvimento de software. Os desenvolvedores que entendem a vertical da indústria em que estão e os problemas que estão tentando resolver serão muito mais produtivos. Saber porquê e compreender a vertical também ajuda a evitar trabalho desnecessário, libertando tempo para se concentrar nas coisas que tornarão um produto ou recurso mais valioso para os utilizadores.
O problema é que saber porquê não é suficientemente bom. Você tem que ter uma paixão pelo problema e compreendê-lo por dentro e por fora para ser realmente um desenvolvedor 10x. Eu acredito que a maioria dos desenvolvedores 10x também são pessoas de produto no coração, dotadas de uma boa visão de produto.
Saber Quando Fazer o Que Fazer
Timing é importante para projetos de desenvolvimento de software. Escolher que ordem para trabalhar nos itens do seu log de retorno é uma tarefa aparentemente fácil, que é realmente crítica. Você trabalha em algo que pode ajudar a sua empresa a conseguir uma nova conta ou ir limpar dívidas técnicas antigas?
Como equipes de desenvolvimento, temos que fazer malabarismos constantemente no que trabalhamos e quando trabalhamos nisso.
Todos os itens de trabalho de desenvolvimento de software se encaixam nestas três categorias:
- O que temos de fazer
- O que temos de fazer
- O que queremos fazer
Temos de fazer este novo recurso para um cliente. Temos de corrigir bugs no nosso software. Queremos trabalhar com dívidas técnicas ou algum novo recurso legal do produto. É sempre um ato de equilíbrio.
Devemos estar fazendo itens de trabalho dos três baldes simultaneamente. Não podemos gastar todo o nosso tempo com dívidas técnicas, mas talvez devêssemos gastar uma pequena percentagem do nosso tempo nisso.
Os desenvolvedores também têm que saber quando construir arquiteturas complexas dentro do seu código. Eu prefiro manter o código tão simples quanto possível até que eu seja forçado a adicionar arquitetura que de outra forma não poderia viver sem.
Os desenvolvedores também têm que saber quando evitar perseguir objetos brilhantes. Eles tendem a querer brincar com novas ferramentas e tecnologias, mas essas soluções podem apenas retardar um projeto em vez de ajudar a fazê-lo mais rápido.
10x Os desenvolvedores são bons em fazer malabarismos com prioridades e entendem quando investir tempo em arquiteturas versus código de esparguete para fazer algo funcionar. Lembre-se, seus usuários não se importam como seu software funciona ou como a arquitetura é chique. Eles só querem que ele funcione. Desenvolvedores 10x entendem isso.
Masterizando o quê, por quê &Quando se tornar um desenvolvedor 10x
Agora vamos falar sobre como você pode dominar as importantes habilidades do quê, por quê e quando se tornar um desenvolvedor 10x.
Comece com Why
O primeiro passo para se tornar um desenvolvedor 10x está se tornando apaixonado pelo software e pelos problemas que você está tentando resolver. Você precisa entender o problema por dentro e por fora. Isso começa com o entusiasmo pela empresa para a qual você trabalha e sua missão como empresa.
Não faça apenas um botão fazer algo porque foi o que alguém disse para fazer. Esforce-se para entender o porquê a um nível superior. Você será muito mais valioso para sua equipe e empresa se você permanecer focado no porquê.
Sê um bom desenvolvedor & Excelente solucionador de problemas, Não o melhor programador
Eu me descreveria mais como um hacker-desenvolvedor. Eu sou o tipo que consegue juntar algum código feio para resolver quase qualquer problema muito rapidamente. Meu código raramente é bonito, mas ele funciona. E isso é o que importa.
Você não precisa escrever código perfeitamente arquitetado com testes unitários para ser um desenvolvedor 10x. Você precisa saber quando e quando não fazer essas coisas para ser um desenvolvedor 10x.
Um desenvolvedor 10x é bom em resolver problemas específicos e satisfazer as necessidades do negócio com código. A coisa mais inteligente que você pode fazer é saber até onde levar um projeto antes de entregá-lo a alguém que pode ser melhor na finalização de alguns detalhes da arquitetura e outros pequenos detalhes.
The When Is in Your Gut, or It Isn’t
Knowing when to build out a complex architecture versus hacking something together comes with experience and the development of your spidey senses. Ou você tem esse sentimento instintivo ou não.
Alguns dos desenvolvedores mais inteligentes com quem já trabalhei foram os piores a priorizar padrões e arquiteturas sobre funcionalidades e cronogramas. Eles queriam fazer sobre-engenharia e reescrever as coisas vezes sem conta, lutando por “código perfeito” ao invés de “código expedível”.
10x Os desenvolvedores têm que usar sua experiência e instinto instintivo para saber quando focar em arquitetura e perfeição versus fazer merda.
Saber o que fazer e o que perguntar
Tanta coisa do desenvolvimento de software se resume a habilidades de comunicação. Infelizmente, muitas das notas e requisitos que recebemos para itens de trabalho não são muito detalhados. Um desenvolvedor 10x sabe como lê-los, aplicar o “porquê” que eles sabem sobre o negócio e fazer perguntas relevantes.
Os melhores desenvolvedores sabem quanto tempo gastar em algo antes de pedir ajuda. Eles também sabem que perguntas fazer para esclarecer o que precisa ser feito para levar o projeto adiante.
Conclusão
Eu tenho escrito código há mais de 15 anos. Eu diria que sou um desenvolvedor 10x, ou pelo menos posso ser. Eu sei o que eu sou bom nisso. Quando estou fazendo as coisas em que sou bom, posso fazer um trabalho sério e rápido.
Se você quiser fazer um protótipo de um novo produto, eu sou o seu cara. Se você precisa de ajuda com Angular, Reagir ou algum outro desenvolvimento frontal, eu definitivamente não sou o seu cara. Eu seria um desenvolvedor -10x nessas tarefas.
10x desenvolvedores não são um mito. Eles existem, sim. Eles são muito provavelmente gerentes de desenvolvimento, arquitetos, desenvolvedores líderes ou fundadores de empresas. Se eles não são, provavelmente deveriam ser. Eu acabei sendo um fundador de empresa, duas vezes agora.
Também, ninguém vai ser um desenvolvedor 10x todos os dias, durante todo o dia. Não temos energia nem foco para trabalhar a esse ritmo todos os dias. Nós não somos robôs.
Se você entender o “o que, por que e quando” do desenvolvimento de software, você pode ser mais produtivo e um membro melhor da equipe – talvez até mesmo um desenvolvedor 10x por algumas horas por dia. E isso pode fazer uma grande diferença.
Enquanto você está aqui e procura como melhorar, confira nossa ferramenta de análise dinâmica de código, Stackify Prefix. É gratuito e vai ajudá-lo a escrever melhor código.