Na semana passada escrevi sobre alguns mitos de programação – um conjunto de ideias pré-concebidas que eu não duvidava que fossem verdade, até perceber (após algum tempo a programar) que estavam completamente erradas!
Hoje, como prometido, falo um pouco da realidade enquanto programador – aquilo que define o dia-a-dia de alguém que está todo o dia com o editor de texto aberto e com o terminal sempre activo.
Naturalmente, não pretendo que este artigo seja pretensioso – não sou um programador veterano, longe disso! – pelo que me vou cingir à minha (curta) experiência neste meio, que se resume a um período de quase 3 meses em que programar foi parte de mais de 10 horas de cada dia.
Contas feitas, ainda estamos a falar de algumas horas, portanto vamos então ver o que acontece realmente quando se passa o dia a programar.
#1: Encontrar erros é (demasiado) normal…
Mesmo quando ainda estamos a começar e os nossos ficheiros têm 5 ou 10 linhas de código, é incrível o número de erros que podemos encontrar.
Ao início, encaramos tudo isto com estranheza e, possivelmente, com sentimento de fracasso. Rapidamente voltamos para o editor de texto (sem sequer ler a mensagem de erro), reparamos que algo estava em falta, corrigimos, gravamos e tentamos de novo, apenas para encontrar novamente uma mensagem de falhanço.
O que aí ainda não nos apercebemos é que…
… os erros são nossos amigos!
Os erros vão ser nossos companheiros toda a carreira – podemos, com a prática, cometer menos erros (esquecermo-nos menos vezes daquela vírgula ou do nome correcto da variável, por exemplo), mas novos erros surgirão à medida que as nossa ambição e as nossas capacidades aumentam.
O que vai mudar com a prática é a forma como encaramos estas mensagens de (suposto) fracasso.
As mensagens de erro, seja no browser ou no terminal, apontam-nos para a direcção certa; vamos começar cada vez mais a ler sobre elas e a querer entendê-las, não só para as evitar como para passar para o problema seguinte – que pode ser, em muitas ocorrências, um novo erro encontrado que precisa de ser corrigido.
E o que faz qualquer programador que encontra uma mensagem de erro nova? Começa por fazer aquilo que todos nós fazemos, dezenas de vezes por dia: vai ao Google.
O que me leva para o ponto seguinte…
#2: Googling
Quando referi no artigo anterior que era importante um bom Google-fu, era precisamente por motivos como este: uma boa parte do nosso tempo é passado no Google.
Aqui, vais pesquisar com frequência por:
- mensagens de erro;
- comandos que não te recordas, para qualquer linguagem;
- formas de resolver determinados problemas, como expressões regulares.
Na esmagadora maioria das vezes o Google fará o seu trabalho e serás direccionado para um fórum com a resposta à tua pergunta (muito provavelmente o Stack Overflow) ou um tutorial que contém a resposta que procuravas.
Se não obtiveste resposta, o mais provável é que tenhas de pesquisar de outra forma ou colocar uma questão num fórum – acredita, por mais específico que o teu problema pareça ser, o mais provável é que alguém já tenha passado pelo mesmo!
#3: A temível sensação de ficar stuck
Abres um ficheiro, começas a escrever e a coisa até está a ir bem: escreveste várias linhas de código, pelo caminho nem encontraste muitos erros e está tudo a correr de feição. Continuas a escrever mais um pouco até que, finalmente, lá volta aquele sentimento outra vez: ficaste stuck, ou preso.
Os minutos passam, convertem-se em horas e ainda não conseguiste avançar. Lês e relês o teu código e não entendes o que falta: o servidor está a correr, os ficheiros estão gravados e não há erros de sintaxe. Mas o tempo passa e continuas aqui preso.
Este é um sentimento terrível (na minha experiência pior que qualquer bloqueio criativo) mas com que os programadores têm de aprender a lidar numa base diária.
Estes são alguns dos pensamentos que passarão por ti, provavelmente várias vezes numa só manhã:
Mas porque é que não consigo fazer isto?
Não faço a mínima ideia por onde começar…
Este problema é simples, porque é que não está a funcionar?
Acho que se ficar mais 3 horas a olhar para isto, nada de novo acontecerá. No que eu me fui meter…
Sim, sentes tudo isto e não é agradável. Mas acabas por aceitar essa sensação e, com persistência, lá acabarás por ultrapassar o obstáculo, aprendendo algo pelo caminho. E aí continuarás a tua missão até que a situação regresse, de preferência só depois do almoço.
Aqui, a chave, é realmente ser teimoso e não desistir: pesquisar mais um pouco, ler o nosso código mais uma vez, pedir ajuda a um colega ou passar para outra tarefa para “limpar a vista”.
#4: Brinca com a nossa auto-estima
Programação é surpreendentemente severa para a nossa auto-estima – todos os dias vemos sites incríveis, aplicações fantásticas e pode ser um pouco desesperante pensarmos quando é que seremos capazes de fazer algo similar.
Se juntarmos a isso o ponto anterior, em que tanta vez pensamos que estamos presos simplesmente por sermos burros, percebemos que os nossos dias são compostos por viagens emocionais algo atribuladas.
E aqui ainda falta referir a mítica síndrome do impostor. Aquela sensação constante em que sentimos que o nosso trabalho até agora foi uma fraude, os nossos programas funcionam por pura sorte e que não somos assim tão competentes. E não ajuda quando resolvemos um problema sem verdadeiramente entender como o conseguimos solucionar.
Esta é uma sensação complicada de gerir e, pessoalmente, não acredito que ficará mais fácil com maior experiência.
Porquê? Por causa do ponto seguinte.
#5: Não sabemos o que não sabemos… e quando se abre uma janela surge um mundo novo que desconhecemos
Quando começas a pensar em Web Development, pensas talvez em HTML, CSS e JavaScript. Mais tarde, perceberás que há sites em PHP ou Ruby. Pelo caminho ouves nomes como jQuery, Bootstrap ou AngularJS e conheces serviços como a Amazon Web Services ou o Github. E ainda falta saberes para que serve o Gulp, o Grunt, SASS ou PostCSS.
Quando algo não está a funcionar e encontramos a solução, é frequente surgir um novo mundo que era por nós desconhecido até à data. E é aqui que ficamos a conhecer alguma destas tecnologias que referi em cima (ou outras muito mais específicas).
Como podemos sossegar a nossa síndrome do impostor se sempre que ganhamos novas competências, percebemos que existe toda uma nova tecnologia altamente complexa que desconhecíamos e que nos dará tanto trabalho a conhecer?
Já diz o ditado:
Ignorance is bliss (a ignorância é uma benção)
Todas as semanas vais conhecer novas técnicas de fazer o teu trabalho – e por cada sensação que terás de ter feito um upgrade às tuas qualificações, soma 5 sensações de “wow, há mesmo muito que desconheço”.
E se por acaso algum dia vieres a achar que tens a situação totalmente controlada, o ponto seguinte servirá para te relembrar que tal nunca acontecerá.
#6: Está SEMPRE em constante mudança
Por norma, este é o melhor raciocínio que podes ter:
A única certeza, é a certeza da mudança.
Esta frase foi algo que ouvi inúmeras vezes na Creators School) e que mostra o quão efémero é este mundo.
Tecnologias revolucionárias estão sempre a surgir, algumas carregadas de hype que te farão querer saber mais e, por vezes, farão com que alteres a tua forma de trabalhar. As boas práticas estão sempre a mudar e o que hoje é recomendado pode ser, em 3 meses, desaconselhado.
Em suma, esta é uma carreira em que sairás frequentemente da tua zona de conforto e onde terás de estar receptivo a mudanças constantes. Este é um excelente artigo sobre o tema.
#7: Ler, ler, ler…
Sem surpresa, o dia-a-dia de um programador é passado não só a escrever, mas também a ler: tal como um escritor.
Um programador passa o dia a ler código (seja o dele próprio seja o de outros), a ver as novidades do Hacker News, a procurar respostas no Stack Overflow, a seguir tutoriais sobre uma tecnologia que lhe interessa e a consultar a documentação de determinada linguagem de programação.
Até é de admirar que, no meio de tanta leitura, sobre tempo para escrever. Mas a verdade é que se não dedicarmos uma boa quantidade de tempo do nosso dia a ler, dificilmente conseguiremos adquirir novas competências ou sair do problema em que estamos presos há 2 horas!
Conclusão
Na minha experiência, é assim que se passam as horas de um programador. Muito tempo a resolver problemas e a consultar documentação, com algumas viagens emocionais pelo meio, numa indústria que é mais ágil do que provavelmente qualquer outra.
E tu, concordas? Tens algo a acrescentar? Manifesta-te nos comentários!