aguarde...

27 de outubro de 2020

Por que os desenvolvedores de software podem estar obsoletos em 2030

Por que os desenvolvedores de software podem estar obsoletos em 2030

Em 1930, John Maynard Keynes  previu  que teríamos semanas de trabalho de 15 horas no final do século. Mas quando chegamos em 2013, estava claro que o grande economista havia entendido algo errado.

Bem-vindo à era dos empregos de merda , como o antropólogo David Graeber cunhou. Desde a década de 1930, surgiram novas indústrias, que não necessariamente agregam muito valor às nossas vidas. Graeber provavelmente chamaria a maioria dos empregos de besteira de desenvolvimento de software.

Não compartilho da opinião de Graeber, especialmente quando se trata de software. Mas ele toca em um ponto interessante: à medida que mais e mais processos são automatizados, a maioria dos trabalhos fica obsoleta em algum ponto. De acordo com uma estimativa, 45% de todos os trabalhos poderiam ser automatizados com a tecnologia atual. E com o tempo, provavelmente o farão.  

No desenvolvimento de software, onde as coisas acontecem muito rápido de qualquer maneira, você pode ver isso acontecer em tempo real: assim que o teste de software se tornou um assunto quente, ferramentas de automação começaram a surgir. E esta é apenas uma das muitas áreas onde as partes besteiras – as partes que são iterativas e demoradas – do software foram automatizadas.  

Isso levanta a questão, no entanto, se os desenvolvedores estão se tornando obsoletos ao construir ferramentas de automação. Se mais e mais máquinas podem escrever código para si mesmas, para que precisamos de humanos?  

De projetar lógica a projetar mentes

Os desenvolvedores de software são construtores de coração. Eles constroem links lógicos, algoritmos, programas, projetos e muito mais. A questão é: eles constroem coisas lógicas.

Com o surgimento da inteligência artificial, estamos vendo uma mudança de paradigma. Os desenvolvedores não estão mais criando links lógicos. Em vez disso, eles estão treinando modelos na heurística desses links lógicos.

Muitos desenvolvedores passaram da construção de lógica para a construção de mentes. Em outras palavras, mais e mais desenvolvedores de software estão assumindo as atividades de cientistas de dados.

Os três níveis de automação

Se você já usou um IDE, sabe como o desenvolvimento de software assistido pode ser incrível. Depois de se acostumar com recursos como preenchimento automático ou pesquisa de código semântico, você não vai querer ficar sem eles novamente.

Esta é a primeira área de automação no desenvolvimento de software. À medida que as máquinas entendem o que você está tentando implementar, elas podem ajudá-lo no processo.

A segunda área é a dos sistemas fechados. Considere um aplicativo de mídia social: consiste em muitas páginas diferentes vinculadas entre si. No entanto, está fechado na medida em que não foi projetado para se comunicar diretamente com outro serviço.

Embora a tecnologia para construir tal aplicativo esteja ficando cada vez mais fácil de usar, não podemos falar de automação real ainda. A partir de agora, você precisa ser capaz de codificar se quiser criar páginas dinâmicas, usar variáveis, aplicar regras de segurança ou integrar bancos de dados.

A terceira e última área é a dos sistemas integrados. A API de um banco, por exemplo, é esse sistema, pois foi construída para se comunicar com outros serviços. Neste momento, entretanto, é praticamente impossível automatizar integrações ATM, comunicações, modelos de mundo, segurança profunda e problemas complexos de solução de problemas.

O mundo através dos olhos de um computador

Quando questionados se serão substituídos por um robô no futuro, os trabalhadores humanos geralmente não pensam assim. Isso se aplica ao desenvolvimento de software, bem como a muitas outras áreas.

O motivo é claro: qualidades como criatividade, empatia, colaboração ou pensamento crítico não são o que os computadores fazem.  

Mas, muitas vezes, não é isso que importa para fazer um trabalho. Mesmo os projetos mais complexos consistem em muitas pequenas peças que podem ser automatizadas. O cientista da DeepMind Richard S. Sutton  coloca  assim:

Os pesquisadores buscam alavancar seu conhecimento humano do domínio, mas a única coisa que importa no longo prazo é o aproveitamento da computação.

Não me entenda mal; as qualidades humanas são incríveis. Mas estamos superestimando a importância desses problemas quando se trata de tarefas regulares. Por muito tempo, por exemplo, até pesquisadores acreditaram que as máquinas nunca seriam capazes de reconhecer um gato em uma foto.

Hoje em dia, uma única máquina pode categorizar bilhões de fotos de uma vez e com uma precisão maior do que um ser humano. Embora uma máquina possa ser incapaz de se maravilhar com a fofura de um gatinho, ela é excelente para trabalhar com estados indefinidos. Isso é o que a foto de um gatinho é através dos olhos de uma máquina: um estado indefinido.

Rumo a novos coletores e escalas

Além de trabalhar com estados indefinidos, há duas outras coisas que os computadores podem fazer com mais eficiência do que os humanos: em primeiro lugar, fazer coisas em escala. Em segundo lugar, trabalhando em novos coletores.

Todos nós já experimentamos como os computadores funcionam bem em escala. Por exemplo, se você perguntar a um computador para  dois -hundred vezes, ele irá fazê-lo sem se queixar, e completar a tarefa em uma fração de segundo. Pergunte a um humano e você precisará esperar horas para fazer o trabalho … print("I am so stupid")

Os manifolds são basicamente uma maneira sofisticada ou matemática de se referir a subconjuntos de espaço que compartilham propriedades específicas. Por exemplo, se você pegar um pedaço de papel, isso é uma variedade bidimensional no espaço tridimensional. Se você amassar o pedaço de papel ou dobrá-lo em um plano, ainda será um coletor.

Acontece que os computadores são realmente bons para trabalhar em variedades que os humanos acham difícil de visualizar, por exemplo, porque se estendem para vinte dimensões ou têm muitas dobras e arestas complicadas. Uma vez que muitos problemas cotidianos, como linguagem humana ou código de computador, podem ser expressos como uma variedade matemática, há muito potencial para implantar produtos realmente eficientes no futuro.

Desenvolvimentos atuais

Pode parecer que os desenvolvedores já estão usando muitas automações. Mas estamos apenas no auge da automação de software. Automatizar sistemas integrados é quase impossível hoje. Mas outras áreas já estão sendo automatizadas.

Por um lado, as revisões de código e depuração podem em breve ser uma coisa do passado. A empresa suíça  DeepCode  está trabalhando em uma ferramenta para identificação automática de bugs. A DeepMind do Google   já pode recomendar soluções mais elegantes para o código existente. E o Aroma do Facebook pode preencher automaticamente pequenos programas por conta própria.  

Além do mais, o Machine Inferred Code Similarity System, abreviação de MISIM , afirma ser capaz de entender código de computador da mesma forma que Alexa ou Siri podem entender a linguagem humana. Isso é empolgante porque tal sistema pode permitir que os desenvolvedores automatizem tarefas comuns e demoradas, como enviar código para a nuvem ou implementar processos de conformidade. 

Horizontes emocionantes

Até agora, todas essas automações funcionam bem em projetos pequenos, mas são inúteis em projetos mais complexos. Por exemplo, o software de identificação de bug ainda está retornando muitos falsos positivos, e o preenchimento automático não funciona se o projeto tiver um objetivo muito novo.  

Como o MISIM não existe há muito tempo, o júri ainda está decidido sobre essa automação. No entanto, você precisa ter em mente que isso é o começo e espera-se que essas ferramentas se tornem muito mais poderosas no futuro.

Aplicativos em breve

Algumas das primeiras aplicações dessas novas automações podem incluir o rastreamento da atividade humana. Isso não significa um software espião, é claro; em vez disso, coisas como programar as horas de um trabalhador ou individualizar as aulas para um aluno podem ser otimizadas dessa forma.

Isso, por si só, apresenta enormes oportunidades econômicas porque os alunos podem aprender as coisas importantes com mais rapidez e os trabalhadores podem servir durante as horas em que são mais produtivos.

Se o MISIM for tão bom quanto promete, também pode ser usado para reescrever o código legado. Por exemplo, muitos softwares bancários e governamentais são escritos em COBOL , o que dificilmente é ensinado hoje. Traduzir esse código para uma linguagem mais recente tornaria sua manutenção mais fácil. 

Por que os desenvolvedores de software podem estar obsoletos em 2030
Ser um desenvolvedor de software continuará sendo emocionante por muito tempo. Foto de Brooke Cagle no Unsplash

Então, como os desenvolvedores e corporações podem ficar à frente da curva?

Todos esses novos aplicativos são empolgantes. Mas acima deles paira uma grande espada de Dâmocles: e se a concorrência fizer uso dessas automações antes de você pegar? E se eles tornarem os desenvolvedores totalmente obsoletos?

Investir em entrega contínua e testes automatizados

Essas são certamente duas palavras-chave no mundo da automação. Mas eles são importantes mesmo assim.

Se você não testar seu software antes do lançamento, pode estar comprometendo a experiência do usuário ou encontrar problemas de segurança no futuro. E a experiência mostra que o teste automatizado cobre casos nos quais os testadores humanos nem sequer pensaram, embora possam ter sido cruciais.

A entrega contínua é uma prática que cada vez mais equipes estão adotando, e por um bom motivo. Quando você agrupa muitos e muitos recursos e apenas lança uma atualização, digamos, uma vez a cada três meses, costuma passar os próximos meses consertando tudo o que foi quebrado no processo. Essa forma de trabalhar não apenas é um grande obstáculo para o desenvolvimento rápido, mas também compromete a experiência do usuário.  

Há muitos softwares de automação para teste e controle de versão (e muitos outros frameworks) para entrega contínua. Na maioria dos casos, parece melhor pagar por essas automações do que construí-las você mesmo. Afinal, seus desenvolvedores foram contratados para construir novos projetos, não para automatizar tarefas chatas.  

Se você for um gerente, considere essas compras um investimento. Ao fazer isso, você está apoiando seus desenvolvedores da melhor forma possível, porque está capitalizando no que eles realmente fazem.

A mudança para a esquerda: incluindo desenvolvedores nas fases iniciais de cada projeto

Muitas vezes, os projetos são criados em algum lugar da alta gerência ou próximo à equipe de P&D e, em seguida, são repassados ​​até chegarem à equipe de desenvolvimento – que então tem a tarefa de tornar a ideia do projeto real.

No entanto, como nem todo gerente de projeto também é um engenheiro de software experiente, algumas partes do projeto podem ser implementadas pela equipe de desenvolvimento, enquanto outras seriam caras ou praticamente impossíveis.

Essa abordagem pode ter sido legítima no passado. Mas, como muitas das partes monótonas do desenvolvimento de software – sim, essas partes existem! – estão sendo automatizados, os desenvolvedores estão tendo a chance de se tornarem cada vez mais criativos.

Esta é uma excelente oportunidade para mover os desenvolvedores para a esquerda, ou seja, envolvendo-os nas etapas de planejamento de um projeto. Não apenas para saberem o que pode e o que não pode ser implementado. Com sua criatividade, eles podem agregar valor de maneiras que não são imagináveis ​​a priori.

Faça do software uma prioridade máxima

Já se passaram cinco anos desde que Satya Nadella, da Microsoft, proclamou que “todo negócio será um negócio de software”. Ele estava certo.  

Não apenas os desenvolvedores devem mudar para a esquerda na gestão. O software deve mudar de prioridade.

Se a atual pandemia lhe ensinou alguma coisa, então é que grande parte da vida e da criação de valor acontece online hoje em dia.

O software é rei. Paradoxalmente, isso se torna mais aparente quanto mais automatizado.

Por que os desenvolvedores de software podem estar obsoletos em 2030
A automação está transformando nerds de software em líderes. Foto de Christina @ wocintechchat.com no Unsplash

Resumindo: geeks estão se tornando líderes

Quando eu estava na escola, as pessoas que gostavam de computadores eram consideradas crianças anti-sociais, nerds, geeks, criaturas desagradáveis ​​e seres semelhantes a zumbis, desprovidos de sentimentos e paixões humanas. Eu realmente gostaria de estar exagerando.

Quanto mais o tempo está passando, no entanto, mais pessoas estão vendo os outros lados dos desenvolvedores. Pessoas que programam não são mais consideradas nerds, mas sim pessoas inteligentes que podem construir coisas legais.

O software está ganhando mais poder quanto mais está sendo automatizado. Nesse sentido, seu medo de perder seu emprego de desenvolvedor devido à automação é amplamente infundado.

Claro, em uma década – em alguns meses até – você provavelmente estará fazendo coisas que nem pode imaginar agora. Mas isso não significa que seu emprego irá desaparecer. Em vez disso, ele será atualizado.

O medo de que você realmente precisa vencer não é perder o emprego. O que você precisa para livrar-se do medo do desconhecido.

Desenvolvedores, vocês não ficarão obsoletos. Vocês simplesmente não serão nerds por muito mais tempo. Em vez disso, você se tornará líder.

Postado em Blog
Escreva um comentário