Então o senhor quer ser um programador

Não era minha intenção que o Por favor, não aprenda a programar para ser tão polêmico, mas parece que o senhor ficou irritado. Aparentemente, uma porcentagem significativa de leitores parou de ler no título.

Portanto, vou começar com minha própria história. Acho que os senhores a acharão instrutiva.

Minha mãe me disse uma vez que a única razão pela qual ela namorou meu pai foi porque a mãe dela disse a ela para ficar longe daquele rapaz, pois ele é uma má influência.

Se ela tivesse feito isso, eu não existiria.

História verdadeira, pessoal.

Eu diria que as pessoas que precisam de aprender a codificar será estimulada principalmente pela honestidade, não pela fé religiosa na veracidade do código como um bem universal. O senhor deve conhecer os dois lados da história, porque não há balas de prata no código. Se, depois de ouvir os prós e os contras, o senhor ainda quiser aprender a programar, então, por favor aprender a programar. Se o senhor é tão facilmente dissuadido ao ouvir algumas desvantagens da codificação, há muitas outras coisas que poderia passar seu tempo aprendendo que são mais inequivocamente úteis e práticas. De acordo com Michael Lopp, o senhor poderia aprender a ser um comunicador melhor. Segundo Gina Trapani, o senhor poderia aprender a propor soluções melhores. Slinging code é apenas uma pequena parte da solução geral na minha experiência. Por que otimizar para isso?

Nos primeiros computadores, todos os tinham ser um programador porque não havia software. Se quisesse que o computador fizesse alguma coisa, o senhor escrevia um código. No passado não tão distante, os computadores eram inicializados diretamente no cursor piscante amigável de um interpretador BASIC. Vejo todo o arco do desenvolvimento de software como um campo em que nós, programadores, passamos nossas vidas escrevendo códigos para que nossos colegas seres humanos não mais precisem escrever código (ou pior ainda, tornar-se programadores) para fazer as coisas com os computadores. Portanto, essa ideia de que “todos devem saber codificar” é, para mim, um retrocesso.

Grace-hopper-and-the-univac

Apoio totalmente a promoção da alfabetização básica na Internet. Mas, para ser um motorista competente, será que todos precisam saber, em detalhes, como funciona seu automóvel? Será que devemos ensinar a todos os seres humanos o básico para ser um mecânico de automóveis e elevar as aulas de oficina ao mesmo nível das aulas de inglês e matemática? Saber como trocar um pneu e quando levar o carro para trocar o óleo não é suficiente? Se o seu vaso sanitário está entupido, o senhor não deveria precisar fazer um curso aprofundado de encanamento de duas semanas sobre toiletcademy.com para entender como corrigir isso. Leitura de uma única página da Web, bem a tempodeve ser mais do que adequado.

O que é código, no sentido mais abstrato?

code (kōd) …

    1. Um sistema de sinais usado para representar letras ou números na transmissão de mensagens.
    2. Um sistema de símbolos, letras ou palavras com determinados significados arbitrários, usado para transmitir mensagens que exigem sigilo ou brevidade.
  1. Um sistema de símbolos e regras usado para representar instruções para um computador…

The American Heritage Dictionary of the English Language (Dicionário da Herança Americana da Língua Inglesa)

São cartões perfurados? Terminais remotos? Emacs? Textmate? Eclipse? Visual Studio? C? Ruby? JavaScript? Na década de 1920, era considerado importante aprender a usar réguas de cálculo. Na década de 1960, era considerado importante aprender desenho mecânico. Nada disso importa hoje. Hesito em recomendar qualquer abordagem específica de codificação que não seja os fundamentos descritos em Code: The Hidden Language of Computer Hardware and Softwareporque não tenho certeza se reconheceremos a codificação nos próximos 20 ou 30 anos. Para as crianças de hoje, talvez a codificação venha a se assemelhar ao Minecraftou Construindo níveis em Portal 2.

Mas todos deveriam tentar escrever um pouco código, porque de alguma forma aguça a mente, certo? Talvez da mesma forma abstrata que o a leitura de toda a Enciclopédia Britânica do começo ao fim faz. Sinceramente, eu preferiria que as pessoas gastassem seu tempo descobrindo quais problemas elas amam e acham interessantes, em primeiro lugar, e pesquisando o máximo sobre esses problemas. A coisa mais difícil na vida não é aprender um monte de coisas potencialmente úteis, mas descobrir o que o senhor quer fazer. Se essa pesquisa e exploração levarem à codificação, então o senhor pode aprender a codificar com a minha bênção… que vale exatamente o que parece, nada.

Portanto, não, eu não defendo que o senhor aprenda a programar pelo simples fato de aprender a programar. O que eu defendo é que seguir desavergonhadamente sua alegria. Por exemplo, recebi o seguinte e-mail ontem.

Sou um advogado/C.P.A. de 45 anos que está tentando abandonar meu escritório de advocacia solo assim que for humanamente possível e sair em busca de minha próxima vocação. Na verdade, estou pagando alguém para me ajudar a fazer isso e, como primeiro passo no processo de “encontrar a si mesmo”, disseram-me para fazer uma retrospectiva de minha longa e sinuosa carreira e identificar os momentos de minha vida profissional em que eu estava fazendo algo de que realmente gostava.

Por ter amadurecido como contador durante a revolução dos PCs (quando comecei meu primeiro emprego “de verdade” na Arthur Andersen, ainda cobrávamos dos clientes a atualização manual dos cronogramas de depreciação), passei muito tempo aprendendo a fazer computadores, impressoras e softwares (alguém conhece o VisiCalc?) funcionarem. Esse aspecto quase técnico do meu trabalho atingiu o ápice quando fui contratado como analista financeiro da área de saúde em um grande sistema hospitalar. Quando cheguei para meu primeiro dia de trabalho nesse emprego, descobri que meu antecessor havia me legado apenas uma planilha estática do Excel de uma página que pretendia “analisar” um contrato multimilionário de atendimento gerenciado para um sistema de saúde de sete hospitais. Comecei a criar minha própria planilha, mas rapidamente ultrapassei a capacidade funcional do banco de dados do Excel e tive que aprender a usar o Access e, depois disso, comecei a esticar o envelope dos recursos de planilha do Access até sua capacidade máxima – tive que recuperar centenas de milhares de registros de pacientes e, em seguida, realizar cálculos pro forma sobre eles para ver se os contratos propostos resultariam em mais ou menos pagamento, considerando uma utilização idêntica.

Serei o primeiro a admitir que não estava codificando em nenhum sentido profissional da palavra. Consegui fazer com que o Access fizesse coisas que o suporte técnico da MS me disse que ele não poderia fazer, mas ainda assim eu estava simplesmente usando comandos muito básicos para adaptar um aplicativo existente à minha vontade. A única coisa de que me lembro é de estar feliz. Eu digitava comandos infinitamente aninhados em células de fórmula durante doze a quatorze horas por dia e ainda ficava desapontado quando tinha de parar.

Minha experiência em construir esse monstro e fazê-lo funcionar foi, até hoje, minha realização profissional mais satisfatória, apesar de ter me tornado mais tarde CFO de outra instituição de saúde, um feito que deveria ter realizado todas as minhas ambições profissionais naquela época. Mais do que o trabalho, no entanto, foi o grupo de analistas e pessoal de TI com os quais me associei enquanto tentava, fracassava, tentava, depurava e continuava a construir esse gigantesco banco de dados. Aprendi sobre Easter Eggs e lendas de codificação e me vi invadindo áreas do mainframe do hospital que estavam completamente fora dos limites para alguém do meu nível. E ainda assim, Continuei buscando minhas “metas profissionais” e acabei em empregos/carreiras que odiava, fazendo um trabalho que detestava.

Aqui está uma pessoa que a) encontrou um problema interessante, b) tentou criar uma solução para o problema, o que naturalmente c) a levou a aprender a programar. E ela adorou. É assim que deve funcionar. Não me tornei um programador porque alguém me disse que aprender a codificar era importante, eu me tornei um programador porque Eu queria mudar as regras dos videogames que eu jogavae aprender a programar era a única maneira de fazer isso. Ao longo do caminho, Eu também me apaixonei pelo.

Tudo isso para dizer que, ao me encontrar na encruzilhada mais uma vez, ainda ouço o canto da sereia daqueles dias felizes de quase codificação, durante os quais eu gostava do meu trabalho. Minha pergunta para o senhor é se acha que é possível para alguém da minha idade aprender a programar a ponto de ser contratado como programador. Não estou tentando fazer isso por conta própria enquanto administro a cidade de Nova York como um trabalho diário. Em vez disso, quero sincera e completamente me tornar um programador de boa-fé e passar meus dias criando (e/ou depurando) algo de valor.

Infelizmente, chamar a si mesmo de “programador” pode ser uma atitude que limita a carreiraparticularmente para alguém que foi CFO em uma carreira anterior. As pessoas que trabalham com dinheiro tendem a ganhar muito dinheiro; veja Wall Street.

Mas não se trata de dinheiro, não é mesmo? Trata-se de amor. Portanto, se o senhor quiser ser um programador, tudo o que precisa fazer é seguir sua alegria e se apaixonar pelo código. Qualquer programador que se preze reconhece imediatamente um companheiro de fé verdadeira, uma pessoa tão loucamente apaixonada por código quanto o senhor, com todas as suas peculiaridades. Bem-vindo à tribo.

E se o senhor estiver lendo isso e pensando: “Que se dane esse Jeff Atwood, quem é ele para me dizer se devo aprender a programar ou não”, tudo o que posso dizer é: bom! Esse é o espírito!