Já faz bastante tempo que queria comentar este assunto e hoje lendo um artigo realmente me fez decidir escrever este artigo.
O artigo fala sobre o quantos e quão ruins são os desenvolvedores de software hoje em dia. Vale a pena ler o artigo antes de continuar porque vou comentar alguns pontos. O artigo embora correto meio que desresponsabiliza e passa um pano nas pessoas que são maus desenvolvedores: a culpa não é deles. E sim, como explicarei, a culpa não é deles: mas a responsabilidade é.
Primeiro o artigo aborda a questão de que ha maus desenvolvedores e que esse número vem crescendo. Maus desenvolvedores são desenvolvedores que não sabem o que estão fazendo (clueless). Eles vieram para a área atraídos pelo dinheiro e não têm noção de software. Às vezes nem de ciência, lógica ou matemática. Sabem criar um programa, mas não sabem explicá-lo nem criticá-lo. Ser um desenvolvedor não é apenas saber programar. Programar é uma parte relevante, e até ocupa bastante tempo, mas não é a mais importante do desenvolvimento. A mais importante é saber pensar. E isso é difícil de ensinar, e é difícil da pessoa que vem de outras áreas, entender.
O artigo passa imediatamente para culpar outros fatores, mas eu queria me ater a este mais um pouco.
Porquê o preparo das pessoas é tão ruim e o que leva uma pessoa de outra área achar que pode ser desenvolvedor, e pior, como as empresas contratam essas pessoas. Para mim existem vários agentes culpados e responsáveis pela questão. O primeiro é a própria pessoa, o segundo as escolas e o terceiro as empresas. Digo escolas para englobar não apenas faculdades, mas cursinhos e até recursos on-line que se apresentam como soluções de ensino.
Quando criei o Javabuilding e agora o codedesign.world é porque entendo que a informação online, sobretudo em cursinhos e academias online é baseada em forma e não em conteúdo. Pega o dinheiro, mas não entrega entendimento.
A verdade mais relevante é que as escolas são péssimas. Muito para lá de ruins. Não passam os valores que são necessários a ser um bom desenvolvedor e nem se preocupam com a tecnologia – caso das faculdades -, ou só se preocupam com a tecnologia – caso das academias on-line. As mensagens que estão sendo passadas são ambas erradas, inúteis à sociedade e enganadoras para as pessoas.
As academias vendem a ideia que de que se você soube as tecnologias A, B e C você tem uma contratação garantida. Mas não é verdade. Elas tiram essa ideia das descrições de vagas das empresas – também culpadas – que precisam de pessoas sabendo A, B e C. Ambas estão erradas. O que é necessário são desenvolvedores que entendem os conceitos subjacentes às ferramentas e que as ferramentas simplesmente automatizam. As ferramentas evoluem conforme a tecnologia evolui, mas os conceitos permanecem os mesmos e são duradouros além da vida das ferramentas.
Só um exemplo simples, o conceito de web framework já teve e continua tendo várias encarnações do Struts ao Spring e aos mais novos Quarkus e companhia. Todos funcionam igual: Chain of Responsability Pattern e Inversão de Dependência. O resto é detalhes próprios da ferramenta que só vale a pensa procurar saber quando o seu software depender disso.
As faculdades vão pelo outro caminho, dizendo que oferecem os conceitos que irão permanecer e durar, mas por outro lado ignoram a tecnologia. Não é aceitável que uma pessoa saia da faculdade sem saber o que é um array, um laço , uma classe ou objeto e sem saber criar e manipular estas coisas em pelo menos uma linguagem. Faculdades ensinando em C, é triste.
Para qualquer profissão é necessário talento. Ha uma parte do talento que é inato e ha uma parte que pode ser aprendida, mas mesmo que aprenda tudo, sem o talento inato – sem o instinto – nada vai acontecer. Se não ha instinto, se não ha entendimento do que vai por dentro e por quê vai assim, a pessoa é apenas um montador de código. Sem instinto para distinguir o bom, do mau, código nada vai acontecer. Um agregador de pedaços desconexos que coloca juntos e consegue – com esforço – um resultado. Não ha nenhum design, não ha nenhuma abstração e não ha nenhuma compreensão de por quê aquela montagem funciona, nem o que fazer melhor. Pior que isso acontece quando a pessoa adora falar “mas funciona” e fica indignada quando lhe respondem “mas funcionar não é suficiente”.
Então as empresas descobriram os serviços prestados por software.Descobriram que software são vitais para os seus negócios. Que software são o seu negócio.Bom, então vamos contratar programadores. E ai pega qualquer um que se intitule programador. E como as pessoas na empresa não sabem distinguir alguém com talento de alguém sem, qualquer um vale.: sem filtro. E como desenvolvimento é sobre saber pensar – é uma profissão de colarinho branco , que exige (em tese) muito conhecimento teórico – o salário é bom. E isto atrai qualquer um que se mexa e tenha dois dedos de testa para pensar além da pessoa que o contratou. Repare que para a empresa não se trata de se a pessoa é boa profissional em termos absolutos. Se trata de contratar o menos pior de uma leva de candidatos a uma vaga, sendo que a empresa não tem a mínima noção de como se determina “menos pior”. Isto é um grande erro. A empresa deveria se esmerar em contratar os melhores, em absoluto. Não os menos piores , relativamente.
E depois vem aquela conversa sem sal de que o que importa são os soft skill – ou seja o quanto você é bom de lábia e embromation – em vez dos hard skills que uma profissão técnica exige. O RH que ler isto vai reclamar que soft skill não é isso. É sobre saber se relacionar , trabalhar em grupo, ter inteligencia emocional…sim, mas isso chama-se : educação. Se a pessoa é educada, deveria ser suficiente. E quem não é educado deveria ser removido. Infelizmente as empresas preferem manter os agentes tóxicos – que são amiguinhos de todo o mundo , falam manso, fingem ter inteligencia emocional, mas que a portas fechadas são abrasivos, ofensivos e simplesmente cretinos. Pena que o RH nunca vê esse lado. No Brasil, vejo isso ainda mais forte. Tem o cara que salva o dia toda a hora com o conhecimento técnico e criando coisas que os outros não são capazes, mas é olhado torto e com desconfiança porque não vai no churrasco da empresa. Talvez seja novidade para as pessoas, mas software não funciona a carvão nem são necessários rituais de queima de animais para funcionar.
O problema das empresas é que querem – sem ter que decidir entre o bom e o mau – atrair pessoas para realizar o trabalho. As empresas deveriam atrair casando seus valores com os valores da sociedade e da profissão, mas querem atrair como uma aranha: com teias de seda. É seda sim, mas deitar nessa seda tem um preço.
Se as pessoas são carentes, as empresas tendem a aceitar e explorar essa carência. E este ciclo tornou as empresas de software de empresas com pessoas com conhecimentos em hard skills e experiencia, em empresas de adultos-criança carentes de atenção que querem ser recompensados com prêmios mesmo quando fazem asneiras e onde ninguém pode dizer que nada está errado , por que ninguém nunca está errado, nunca tem culpa e nunca tem responsabilidade das asneiras que faz. E as empresas aceitam isto, e cultivam isto. Afinal turn over alto e lay off é corriqueiro. Ninguém leva a mal. E depois é uma grande surpresa quado os resultados não vêem. Como poderiam vir se ninguém saber o que está fazendo ? Os poucos que sabem, são “convidadas a sair” ou acabam desistindo porque uma empresa com excessiva preocupação com futilidades é empresa sem rumo e sem futuro. Não é por acaso que as empresas se estão tornando mais “ásperas”, finalmente entenderam que o objetivo é servir o público e ganhar dinheiro com isso, não ter um jardim-cresce.
Voltemos nas pessoas. As pessoas acham que uma faculdade lhes dará uma profissão. Infelizmente não é verdade.Se você quer uma profissão faça um curso profissionalizante, onde você possa fazer as coisas na prática. Talvez isso não lhe dê uma formação em matemática ou estatística avançadas, ou mecânica quântica ou inteligencia artificial, mas vai formar você o suficiente para o dia-a-dia e saber realizar seu trabalho e ter um salário.
É comum, que depois da faculdade a pessoa queira um estágio. Aliás , antes de terminar a faculdade. O estágio é bom, mas é um mecanismo pernicioso da sociedade. Meio que obrigado pelas faculdades, meio que sustentado pelas empresas. Ha poucas empresas que repeitam os estagiários. Há muitas que vêem os estagiários como uma força de trabalho barata. Nada mais longe da verdade.O custo de uma empresa com um estagiário é muito maior que com um sênior. É verdade que o estagiário recebe menos salário , mas o estagiário produz menos, reduz a produtividade dos colegas (especialmente os mais sênior que ele) e tem que ser treinado durante muito tempo, ao fim do qual o estagiário pode ir para outra empresa, e temos que começar tudo de novo.
Este treinamento é cada vez mais difícil e oneroso. As faculdades não preparam os alunos e não os preparam para pensar : que deveria ser o seu objetivo maior e mais relevante em software. Os alunos de hoje são carentes, não apenas de atenção, mas de conhecimento e de ferramentas de como o obter. A ironia é que na era de que fazer perguntas e obter respostas nunca foi tão fácil, também é era de quanto mais preguiça ha. O aluno vira estagiário e acha que a empresa tem que o ensinar. Este conceito é absurdo. O estagiário sim tem que aprender, mas a empresa não tem o ônus de o ensinar. Muitas empresas e muitos profissionais se prestam a esse trabalho, mas não é um direito do estagiário. O dever do estagiário é aprender na faculdade e se isso não é suficiente -como já sabemos que não é -procurar se informar em fontes relevantes. E com relevantes quero dizer : livros que explicam a realidade técnica escritos por autores que sabem o que estão dizendo. A responsabilidade de remover o atraso, e desfasamento entre o que o estagiário sabe e o que precisa saber é do estagiário, não da empresa. Então ele tem que correr atrás. Tudo o que a empresa fizer para ajudar tem que ser encarado com um presente, não como um direito.
Mas este problema não acaba, nem começa, com os estagiários. Permeia todas as camadas. Têm não-estagiários que não estudam, não evoluem, não entendem, mas querem ser bem pagos mesmo assim. E também ha os estagiários que só querem um emprego e não querem aprender ou pior, acham que já sabem. Inocentes e ingratos.
O artigo original levanta também a questão de como a quantidade de desenvolveres aumentou , quase exponencialmente, dos anos 60 para cá e como isso dilui a qualidade do desenvolvedor. Nos anos 60 era necessário um PhD em Matemática, agora qualquer um sem preparação – sequer na área de ciências – pode virar programador. O tio Bob Martin já explicava isto 10 anos atrás. É o sinal dos tempos. Realmente o software é o centro da sociedade moderna e todas as empresas precisam lidar com isso, seja usando ou criando o software, as empresas precisas de desenvolvedores. E, como vimos as escolas não suprem a demanda – nem em quantidade e muito menos não em qualidade. O resultado é a proliferação de academias online que pegam seu dinheiro e vendem esperança que é insuficiente na prática porque o que se precisa é de pessoas que saibam pensar e não de pessoas que saibam ler documentação e escrever programas. Isso qualquer um sabe. De novo a culpa é das empresas que querem quantidade e não qualidade. O velho erro de achar que nove mães fazem um filho em 1 mês. As próprias empresas tem decisores que realmente não são capacitados a entender software e acham que é o mesmo que assentar pedra ou fazer pão. Não é mesmo. Trabalhos braçais requerem mais braços, trabalhos mentais requerem melhores mentes, não mais cérebros. A aposta das empresas deveria ser em qualidade, e já que a sociedade não a dá, então criá-la dentro. É por isso, que, por exemplo, a Goggle ficou conhecida e é respeitada pela comunidade de desenvolvedores. Quantas empresas você já passou que pediam conhecimentos de SOLID na vaga e na entrevista, mas que na prática nunca os usam ? Pois é… é tudo um jogo de faz de contra. As empresas fazem de conta que querem o correto – sem saber qual é – e as pessoas fazem de conta que sabem. Afinal, aldrabão que enganha aldrabão tem cem anos de perdão…
Então, o que pode ser feito ? Quanto a mim é necessário informar as pessoas do quão elas são ruins. Passar o pano, afagar, paternalizar e até mentir – não vai dar certo. Se a pessoa é ruim, ela tem que saber disso, para que possa aprender e evoluir. Eu sempre gostei dos professores que colocavam a fasquia lá em cima. É mais divertido ser desafiado do que viver enganado que você é o melhor. Mas, hoje isso se converteu num tabu. Não se pode falar do que está torto. Todos são os melhores ( o que que é uma impossibilidade lógica). Máximas imbecis como “não ha o certo”, são contrárias ao espirito cientifico e tecnológico. Sim ha o certo, sim ha o melhor : a terra não é plana! Em ciências o termo para isso é state-of-the-art. E quando descobrimos qual é, isso se chama evolução. Não me venham com conversas de que temos que aturar os adultos-criança coitadinhos. Não ha coitadinhos. Só ha pessoas que se vitimizam. Engraçado que quando a pessoa descobre que é ruim, a responsabilidade nunca é dela. É da faculdade, é da empresa onde está, é do chefe, é da sociedade… nunca dela. E veja que é verdade que a culpa é desses agentes, mas a responsabilidade de ser um bom profissional é sempre do próprio profissional. Afinal a mesma sociedade com as mesmas faculdades e empresas produz bom , maus e péssimos profissionais. Onde está o ingrediente que os diferencia ? Neles mesmos. Ha os que tomam a responsabilidade, e os que se vitimizam.
As empresas deveriam se responsabilizar também por manter pessoas sem talento nos seus quadros. Sabe aquela pessoa que está na empresa desde o inicio e sabe tudo sobre o software mas que anos depois ainda é a única pessoa que sabe tudo sobre o software ? Será que ninguém quis aprender ou ela não quis ensinar ? Ou a empresa é tão tapada que não conhece o conceito de bus factor ? Pessoas assim, sem capacidade de ensinar, com medo de perder poder, não são bons desenvolvedores. Aliás, não são bons profissionais. São embromadores. Estão enganando a empresa e contribuindo para inchá-la de más ideias e maus profissionais..
Ai as empresas cometem o pior pecado do mundo : promover a pessoa, criando um embromador profissional. O cara que é pago por enganar todo o mundo pelo tempo que conseguir enganar, mas agora recebendo mais. Este tipo de pessoas – ruins desenvolvedores que são promovidos – têm depois tendencia a nunca contratar pessoas de qualidade, pois elas vão acabar desmascarando os ruins, ou seja, eles. E se a empresa já conta com pessoas boas, elas serão retiradas. Ha muitas formas para isso. Algumas diretas, algumas subtis, mas todas de um nível raso de moralidade. As empresas são peões neste jogo pois a pessoa incompetente se usa da empresa e seus mecanismo para escorraçar quem pode lhe fizer frente. No fim a empresa não avança e não sabe por quê. Ai acha que tem que contratar mais pessoas (não melhores pessoas), mas o jogo já está viciado porque aquele mau profissional vai se assegurar que nunca entre alguém bom.
Se você é dono de uma empresas é bom sempre analisar quem está, e comparar com quem foi embora, especialmente se pediu para sair. Se quem fica é ruim e quem vai é bom, pode ser que sua empresa tenha um ou mais embromadores profissionais. Alguns podem até estar no nível da gerencia: os que eu gosto de chamar de gerentinos (gerentes-cretinos). Quando as pessoas vão embora, no Brasil, ha essa ideia de que não devem levantar onda, afinal o problema é de quem fica. Eu não acho que essa é uma atitude profissional. Os maus profissionais sempre têm que ser denunciados e removido para o bem da sociedade.São cânceres que devem ser extraídos. Se os seus empregadores enxergam isso ou não o problema é realmente deles, mas quem sai tem a obrigação moral de informar que está saindo por que a empresa colocou pessoas incompetentes como seus gerentes. Pessoas competentes não podem ser gerenciadas por pessoas menos competentes. Não faz sentido econômico pagar mais para quem sabe e faz menos e decide pior.
Se as empresas e seus RH se preocupassem mais com os fatos e os hard skill e em extrair embromadores e gerentinos dos seus quadros, a existência de maus desenvolvedores não seria um problema. Olhe para outras profissões. Em quais profissões é aceitável contratar e promover os ruins porque são bons de conversa e excluir os bons ? que eu saiba em nenhuma excepto software. Como na medicina dos seculos XVIII e anteriores que era pregada de pessoas com bom papo, que pareciam inteligentes – e eram , só para para as fraudes – mas eram sem noção , sem ciência, e com muito preconceito, assim é a engenharia de software hoje. E como sociedade ainda não aprendermos a nos proteger disso.Por isso que as empresas têm que se proteger pois são o agente onde esses maus desenvolvedores proliferam incólumes.
Resumindo. As pessoas tem responsabilidade em serem bons profissionais e isso tem que ser esperado e exigido, por toda a sociedade, especialmente pelos outros profissionais. As pessoas têm que parar de achar que a responsabilidade das suas carreiras é dos outros. As empresas têm que valorizar bons profissionais – o trigo – que não as enganam e parar de promover fraudes- o joio. As empresas têm que saber distinguir entre ambos e não ter dó de remover o joio. As empresas têm que entender que manter fraudes nos quadros é uma despesa sem retorno e que provoca outros problemas maiores além da falta de lucro e competitividade. Causa ambientes tóxicos e debandada de talento para a concorrência. Finalmente a sociedade e as faculdades têm que subir o nível, e os alunos e associações profissionais tem que exigir que o nível de exigência seja mais alto. O joio precisa ser filtrado logo no inicio, para que o trigo tenha mais facilidade de florescer e alimentar essa mesma sociedade.