Desenvolvedor que ama programar, mas odeia a indústria da programação
(deathbyabstraction.com)- Ao contrário do prazer de programar em si, o ambiente de trabalho de software parece exigir produzir mais código em vez de questionar o propósito do design e os critérios de sucesso
- A experiência de passar algumas semanas vendo vagas em 2023 destruiu a expectativa de que existiria “um lugar melhor”, e em especial a cultura de startup expõe de forma explícita a postura de “pergunte menos e produza mais”
- Mesmo em grandes empresas de tecnologia, desenvolvedores são tratados como números, como tamanho da stack de backend, nota em entrevistas e nota em avaliação de desempenho, e o julgamento individual sobre como escrever código se torna ainda mais irrelevante
- A postura de “fazer mais e perguntar menos” pode até aumentar o volume de código, mas leva a software pior, e tecnologias da moda e a inércia acabam impregnando linguagens, bibliotecas, frameworks e até padrões de código
- O tipo de trabalho que o autor quer fazer é resolver problemas de engenharia que partam de necessidades já existentes na sociedade, e o “porquê” do sistema deveria determinar linguagem, paradigma, arquitetura e até sintaxe
Desalinhamento sentido no trabalho em software
- O autor diz que nunca se encaixou bem em nenhum dos cargos de engenharia de software pelos quais passou
- Depois de entender em algum grau a lógica interna de uma base de código, o lado técnico ficava entediante, e então ele passava a querer fazer diferente em vez de apenas fazer mais
- Ele continuava voltando às seguintes perguntas sobre decisões de design e propósito
- Por que estamos fazendo isso
- Por que estamos fazendo desse jeito
- Não existe uma forma melhor
- Quais são as métricas para julgar sucesso e por que usamos essas métricas
- Embora nem sempre verbalizasse essas perguntas, ouviu que “pensa demais” e “se importa demais” no tempo em que poderia estar despejando mais código
- Não se tratava apenas de falta de encaixe entre talento e função, mas de dificuldade em concordar com a própria forma como as organizações operam, e do desejo de mudá-la em vez de mantê-la
Vagas de startup e o “fazer mais e perguntar menos”
- A experiência de examinar vagas por algumas semanas em 2023 destruiu a expectativa de que “deve haver um lugar melhor”
- Ele avalia que 90% das descrições de vagas pareciam levar o aprovado a escrever código desconectado de problemas importantes tanto para a humanidade quanto para a própria pessoa
- A cultura de startup é apresentada como o exemplo mais explícito da atitude da indústria de “produzir mais código e fazer menos perguntas”
- Muitas startups, segundo a crítica, movem dinheiro de investidores enquanto tentam convencer usuários de que precisam de produtos úteis apenas de forma limitada para conseguir clientes pagantes
- Startups geralmente fracassam, e o resultado é um código espaguete difícil de manter, escrito sob pressão para ficar pronto não em meses, mas em semanas
- Esse código acaba não sendo visto novamente, exceto talvez como exemplo de má prática de programação; o tempo de engenheiros é desperdiçado, e o capital de risco já pode ter voltado para pessoas que já possuem capital significativo, para então ser reinvestido em outras startups
- O autor critica anúncios de vagas por empacotarem esse trabalho como algo empolgante, que enriqueceria a vida das pessoas e estimularia o crescimento em engenharia
A autonomia que desaparece mesmo nas grandes empresas de tecnologia
- Empresas de tecnologia já estabelecidas diferem das startups em estrutura organizacional e financeira, mas não oferecem um contraste cultural tão grande
- O código escrito em empresas FAANG pode chegar a usuários reais, mas as opiniões individuais sobre qualquer aspecto da escrita desse código se tornam ainda menos relevantes
- O autor critica que o desenvolvedor vira uma engrenagem da máquina das seguintes formas
- O produto pode estar automatizando, de maneiras cada vez mais sombrias, os piores aspectos do capitalismo
- Na prática, a pessoa vira um número como tamanho da stack de backend, nota de entrevista técnica ou nota de avaliação de desempenho
- O problema não é só essa realidade em si, mas o fato de se esperar que engenheiros desejem esse trabalho repetitivo, vazio e humilhante mais do que outros trabalhadores, ao mesmo tempo em que são ainda mais reprimidos para não questionar nenhum aspecto disso
Engenharia com exclusão do pensamento crítico
- Programadores são colocados numa posição em que focam apenas no como, raramente participam do que será construído e quase nunca podem perguntar por que aquilo está sendo construído
- Mesmo para desenvolvedores capazes e dispostos a criticar os sistemas que produzem, a mensagem é que esse tipo de postura deve ficar fora do trabalho
- O autor sente que o desenvolvedor é proibido até de identificar a falta de autonomia e criatividade inerente à função, e conclui que talvez se consiga produzir mais, mas é difícil produzir de forma diferente ou produzir algo melhor
A estrutura em que o volume de código cresce, mas o software piora
- A postura do-more-ask-less da indústria de tecnologia permite produzir mais código, mas ao mesmo tempo leva a software pior
- Mesmo quando capital e condições externas permitem criar software sustentável, positivo ou ao menos útil na prática, muitas vezes isso não acontece por inércia
- É mais fácil, e em geral mais viável, seguir modas e reproduzir o estado atual das coisas
- A mesma inércia permeia toda a stack tecnológica sobre a qual se erguem produtos socialmente inúteis
- linguagem
- bibliotecas
- frameworks
- padrões de código
- A preferência por novidade e gimmicks em vez de inovação real aflige toda a indústria, e se não há resolução de problemas atípicos, então também não há necessidade de engenharia atípica
Critérios da engenharia desejada
- Os problemas de engenharia mais interessantes não são os que têm como objetivo o avanço tecnológico em si nem os que tentam criar artificialmente uma demanda de mercado inexistente, mas sim os que surgem naturalmente dentro da sociedade
- Necessidades sociais são o melhor motor da inovação, e os avanços decisivos da computação inicial também aconteceram em nome de um bem público maior
- A forma de trabalho desejada é aquela em que o porquê de construir um sistema orienta todos os comos
- linguagem de programação
- paradigma
- arquitetura
- uma linha de código
- elemento sintático
- Esse “porquê” não deve refletir métricas de negócio que existem por si mesmas, mas necessidades reais que de fato existem
Um pedido para encontrar pessoas com os mesmos valores
- O autor diz que até hoje não encontrou ninguém que compartilhe esses valores de forma significativa e queira fazer esse tipo de trabalho de engenharia
- Ele frequentemente sente isolamento em sua interação com a indústria, mas mantém convicção sobre os valores do seu trabalho e a importância do que tem a dizer
- Pede que entrem em contato se existir alguém assim, e gostaria de saber se já existe um lugar desse tipo; se não existir, acredita que seria útil construí-lo junto
- Está aberto a trabalho de consultoria dentro de suas áreas de interesse e razoavelmente alinhado com seus valores
1 comentários
Opiniões do Hacker News
O que o OP odeia não é tanto a “indústria de programação”, mas sim o mundo corporativo. Já trabalhei com desenvolvedores cujas expectativas sobre o que a “realidade” exige de um desenvolvedor estavam desalinhadas, e eu mesmo já fui assim
Empresas não se importam com refinamento, abstração, nem com código engenhoso ou bonito. Elas querem desenvolvedores que entreguem funcionalidades de acordo com os requisitos de negócio
Indivíduos nas engrenagens, como gerentes, executivos e colegas, podem dizer que vão deixar você praticar a “arte” da programação, mas, se você não contribuir economicamente para a empresa, no fim será tratado como um peso
É melhor buscar o prazer e a arte da programação fora das empresas, e é melhor não esperar que a “indústria” se importe com o como ou o porquê de programar. Ela só olha se os caracteres digitados na tela viram dinheiro. Ao aceitar isso, a vida fica muito menos frustrante, e também dá para encontrar diversão no trabalho. Só que talvez não seja exatamente “arte”
Mas, quanto à afirmação de que “empresas não se importam com refinamento, abstração, engenhosidade e código bonito”, fico pensando se, nesse caso, eu sou o mundo corporativo
O que quero dizer aos colegas é: antes de tentar refinamento, abstração, engenhosidade ou beleza, primeiro façam funcionar conforme a especificação. Caso contrário, todo o resto não vale nada
Só depois de ficar razoavelmente bom em fazer funcionar corretamente é que dá para fazer direito e, talvez, fazer rápido
Mesmo que você transforme algo de que gosta no seu próprio negócio, por exemplo fabricar móveis, haverá clientes que querem a coisa “errada” ou que não querem pagar por materiais raros melhores
É sempre melhor fazer aquilo de que se gosta puramente como hobby, sem os elementos de trabalho
O motivo pelo qual sou pago é entregar. Se foi eficiente, se resolveu o problema, se gerou dinheiro ou se preencheu uma caixinha não é minha preocupação nem está sob meu controle. Basta planejar o que preciso fazer, fazer, tratar as pessoas com gentileza e ir embora às 17h
Não se deve fazer de qualquer jeito escrevendo código ruim ou ignorando os efeitos posteriores das decisões. Há pessoas que são demitidas por esse motivo
O mais importante é não exagerar. Não tente prever como o produto vai evoluir e cobrir todos os cenários, não tente impor um design claramente melhor, não tente entregar mais rápido e é melhor não corrigir outros bugs que você encontrou enquanto fazia sua tarefa. Correr atrás de promoção foi um dos piores estresses que trouxe para mim mesmo
É preciso entender se o projeto em que você está é de alta intensidade, de alto crescimento, maduro ou prestes a ser cortado, e agir de acordo
E é preciso levar crédito e aparecer. Faça uma demonstração uma vez por trimestre, revise o código de outras pessoas, participe de reuniões de design e faça perguntas, responda rapidamente a e-mails ou mensagens que cheguem antes das 17h e entregue o que disse que entregaria. Pareça um recurso útil, mas, ao menor sinal de pressão por entrega, é preciso repelir isso com ações
Por fim, é bom estar sempre preparado para conseguir fazer a próxima entrevista em duas semanas
Trabalho é só trabalho. Não é família, nem agência de alocação de mão de obra
As asas continuarem presas durante o voo não melhora os indicadores-chave de desempenho, então a lógica vira demitir todo mundo que perde tempo com preocupações irrelevantes desse tipo
O objetivo implícito é que ela se popularize o suficiente para chegar a um ponto em que programadores concordem coletivamente que precisam ter voz no “mundo corporativo”. Por exemplo, exigir que se reduza a velocidade de “produzir” novos recursos e se invista mais na qualidade do software
Trabalhei como desenvolvedor por mais de 30 anos, mas, infelizmente, não há muita coisa no texto do OP que eu consiga contestar com força. Gostaria que houvesse
Os jovens aprendem que criar tecnologia e software é uma atividade criativa na qual podem exercer uma paixão inata. Um certo tipo de mentalidade, atraída por símbolos, abstrações e atividades repetitivas, acaba se reunindo nesse trabalho. Os anos passam e os acionistas engordam
A verdade é que o desenvolvimento de software é quase inteiramente uma atividade econômica, e uma com caráter exploratório. O ambiente de trabalho certamente é melhor do que minerar ouro ou bauxita, mas quase todo mundo está minerando código em veios de código para enriquecer outras pessoas. Gente nos escritórios de canto, e acima delas, gente com iates
Eles não se importam com o que fazemos, com a pretensão de considerarmos isso arte ou artesanato, nem com o que achamos importante. Na prática, a maioria nos considera perdedores que desperdiçam tempo https://ribbonfarm.wpenginepowered.com/wp-content/uploads/2009/10/hughMcLeodCompanyHierarchy.jpg
Como outros disseram aqui, o erro fundamental está em tentar encontrar significado no trabalho corporativo. Mas as pessoas precisam de significado e precisam gastar uma parte grande demais de sua única vida trabalhando, então não há muitas alternativas. Não sei qual é a resposta
Há pelo menos dois tipos de pessoas que veem a “classe baixa” do software como perdedores
Um tipo acha que o trabalho exige habilidade, que os trabalhadores têm uma especialização valiosa e que vale a pena ouvi-los. Mesmo assim, eles seriam apenas mercadorias assalariadas, e não jogadores de verdade que, como eles, são “a pessoa mais inteligente da sala” ou “líderes” e recebem grandes recompensas; por isso os veem como perdedores
O outro tipo vê o trabalho de software como serviço braçal de baixa qualificação, os trabalhadores como um mal necessário temporário e, em questões de remuneração e lealdade, como gente insolente que não conhece seu lugar. Considera que suas opiniões não têm valor. Claro que, no mundo dos negócios, como trabalhadores de software não se movem como jogadores de verdade nem tiram proveito pessoal disso, são vistos como perdedores
O segundo caso é uma situação muito pior
Se aquilo que eu criei enriquece outra pessoa, ótimo. Isso significa que aquilo que eu fiz tem valor. Quero que tudo o que eu crie tenha valor
Espero que, um dia, depois de praticar, aprender e acumular experiência e poupança suficientes, eu possa contratar outras pessoas com responsabilidade
Se eu tiver uma boa ideia e executá-la direito, também existe a possibilidade de eu ter aquele iate. Chamamos isso de incentivo econômico, ou motivação
Vejo “a direção para a qual o setor está indo” como um processo que há muito tempo vem sendo infiltrado por golpistas. O valor que pode ser criado escrevendo software é enorme, e os altos salários do setor de tecnologia refletem isso. Essa riqueza atrai todo tipo de golpista
Isso aparece de forma mais explícita no jogo de gato e rato para contratar engenheiros qualificados. A proporção entre o topo e o fundo do funil de contratação está mais alta do que nunca
De forma menos óbvia, surgiram categorias inteiras de “funções de golpista”, como gerentes de produto e scrum masters. Depois que entram, quanto mais numerosos, mais seguros ficam, então trazem ainda mais gente
Pessoas inteligentes capazes de inovar agora precisam conduzir pela mão pessoas incompetentes pelos processos de criatividade, inovação, pesquisa, descoberta e engenharia. Isso porque essas pessoas incompetentes muitas vezes têm a palavra final sobre onde as pessoas inteligentes gastarão seu tempo
Se você já passou por reuniões em que, nos primeiros 10 minutos, os engenheiros já sabem como resolver o problema do cliente, e depois os gerentes de produto precisam ser conduzidos, um por um, até a mesma conclusão, é disso que se trata
Surgem problemas de desempenho, brechas de segurança, falta de observabilidade, escalabilidade ruim e problemas absurdos de configuração ou dependências
Empresas FAANG, em especial, estão cheias desse lixo. São códigos escritos para “posts de autopromoção” visando promoção, e depois praticamente abandonados quando a pessoa vai para outro lugar antes que os atalhos baratos fiquem evidentes
Mais do que projeto sólido, boa lábia virou a habilidade mais valiosa para um engenheiro de software, e o resultado aparece por toda parte
Depois de mais de 10 anos desenvolvendo software corporativo, já não me importo mais com os resultados nem com para onde esse circo está indo
Hoje, a única coisa com que me importo é o salário absurdamente alto caindo na conta
Chamo isso de desenvolvimento em que me importo exatamente o necessário agora para não precisar me importar muito depois
Passei 40 anos como programador, mas sempre procurei maneiras de usar criatividade e imaginação, e de não virar alguém que só digita código mecanicamente
No meu último emprego, liderei uma pequena equipe e criamos código estrategicamente importante, com sucesso. Era uma situação em que, se aquele código não funcionasse sempre, 100 mil pessoas ficariam irritadas todos os dias, e uma fila de executivos irritados também surgiria
No fim, cansei de trabalhar duro demais e decidi me aposentar
Se o trabalho não te motiva, você precisa encontrar uma nova forma ou um novo lugar para ser programador. Pode ser abrir sua própria empresa ou tentar algo novo. Caso contrário, precisa procurar outra profissão
Reinventar a si mesmo não é fácil, e hoje é muito mais difícil, mas, se você quiser o bastante, é possível
Mesmo trabalhando para senhores corporativos, programar dá energia. Convencer máquinas a fazerem o que eu quero nunca enjoa. Posso fazer isso o dia inteiro sem me cansar
Nas raras épocas em que preciso programar muito, às vezes percebo tarde demais que passei 15 horas seguidas sem ver o tempo passar. Isso vem acontecendo há quase 20 anos
Infelizmente, programar é só uma pequena parte do trabalho. Quanto mais avanço na carreira, mais isso fica claro. Às vezes, o tempo de código de verdade é só uma ou duas horas por semana
O resto é gasto em reuniões ridículas, em guiar pela mão pessoas que não leem, em convencer outras pessoas a convencerem as máquinas a fazerem o necessário, em “planejamento” e em ruídos parecidos. A única parte gratificante é orientar programadores mais jovens
Continuo porque é um caminho seguro até a aposentadoria, e já estou quase lá. Meu plano para depois de me aposentar é programar aquilo que eu quiser criar, por puro prazer
Acho que parte do problema é que muitos desenvolvedores querem trabalhar em projetos significativos e com pessoas boas, mantendo o nível de salário que recebem hoje em $FAANG ou de participação acionária que teriam em $STARTUP
Na prática, funcionários tratam significado, autonomia, iniciativa e equilíbrio entre vida pessoal e trabalho como moeda, e às vezes aceitam redução salarial para conseguir um trabalho com significado
Existem empregos melhores. Eu mesmo encontrei um. Mas, se você trabalha hoje em uma empresa de ad tech ou em uma startup de IA, quase certamente precisa estar preparado para ver salários muito menores do que aqueles a que está acostumado
Cresci em uma família de baixa renda e, já adulto, também vivi várias vezes com pouquíssimo dinheiro, então isso me parece natural. Em certo sentido, quase até prefiro
Minha saúde mental é ameaçada muito mais facilmente por estresse excessivo ou falta de sentido do que por um orçamento apertado
Continuar em um trabalho sobre o qual não me sinto muito positivo — ou, pior, que só me causa sentimentos negativos — só faz sentido quando tenho um plano muito concreto para o dinheiro extra e uma probabilidade muito alta de executar esse plano
Esse modo de vida não serve para todo mundo, mas recomendo fortemente considerar isso se você for menos materialista do que a média ou não tiver medo de viver de forma mais frugal. Especialmente se, ultimamente, você se pergunta mais de uma vez por semana quanto tempo ainda consegue aguentar “esse emprego bom” sem desmoronar
As ferramentas que criamos ajudam pessoas que constroem coisas reais a trabalhar com mais segurança e eficiência. É muito legal ver projetos concretos, de abrir os olhos, sendo construídos
Como disseram, a remuneração em FAANG é muito maior, mas gosto muito de onde trabalho agora e, pela primeira vez em muito tempo, não sinto o impulso de procurar outro lugar depois de alguns anos
A maioria não tem condições de pagar salários altos. Elas precisam de pessoas interessadas e muito automotivadas. Também é preciso estar disposto a ser flexível de várias formas, e, em empresas pequenas, muito mais coisas são negociáveis
Essas empresas não aparecem facilmente na sua frente; é preciso procurá-las por conta própria
A solução é ficar independente, criar suas próprias ideias e vendê-las aos consumidores. Pode ser sua própria startup, mas, no meu caso, foi me tornar desenvolvedor indie de jogos
Um dos meus jogos, YOYOZO, foi escolhido pela Ars Technica como um dos “Best Video Games of 2023”, então sinto que minha decisão foi acertada
É como gostar de sexo, mas não querer ser prostituta. Seja lá o que você faça, se não puder fazer nos seus próprios termos, pode acabar se tornando miserável
Sinto algo parecido em relação ao LeetCode
Gosto de engenharia de software, mas o LeetCode me faz odiar engenharia de software
Eu só quero criar coisas legais. Não quero decorar e implementar um cache LRU ou mais um problema intermediário-avançado do LeetCode em 40 minutos
Claro que algumas empresas não vão querer falar comigo por causa disso, mas tudo bem. De qualquer forma, nunca passei nesse tipo de entrevista, e sempre precisei ter empregos em que não fosse necessário fazer live coding durante a entrevista
A expectativa é, na prática, memorizar perfeitamente a solução ótima. Essa solução ótima provavelmente foi descoberta por alguém em nível de doutorado que pesquisava algoritmos
No fim, você só vai acabar implementando um endpoint para um CRUD com mil usuários ativos mensais