Aguarde...

14 de junho de 2021

Desenvolvedores: Use projetos paralelos para construir uma carreira da qual você possa se orgulhar

Desenvolvedores: Use projetos paralelos para construir uma carreira da qual você possa se orgulhar

Você já sabe que projetos paralelos podem ajudá-lo a conseguir um emprego melhor. Este artigo aborda como eles podem ajudá-lo a progredir em sua carreira. Aqui está a inspiração de que você precisa para aproveitar ao máximo seus projetos e se orgulhar.

Este artigo foi publicado originalmente por Ted Bendixon em.cult by Honeypot , uma plataforma comunitária para desenvolvedores com sede em Berlim.

Há cerca de cinco anos, escrevi um artigo popular sobre projetos paralelos. Nesse artigo, fiz uma pergunta simples. Qual é a aparência de um projeto paralelo bom? Como você pode saber se um determinado projeto paralelo em que está trabalhando o impulsionará mais adiante em sua carreira?

Nesse artigo, argumentei que o projeto paralelo ideal deveria ser algo que o ajudasse a aprender novas habilidades. Deve dar dinheiro. Deve dar-lhe espaço para flexionar seus músculos criativos e deve ter um escopo limitado.

Embora eu ainda concorde com muitas dessas afirmações, agora acredito que projetos paralelos podem ser uma prática mais ampla e de longo prazo. Eles podem elevar suas habilidades a tal ponto que você pode sentir que não se encaixa mais em seu trabalho atual.

Digo ‘trabalho’ porque quero fazer uma distinção nítida entre um trabalho e uma carreira. Não acho que isso esteja bem definido em nosso campo, especialmente quando você olha para a forma como os anúncios de emprego são redigidos.

Por exemplo, as empresas costumam dizer que querem um ‘Engenheiro Nativo Sênior React’ para qualquer salário anual (geralmente mais de $ 100 mil). Alguns anos atrás, eu poderia ter considerado tentar esse trabalho. Eu teria pensado que seria valioso aprender esse conjunto de habilidades porque ele aparecia com frequência. Está claramente em alta demanda e é algo que você pode aprender em seu tempo livre, usando projetos paralelos como seu veículo de aprendizagem.

Dito isso, eu não consideraria tal cargo necessariamente uma carreira.

Diferenciando um emprego versus uma carreira: uma carreira é mais do que o que você faz por dinheiro

Uma carreira é o trabalho de sua vida. Carreira é o que as pessoas pensam de você muito depois de sua morte. É o que você contribui para o mundo, esperançosamente alguma mudança duradoura, esperançosamente algo verdadeiramente inovador que quebra algum tipo de barreira e fornece um valor único incomparável à maioria das coisas que vieram antes dela.

Eu sei que isso está estabelecendo um padrão bastante alto, mas, assim que nos aprofundarmos, acho que você entenderá por que é tão importante.

Em uma carreira real, você é responsável por fazer uma mudança significativa e duradoura e tem a confiança de escolher as ferramentas certas e trabalhar com as pessoas certas para alcançar esse resultado.

A maioria dos funcionários não está nessa situação. Em vez disso, alguém acima de nós escolhe as ferramentas e as pessoas, e temos que concordar com isso, seja realmente a escolha certa ou não. Freqüentemente, as más práticas de engenharia de software se tornam populares porque são convenientes no curto prazo e prometem demais sobre o que podem entregar a longo prazo.

Pessoas que de outra forma seriam ótimos engenheiros acabam estagnando durante toda a carreira porque escolheram o problema errado para trabalhar e as pessoas erradas com quem trabalhar; portanto, você precisa ter muito cuidado com quem escolhe como mentores.

Se você aceitar um emprego de tempo integral, acho importante perguntar se é uma posição na qual você terá autonomia para fazer e defender escolhas tecnológicas. É uma posição em que você terá algum grau de propriedade sobre a direção e o design do produto? Você trabalhará com alguém que realizou algo substancial (que você respeita), alguém que pode lhe ensinar um conjunto valioso de habilidades?

O que separa esse trabalho do trabalho na fábrica? Como esse trabalho o desafiará de maneiras novas e interessantes? Você terá a oportunidade de crescer além de simplesmente memorizar as APIs de uma estrutura de terceiros como React Native?

Eu me peguei fazendo essas perguntas, e a resposta não me fez sentir muito bem sobre esse tipo de trabalho.

No final, não escolhi React Native. Nesse trabalho, provavelmente não teria autonomia e poder para escolher uma ferramenta diferente ou para construir meu próprio conjunto de ferramentas.

Em muitos aspectos, esse tipo de trabalho não é muito diferente do trabalho na fábrica. Seria como montar móveis IKEA. Você recebe uma estrutura e tudo o que precisa fazer é encaixar as partes.

Para alguns, é uma boa existência. Você está apenas fazendo seu trabalho. Mas eu queria uma carreira que pudesse aprender e crescer, o que certamente não acontecia quando eu era um desenvolvedor de aplicativos móveis em tempo integral.

E eu acho que é importante reconhecer esse tipo de coisa e ser honesto consigo mesmo sobre isso.

Use seus projetos paralelos para obter uma compreensão mais profunda

Esse é o tipo de raciocínio que me levou a fazer meu próprio jogo e minha engine do zero. Eu não queria simplesmente usar uma estrutura ou ferramenta feita por outra pessoa. Eu queria entender como os computadores e os gráficos funcionam em um nível mais profundo para que eu pudesse criar algo realmente inovador.

Eu não achava (e ainda não acho) que o React Native e muitos desses SDKs são bem projetados. Acho que são muito complicados, mais como tentar empilhar mais uma camada no topo de um prédio que já está caindo. Eu acreditava (e ainda acredito) que podemos fazer melhor.

E o mais importante, eu queria estar cercado de colegas que não acham que sou louco por pensar dessa forma, pessoas que me incentivam a inovar e fazer algo melhor, mesmo que demore muito tempo.

Infelizmente, a maioria das empresas simplesmente não está em posição de fazer isso. As demandas dos dias atuais superam o benefício percebido de investir em uma maneira melhor de trabalhar. Como resultado, as pessoas na maioria dos empregos de programação podem passar ano após ano sem realmente aprender nada que as ajude a crescer. Eles voam de uma estrutura de terceiros para a outra e não têm a chance de remover as camadas e construir algo melhor.

Eu queria essa chance e usei meu projeto paralelo como um veículo para aprender programação de nível inferior e construir aquela coisa melhor que pode ser impraticável para alguns empregadores, mas totalmente prática se seu objetivo é administrar sua própria empresa e fazer jogos inovadores.

Meu projeto paralelo e como ele me mudou

Dois anos atrás, comecei a seguir a série Handmade Hero de Casey Muratori. Ele abrange todo o pipeline gráfico e ensina como fazer jogos e aplicativos de plataforma cruzada que funcionam em um nível inferior. É o tipo de educação em ciência da computação que está faltando, e eu mergulhei de cabeça nisso.

Provavelmente investi dez horas por semana além do meu emprego de tempo integral existente, o que me colocou em uma média de cinquenta horas por semana durante dois anos inteiros. Durante as férias, eu investi ainda mais tempo porque é algo que me interessa.

Os resultados desse pequeno esforço são notáveis. Depois de um ano, tive o início de um jogo de plataforma 2D desenhando blocos de cores sólidas, com um personagem do jogo que podia pular e colidir com superfícies.

Há mais de dois anos, agora tenho um jogo de quebra-cabeça totalmente jogável com 34 níveis. Ele funciona no meu Mac, e agora estou trabalhando para portá-lo para o Web Assembly para que mais pessoas possam jogá-lo.

Mais importante, esse investimento de tempo me deu uma visão totalmente nova do desenvolvimento de software. Consegui criar um jogo de plataforma cruzada que não está colado nos SDKs existentes (como React Native), mas que funciona com eles para produzir algo rápido, elegante e fácil de manter.

Aprendi a programar em C. Aprendi sobre CPUs, GPUs e programação gráfica. Eu escrevi um renderizador 2D em Metal e estou trabalhando para portar a mesma coisa para OpenGL.

Aprendi habilidades de design de jogos. Eu criei mais de setenta quebra-cabeças e fiz uma série de protótipos cada vez melhores. Eu continuo me livrando do meu antigo trabalho porque a cada mês que passa, minhas habilidades de design melhoram e eu tenho uma ideia diferente do que consideraria um bom quebra-cabeça.

Eu escrevi um sistema de física 2D que é ajustado para as coisas que meu jogo faz. Fiz um editor de gráficos de pixel porque é divertido e demorou apenas alguns dias. Eu também escrevi uma ferramenta de empacotamento de textura para tornar o carregamento de textura mais rápido quando o jogo é iniciado.

Eu paguei exatamente zero dólares para Unity / Unreal ou qualquer um dos motores de terceiros. Eu possuo 100% do meu motor de jogo e posso usá-lo como base para o desenvolvimento de jogos futuros.

Isso não foi apenas um investimento em minhas habilidades e compreensão. Tem sido um investimento nas ferramentas que minha empresa usará no futuro. Quem sabe? Posso inventar uma nova maneira de fazer o desenvolvimento de aplicativos multiplataforma que outras empresas possam usar.

Espere que seu projeto paralelo mude sua perspectiva e opiniões. Se você não acredita mais nas mesmas coisas, é um sinal de que está crescendo.

Como eu disse antes, nem sempre tive as opiniões que tenho agora.

Não muito tempo atrás, talvez eu quisesse um título como ‘Senior React Native Engineer’.

Mas agora eu realmente reconheço a diferença entre montar móveis IKEA e fazer à mão uma mesa de madeira que você escolheu, e você tem que escolher o caminho que deseja seguir. Se o seu objetivo é aprender, você só pode aprender muito quando estiver limitado por kits pré-fabricados. Existem tantas configurações permitidas, tantas combinações. Isso naturalmente coloca um limite máximo em seu crescimento.

Se você usa uma cafeteira para fazer café há anos e anos, você realmente ficou melhor em fazer café? Eu sei que não.

E eu sei que se eu quisesse melhorar em fazer café, teria que mergulhar mais fundo. Eu precisaria começar a importar ou cultivar meus próprios grãos, torrá-los, prestando atenção na qualidade da água que estou usando para fazer aquele café. Se fazer o melhor café fosse a ambição da minha vida, esse é o caminho que eu teria seguido.

Mas sei que não foi esse o caminho que tomei. É por isso que não ligo meu Keurig e me considero um especialista em café.

Esse é o tipo de crítica que fiz a mim mesmo, como um suposto engenheiro de software. Para mim, comecei a perguntar: como posso realmente me chamar por esse título se tudo que venho fazendo é seguir as instruções da embalagem?

Agora que trabalhei em meu projeto paralelo por dois anos, tenho o tipo de experiência que torna muito fácil seguir as instruções dos SDKs, meio chato, para ser honesto. Eu rotineiramente faço trabalhos que costumavam me levar muito mais tempo, e os clientes ficam maravilhados com a velocidade. Isso significa que posso negociar taxas de pagamento mais altas ou simplesmente trabalhar menos e dedicar mais tempo aos meus projetos paralelos.

No outono passado, parei de contratar em tempo integral e voltei para o tempo parcial para trabalhar em meus jogos. Eu não achava que estava aprendendo o suficiente como desenvolvedor de aplicativos móveis em tempo integral e estava concluindo o trabalho tão rapidamente que realmente não fazia sentido me manter em tempo integral. Dinheiro não era suficiente para me manter feliz, pois acredito que a vida e a carreira são mais do que dinheiro.

Obviamente, estou em uma posição privilegiada, tendo a capacidade de trabalhar essas dez horas extras por semana durante dois anos inteiros. Sei que nem todo mundo está nessa posição, mas ainda acho que qualquer quantidade de tempo que você dedicar ao seu projeto paralelo ainda é valioso e o ajudará a crescer em sua carreira (não apenas em seu trabalho). E se você tiver tempo e espaço para trabalhar em um projeto paralelo, tenho mais um aprendizado para compartilhar.

A inovação raramente surge quando se apanha o fruto que está ao alcance da mão. Dê a si mesmo permissão para reinventar a roda (ou pão, se você for Nancy Silverton)

A chave para um projeto paralelo de sucesso é usar esse projeto paralelo para desenvolver um entendimento muito mais profundo do que o atual.

Não vá e aprenda outra estrutura. Aproveite o tempo para construir seu próprio projeto do zero. Escolha linguagens de nível inferior, como C. Faça sua própria linguagem de programação, se quiser. Tenho certeza que você aprenderia muito fazendo isso.

Lembro-me de Nancy Silverton, a fundadora da La Brea Bakery. No início dos anos 90, ela passou anos fazendo experiências com pão fermentado, usando o fermento natural das uvas.

Para ela, isso era uma espécie de projeto paralelo, e muitas vezes ela acordava às 2 da manhã para cuidar de seus vários pães de massa fermentada feitos à mão. Certamente não era necessário, e ninguém em Los Angeles estava fazendo isso na época. Mas ela continuou trabalhando nisso.

Quando ela apresentou seu trabalho a um mundo mais amplo, ele foi prontamente aceito. O resto é história. A Padaria La Brea é um grande sucesso. Nancy Silverton é responsável por popularizar a massa fermentada e o pão artesanal nos Estados Unidos.

Nada disso teria acontecido se, em vez de experimentar, ela pensasse: ‘Por que reinventar a roda? O que posso realmente esperar contribuir como indivíduo? Não é arrogante da minha parte pensar que vou tropeçar em algo verdadeiramente novo em um ofício tão antigo quanto assar pão? ‘

O futuro é inventado por pessoas que, insatisfeitas com o que está ao seu redor, acordam às 2 da manhã para experimentar algo radical e novo.

Postado em Blog
Escreva um comentário