AkitaOnRails, Retrospectiva 1985-2007
Alguns leitores comentaram que eu deveria fazer uma “auto-entrevista”. Falar de mim mesmo é estranho, mas falsa humildade nunca foi meu forte. Em vez de entrevista, resolvi fazer uma retrospectiva. Não chega a ser uma biografia completa, claro, são só alguns pontos-chave dos meus últimos 22 anos (antes disso eu ainda não sabia ler direito :-)
Talvez seja nostálgico para alguns, o que é sempre bom. Para os mais novos, talvez sirva para mostrar que currículo não se faz só com certificados. Experiência depende de tempo, muito tempo, mas quantidade de tempo não é sinônimo de qualidade. Tudo depende de juntar o que você realmente quer com o que você realmente gosta. Não é para todo mundo, mas quem tem esse instinto sabe do que estou falando.
O caminho é longo e sem fim, então nunca diga “já sei tudo que preciso”. Você nunca saberá tudo que precisa. Aprender é um processo diário, hora após hora: um pouco durante o trabalho, muito mais fora dele.
Quem sabe o que está fazendo não está nem aí para o que os outros dizem ou fazem. Você apenas faz o que sabe (não o que “acha”) ser o melhor caminho. Certo e errado é cara ou coroa: na média, você acerta 50% das vezes, como todos os outros. O “caminho certo” se define analisando os fatos que você conhece. Aprendeu algo novo? Refaça a análise e revise o caminho.
Dogmas são inúteis. Mantenha-se racional e disciplinado e suas chances aumentam. Nunca feche as próprias portas: seja seletivo no que aprender, mas não descarte opções por preconceito.
Faça o que gosta. É chavão, eu sei, mas é a única coisa que funciona. Meu currículo não começou no meu primeiro emprego: dediquei a vida inteira a isso, desde que me entendo por gente, e nunca tive plano B. Você não precisa ser assim, e isso não significa que eu saiba muito. Conheço muita gente mais nova, que começou há menos tempo e já sabe bem mais que eu.
Outro dia disse a um amigo: “somos todos alvos móveis”. Se você tem um ídolo, é porque ele é algo que você gostaria de ser. Você corre nessa direção e, quando chega ao nível que queria, seu ídolo já correu algumas léguas a mais. E lá vai você correr atrás de novo.
De novo: não existe receita, não existe guia passo a passo. Nem todos podem ser pintores, estilistas ou jornalistas. Eu definitivamente não sou bom cozinheiro, dificilmente serei bom marceneiro e com certeza nunca serei músico. Ninguém deveria escolher uma ocupação só pelo que paga melhor hoje. E amanhã?

Em 1985 fui inspirado pela primeira vez por uma revista em quadrinhos: uma edição especial da Disney chamada, se não me engano, A História dos Computadores. Se alguém ainda tiver, com o encarte central e em bom estado, estou interessado em comprar! Guiado pelo Prof. Pardal e pelo Prof. Ludovico, conheci Charles Babbage, Blaise Pascal, Konrad Zuse e outros nomes que nunca esqueci. Me considero um “arqueólogo da computação” desde essa época e volto ao assunto até hoje, por enciclopédias, livros e artigos. Meu sonho de consumo era um Unitron, o clone nacional do Macintosh original, recém-lançado.

Em 1987 meu primo tinha um MSX Hotbit e eu queria brincar com os jogos dele. Aprendi um pouco de Basic para dar load nos jogos em cassete. Minha leitura preferida era a revista Micro Sistemas, e Assembler ainda era inatingível para mim. Meu sonho de consumo era um CP-500 que um conhecido tinha. Tentei ler um livro de eletrônica, mas era demais para mim: nunca fui bom nisso. Estava só começando a entender o que significava “expandir RAM”.
Havia muitos micros legais nessa época. Hoje todo mundo admira os celulares novos nas vitrines; na minha época eu ficava nas vitrines dos clones de Apple II, do MSX da Gradiente, do Sinclair, do TK-90X, do CP-400. Eram caros demais para eu ter um, então só me restava imaginar as máquinas lendo as especificações técnicas.
Em 1988 fiz um curso de GW-Basic. Não tinha computador, mas aprendi a programar no papel. Também tive meu primeiro contato com pérolas da época como Wordstar e Lotus 1-2-3. Acho que foi por aí que comecei a ficar viciado em videogames: já tinha um Intellivision e finalmente ganhei um Master System!

Em 1989 ganhei meu primeiro PC-XT e aprendi dBase III e Clipper Summer 87. Tinha dois tios que programavam desde o Autumn 86. Foi quando escrevi minha primeira apostila, que de original não tinha nada: eu copiava textos de livros e enciclopédias só porque gostava de treinar datilografia. Graças a isso hoje chego a 400 tpm (toques por minuto), além de algumas dores estranhas nas mãos :-) Antes do XT, meu hobby era copiar textos na boa e velha Olivetti; com o teclado de computador, bem mais leve, meus dedos agradeceram. Desde o ano anterior minha leitura favorita era a saudosa revista Micro Sistemas, uma das poucas opções de qualidade na época.
Em 1990 fiz bicos com meu tio, que era analista de sistemas. Fiz vários sisteminhas em Clipper 5.0 e FoxPro, bons tempos de Ashton-Tate e Nantucket. Criei meu próprio editor de textos em Clipper, mas não fui páreo para o bom e velho Norton Editor aliado ao Sidekick. Havia poucas opções de linguagens e dava para passar meses numa só. Infelizmente nunca me interessei muito por linguagens de baixo nível como Assembler e C: li alguns livros, mas nunca pratiquei. Grave erro.
Em 1991 comecei a brincar de BBS com meu vizinho. Fui apresentado aos poderes do Pascal, ainda só olhando de longe. Bons tempos de FidoNet, PCBoard, Remote Access, Warez, blue box e afins. Muito antes da era do Orkut e do MSN, eu já gastava horas a fio em message boards. Meu sonho de consumo era conseguir rodar o Windows 3.1 no meu XT com monitor CGA verde.

Em 1993 trabalhei como apresentador de jogos na Brasoft Games durante as férias. Foi interessante porque tive acesso aos “MPC”, os PCs multimídia com CD-ROM e placa de som, itens opcionais e caros na época. Nunca vou esquecer as pérolas da LucasArts, como Day of the Tentacle. Nada a ver com programação, mas foi importante para o meu senso de estética e de possibilidades. Obras-primas da época? Wolfenstein e Doom, os originais, claro.

Em 1993 (ou teria sido 1992?) eu gostava de desenhar. Brinquei de ilustrador até mais ou menos 1998, quando desisti de vez. Nesse ano queria fazer ilustrações para uma revista de games (já disse que eu era viciado?). Levei meu portfólio ao editor e ele recomendou que eu aprendesse a ilustrar por computador, porque eu só tinha desenhos à mão livre. Voltei para casa e no mesmo dia comprei um livro de CorelDraw! 3.0, um calhamaço da editora Berkeley que lembro até hoje. Algumas semanas depois voltei com um portfólio novo, todo em CorelDraw!. Fiz ilustrações para umas seis edições, escrevi um artigo, colaborei aqui e ali, e desisti: não era minha vocação. Mas as noções de curvas de Bezier e vetorização ainda seriam úteis quando resolvi aprender Flash.
Em 1994 fiz minha única pausa dos hobbies e dos computadores: ano de vestibular. Estudava pelo menos 8 horas por dia, 7 dias por semana. Estabeleci objetivos, planejei e passei. Nunca tive segunda opção, então só me restava passar de primeira: USP e Unicamp, no mínimo, eram obrigação. Foi a grande lição desse ano: estabeleça objetivos, trace o plano, siga cada passo corrigindo a rota no caminho, mas não pare.

Em 1995 entrei na USP. No primeiro semestre tive que entregar trabalhos em Turbo Pascal e fiz meu primeiro framework, um toolkit gráfico para Pascal, além de alguns truques de fractais. Finalmente entendi a importância das décadas anteriores da computação e virei fã de Donald Knuth e Niklaus Wirth.
Ganhei minha primeira conta de acesso à internet, com um porém: só via terminal Unix. Tive que aprender Unix para usar a internet. Gopher, Lynx, Pine, bons tempos. Foi também a primeira vez que lidei com uma grande deficiência: meu péssimo inglês. Quando vi que alguns colegas da faculdade eram bons, decidi que não podia ficar para trás (e daí nasceu o artigo Seja Arrogante!). Era uma época pré-Google: eu usava as primeiras versões do Yahoo!, do WebCrawler, até a Amazon (que era feinha).
Este também foi o ano em que mais esperei por um software: o Windows 95. Li tudo que encontrei a respeito e nunca destrinchei tanto um sistema operacional; na verdade, desde o DOS 3.1 eu explorava cada canto e cada beco. Também estava empolgado com o novíssimo OS/2 Warp, uns 20 disquetes de 3,5", se não me engano! Rodar o Windows 3.1 virtualizado no OS/2 era incrível, a mesma sensação que tive anos depois ao rodar o Windows XP virtualizado no meu OS X pela primeira vez. Foi por causa desses assuntos que finalmente me interessei por arquitetura de sistemas e pela evolução dos sistemas operacionais.
Em 1996 fiz um bico num sisteminha para Windows 3.1 (eu sei, eu sei). Aprendi Delphi 1.0, lançado um ano antes. Eu já era fã de Turbo Pascal, então o Object Pascal foi natural: meu primeiro passo rumo à “moda” da época, a tal Orientação a Objetos. O UML apareceu nessa época, mas antes dele eu já bisbilhotava as metodologias originais: Booch, Objectory, Fusion. Sempre achei o assunto meio chato.
Também comecei a aprender Java 1.0, depois de baixar os betas no FTP da Unicamp. Mas o AWT não me pareceu bom o suficiente e continuei com o Delphi. Estranho pensar nisso hoje: naquela época a Borland parecia tão grande.
Fiz alguns sites pessoais sobre meus hobbies. Pois é, já fui fanático por animes e mangás, e fiz meu primeiro site de “sucesso”, entre aspas mesmo, porque eu causava polêmica até nos meus hobbies. Não havia nada em português sobre o assunto, então traduzi mangás e fiz legendas de anime. Sei japonês desde criança, o que ajudou, e não é de hoje que faço traduções :-) Fazendo sites pessoais, destrinchei todos os truques possíveis da época só com HTML, JavaScript e muito Photoshop. Brinquei um bocado com redes Windows for Workgroups e OS/2 1.3.

Em 1997 comecei a trabalhar numa produtora multimídia. Evoluí no web design, pude trabalhar com Macs (no saudoso System 8) e tive que aprender Director 5/Lingo e Flash 2/ActionScript. Desenvolver aplicações interativas em Director num Pentium 200 MHz com 32 MB de RAM não era exatamente confortável, mas era divertido. Perdi a conta de quantas vezes dormi no chão da empresa esperando arquivos gravarem em Zip drives, ou CDs queimando a 2x.
Nessa época o Linux já era bastante famoso. Fiz minhas primeiras tentativas de evoluir meu Unix com um RedHat 4.2, cuja caixinha azul com o logo vermelho nunca vou esquecer. Alguns anos antes eu tinha tentado o Slackware 1.0, mas desisti depois de instalações frustradas, hardware incompatível e problemas de drivers.
Em 1998 tive meu primeiro contato com server-side: Microsoft Index Server, SQL Server 6.5 e ASP. Não foi muito divertido, mas pelo menos aprendi bastante SQL. Newsgroups sempre foram meu ponto de apoio, e o site DejaNews foi um achado: uma coletânea indexada da Usenet, que hoje se chama Google Groups. Meu uso desse tipo de serviço caiu bastante. Será que a qualidade caiu junto?

Em 1999 tive que desenvolver sites em PHP e alguns scripts em Perl para Apache. Aprendi expressões regulares na marra: eu já deveria saber Regex, então aprendi de uma vez, e hoje faz muita diferença. Tive que evoluir no Linux e em todo o ferramental em volta, e felizmente o RedHat 7 da época já era muito bom. Fiz várias brincadeiras com protocolos e entendi a importância de conhecê-los. Não lembro como nem por quê, mas foi quando virei leitor assíduo do Slashdot, minha leitura diária, religiosamente, desde então.
Em 2000 tive que desenvolver um site em Zope/Python. Sempre imaginei que aquele sistema, com os conceitos de ZODB, Products e DTML, tinha potencial para crescer muito. Cresceu, mas não como eu imaginava. Hoje acho o Plone legal, mas com a sensação de que perdeu a janela de mercado. Foi meu primeiro contato com Python e a primeira vez que ouvi falar de uma linguagem chamada Ruby, à qual não dei importância na época.
Em 2001 tive que desenvolver vários sites e sistemas com ASP e outras tecnologias Microsoft, como VB e DCOM (é preciso respeitar o Don Box). Lidar com limitações é sempre um excelente caminho para evoluir: quando se tem muito, se esbanja; quando se tem pouco, se aprende a otimizar. Gerar componentes DCOM usando VBScript era divertido. Eu fazia muito “Ajax”, só que na época não se chamava assim (MSXML e DHTML já existiam), e muitos “Web Services”, que também ainda não tinham esse nome (HTTP e XML já existiam, claro). Impressionante como meia década depois essas coisas voltam com outros nomes e todo mundo acha que é novidade.
O .NET parecia muito legal na Beta 1, e lembro de ter feito um framework para ASP com conceitos do ASP.NET. Pode parecer estranho pular do mundo Linux do ano anterior de volta para o Windows Server. Nunca entendi por que, para gostar de uma coisa, você “precisa” criticar a outra. Minha função sempre foi uma só: resolver problemas dentro das restrições que me apresentavam, independente de tecnologia e plataforma. Ponto final.
Em 2002 precisei integrar um sistema em ASP com outro em SAP R/3, então tive que aprender ABAP. O livro “Aprenda ABAP/4 em 24 horas” durou, na verdade, 48 horas. Conhecer os conceitos de DCOM e CORBA fez bem: eu já sabia o que era RFC e como lidar com ambiente distribuído. Daqui começa minha “carreira” de garoto de programa (também conhecido como “consultor”): muito trabalho, pouco valor agregado. Meu aprendizado teve altos e baixos nos anos seguintes, e meu ritmo caiu até 2006.
Em 2003 precisei desenvolver sistemas em SAP Portal e Java, e aprendi coisas como Hibernate e Struts. Sem acesso ao código-fonte do servidor Java da SAP, só me restava descompilar as classes e explorar. Também tive que fazer um celular se comunicar com sistemas SAP, codificando os protocolos na unha. Depois dessa escovação de bits, nunca mais esqueci a diferença entre Big Endian e Little Endian, nem como é chato lidar com o protocolo iDEN. Lidei com criptografia e reforcei minhas noções de segurança, encriptação e autenticação. Nunca é demais ser paranoico.
Em 2004 precisei de um sistema de versionamento e aprendi Subversion. Nunca tive boa impressão do CVS. O Subversion ainda era beta, cheio de bugs, e cheguei a fazer um patch para o TortoiseSVN funcionar com o Visual Studio .NET, mas eu sentia que o SVN seria grande. Felizmente, estava certo. Acho que foi o ano em que mais programei Java: cacei todo tipo de bug no SAP Portal recém-lançado, criei um framework produtivo sobre o ruim que vinha com o produto e fiz muita integração com sistemas R/3.
Em 2005 precisei integrar sistemas de telecomunicação e aprendi um pouco de Tuxedo/C++. ESB, SOA e outros acrônimos do tipo se provaram bullshit de vendedor, como eu sempre disse. Comunicação e integração nunca foram novidade: trocar o nome para parecer novo não ajuda. EAI é uma das coisas mais velhas do mundo; desde que o segundo computador foi criado, integração já existia. Nessa época eu cutucava o mundo de gerência de projetos e me convenceram a me certificar como PMP. Perda de tempo: me certifiquei, mas nunca gostei do método. Passei um tempo estudando CMMi e outras metodologias e perdi o interesse rápido. Já sei que não tenho vocação para muita conversa.

Em 2006 tive que lidar com mais sistemas de telecomunicação, agora com webMethods. Mais “SOA”, mais “XML”, sem problemas. Por que todo mundo sofre para integrar sistemas híbridos? Quem sabe SAP não sabe webMethods, quem sabe webMethods sabe pouco Java, quem sabe Java não conhece os outros dois. Tudo falta de vontade.
Em paralelo, Rails entrou na jogada e lá fui eu escrever um livro. Impressionante como a coisa estourou lá fora e ninguém aqui deu a devida atenção. É o velho problema do ovo e da galinha: o programador não aprende porque não tem mercado, o mercado não se interessa porque não tem programador. Um dos lados tem que dar o primeiro passo. Os americanos são peritos em dar primeiros passos; nós somos doutores em esperar o tempo passar. Mas eu nunca dei atenção aos outros. Um mês e meio escrevendo quase me deixou louco, dormir 4 horas por noite não é normal. O livro saiu, o blog está aqui e, mais importante, eu aprendi muito. Felizmente mais gente está se interessando pelo assunto. Quem sabe em breve a gente ultrapasse o ponto de inflexão entre número de profissionais e interesse do mercado.
Finalmente, em 2007 eu estava cansado da consultoria e dos clientes. Fazer vista grossa a coisas idiotas nunca foi do meu feitio. Abandonei quem nunca me apoiou de verdade e resolvi voar solo. Se algum dia ouvirem a palavra “Balance”, corram! Falo sério! Mas boas coincidências acontecem: depois de quase um ano e meio falando sobre Rails, finalmente pude trabalhar com isso em tempo integral.
E aí vem a questão: o que me contrataram foi o resultado dos últimos 22 anos. O ano de Rails pesou pouco.
Espero que isso tenha atiçado a curiosidade de todos. As biografias do pessoal que entrevistei ultrapassam muito a minha, e conheci várias pessoas com histórias bem melhores. A minha, por ora, está razoável.
Como disse antes, também sou um alvo móvel. Amanhã estarei escrevendo a retrospectiva de 2007, 2008, 2009. Ano que vem saberei muitas coisas que não sei hoje, e não por acidente: todo mundo aprende algo novo, a menos que seja um vegetal. Estou falando de esforço consciente para aprender.
Não vou estagnar no Ruby, por mais que goste dele. Não importa se a novidade vem do mundo open source, da Apple, da IBM ou da Microsoft: temos que observar tudo. Um cozinheiro com 10 anos de casa que só sabe fazer a mesma meia dúzia de pratos é um autômato, não um mestre. Dez ou vinte anos não fazem diferença. E autômatos são facilmente substituíveis.