O programador invisível
Tags: ptbr, braziliandevs
Published: 2021-06-18 14:13:34

---
title: O programador invisível
published: true
description: O programador invisível
tags: ptbr, braziliandevs
cover_image: https://devkico.itexto.com.br/wp-content/uploads/2014/04/Invisible-Man.jpg
---
_Texto escrito em 2014_

Quais os instrumentos que você usa para perceber o mercado de software? Revistas? Conferências como QCon, DevDay, etc? Blogs como este e tantos outros? Já parou para pensar que possívelmente a maior parte do mercado de software lhe seja completamente invisível? Vou te&nbsp;contar uma coisa: ele é, gera um valor muito maior do que imaginamos, está na nossa frente&nbsp;e simplesmente não conseguimos enxergá-lo. Hoje vou falar sobre os programadores invisíveis: aqueles que geram muito mais valor que todos nós juntos e não se preocupam em aparecer.

Conversando com diversos profissionais da área tenho a impressão de que estes apenas sabem da existência das plataformas que aparecem em revistas, sites e conferências: Java, .net, PHP, JavaScript, Python, Ruby. Me pergunto: e quanto ao pessoal do <a href="https://devkico.itexto.com.br/?p=135">COBOL</a>, que é responsável por processar <a href="http://blog.microfocus.com/news/cobol-the-language-for-future-generations/2470/">70% </a>de todas as transações mundiais? Cadê o povo&nbsp;do <a href="http://www.fortran.bcs.org/resources.php">Fortran</a>, ainda em amplo uso em aplicações científicas, HPC e tantos outros usos? E estas aplicações desktop que vêmos em padarias, bares, restaurantes, hospitais, lojas? E todo o código em execução hoje feito em <a href="http://blogs.msdn.com/b/johnrdurant/archive/2009/09/07/why-vba-still-makes-sense.aspx">VBA </a>em diversas empresas? Isto sem mencionar outras plataformas como Delphi (ainda em desenvolvimento e c<a href="http://www.embarcadero.com/products/delphi">ada vez mais interessante</a>), Visual Basic (pré .net (depois leia <a href="http://msdn.microsoft.com/en-us/magazine/jj133828.aspx">este texto</a>)), Microsoft Access (quase VBA), Perl (hoje quase não se fala mais sobre, mas ainda executa&nbsp;<strong>muita</strong> coisa <strong>importantíssima</strong>&nbsp;por aí), P<a href="http://www.sybase.com/products/modelingdevelopment/powerbuilder">ower Builder</a> (última versão saiu em 2011), <a href="http://www.alaska-software.com/products/xpp/xpp.shtm">Clipper</a>, <a href="http://msdn.microsoft.com/en-us/vfoxpro/">FoxPro</a> (morto pela Microsoft em 2007), PL/SQL, R (tão usado para cálculos estatísticos) e&nbsp;<strong>tantas&nbsp;</strong>outras plataformas?

Caminhando&nbsp;pelas ruas olho para os prédios e fico pensando na imensa quantidade de código gerado diáriamente que não é baseado em Java, .net, JavaScript, Python ou qualquer outra plataforma falada atualmente. São programadores que não veremos em revistas ou conferências: são pessoas que saem para trabalhar,&nbsp;<strong>geram valor real,&nbsp;</strong>movimentam a economia e vão tranquilamente para casa. Será que por serem ignorados (e muitas vezes se fazerem ignorados) não estamos perdendo uma oportunidade monstruosa de aprendermos lições valiosíssimas sobre arquitetura, boas práticas de desenvolvimento e toda a experiência acumulada na manutenção de sistemas legados?

Me sinto um privilegiado pelo fato da minha primeira experiência profissional de sucesso <strong>adulta</strong> ter sido em uma <a href="http://www.ecmsa.com.br">empresa de engenharia</a> e não em uma fábrica de software. Foi neste ambiente que pela primeira vez pude constatar a riqueza de linguagens e plataformas: Delphi, Fortran, Perl, C, COBOL, Lisp (AutoLisp), VB, VBA eram minhas ferramentas do dia a dia. Java e .net representavam o moderno e mesmo assim ainda se mostravam inferiores no quesito produtividade. Era fato: com o ferramental antigo nós simplesmente entregávamos o que precisava ser feito e ainda por cima era código que podíamos manter e mantinhamos por anos.

(a coisa melhorou bastante: não estou dizendo que Java ou .net não sejam produtivos)

Ao passar para fábricas de software e mencionar algo como Delphi ou VB não raro ouço frases de arrogância extrema como "graças a Deus nunca tive de mexer com isto". Perguntando a razão por este "graças a Deus" normalmente a resposta vêm sob a forma de um "são coisa ultrapassada", "não prestam", "são lixo", "ninguém usa" (!!!) etc. Logo em seguida as mesmas pessoas vão almoçar e tem seu pagamento registrado em algum sistema feito em Delphi (ou VB, PowerBuilder), vão ao banco tirar seu saldo em um caixa eletrônico que acessa um sistema COBOL e logo em seguida pesquisam algo na Internet em um site baseado em CGI. Isto sem mencionar os que criticam PHP e passam o dia inteiro no Facebook. Claro: há também aquele código em VBA embutido em uma planilha Excel usado para calcular seu salário no final do mês. Uma vingança bastante irônica.
<h3>Ignorando&nbsp;gigantes</h3>
<img class="alignright size-medium wp-image-1802" src="https://devkico.itexto.com.br/wp-content/uploads/2014/04/andre-the-giant4-156x300.jpg" alt="andre-the-giant4" width="156" height="300">Recentemente ouvi um <a href="http://www.se-radio.net/2011/07/episode-177-ibm-i-os400-operating-system-with-steve-will/">podcast fascinante</a> sobre a plataforma <a href="http://en.wikipedia.org/wiki/IBM_System_i">System i</a> da IBM, que foi lançada em&nbsp;1988. O choque veio&nbsp;quando o entrevistado (Steve Will) falou a respeito do conjunto de instruções usado pela plataforma: o <a href="http://wiki.midrange.com/index.php/ISeries">TIMI </a>(Technology Independent Machine Interface). Todo software que executa no System i (ou quase todo) é compilado para este conjunto de instruções. Mudou a arquitetura dos processadores (32 para 64 bits ou CISC pra RISC, por exemplo) não precisa recompilar nada: o TIMI, que é um formato intermediário simplesmente se adapta para a nova plataforma. Lembra alguma coisa? No .net se chama CIL, no Java se chama bytecode. Surgem respectivamente em 1996 e 2002. TIMI provávelmente existia bem antes disto. (alguém aqui lembra do P-Code do Visual Basic?)

O interessante é que a plataforma System i é extremamente popular, usada por diversos estabelecimentos nos EUA e restante do mundo e difícilmente ouvimos algo a respeito (eu a conheci neste podcast).

Outro exemplo interessante: sabia que o CODASYL de 1957, responsável por definir o COBOL, previa a execução de código gerado dinâmicamente? E que o <a href="http://bitsavers.trailing-edge.com/pdf/ibm/360/GC20-1667-1_intro360arch.pdf">System/360</a>, lançado em 1964 pela IBM já tinha recursos como máquinas virtuais, OCR e tantos outros que julgamos modernos hoje?

<img class="alignleft size-full wp-image-1803" src="https://devkico.itexto.com.br/wp-content/uploads/2014/04/IsaacNewton.jpg" alt="IsaacNewton" width="200" height="275">E ei: isto ocorre até nos dias atuais. Já leu meus dois posts (<a href="https://devkico.itexto.com.br/?p=1755">aqui </a>e <a href="https://devkico.itexto.com.br/?p=1768">aqui</a>) recentes sobre arquietura baseada em micro serviços nos quais mostro que estes na realidade são o SOA que já conhecíamos há anos mas cujo hype diminuiu nos últimos tempos?

De onde você acha que surgem idéias geniais como o bytecode Java, as máquinas virtuais da VM Ware e todos estes SGBDs&nbsp;que vêmos por aí? De onde você acha que o Oracle saiu (<a href="http://www.cs.berkeley.edu/~brewer/cs262/SystemR.pdf">Daqui</a>)?&nbsp;Fato é que esta nossa fixação no novo e ignorar do passado nos&nbsp;torna o "anti-newton": não vêmos além por ignorar os gigantes sobre os quais&nbsp;<strong>devíamos</strong> escalar os ombros.

Na minha opinião devíamos babar menos em cima do que nos vendem como novo e de vez em quando olhar para o prédio ou sala ao lado: muito provávelmente há um profissional&nbsp;<strong>entregando</strong>, gerando valor com tecnologias que vieram antes (e que funcionam perfeitamente bem) e aplicando soluções a problemas que&nbsp;ainda lutamos para entender (e nos vendem como novidade).

Baixar a cabeça e andar com estes gigantes discretos é sempre uma boa idéia. Estes não se preocupam em aparecer em conferências e blogs (normalmente&nbsp;não vão): enquanto discutimos sobre qual a melhor plataforma (Java ou .net, Node.js, Grails, Ruby) ou nos preocupamos em criar sistemas escaláveis que serão usados por no máximo uns 300 usuários/dia estes caras estão indo pra casa tranquilos por terem terminado seu trabalho.