Há 2 meses atrás, fiz as malas e fui para o Porto para 8 semanas de programação intensiva. Há já uns anos que estava interessado em passar pela experiência de um coding bootcamp e assim que tomei conhecimento de uma iniciativa desse género em Portugal, não pensei 2 vezes.
A aventura Creators School não poderia ter corrido melhor (esta foi a minha review).
Num curso tão imersivo, foi francamente difícil subir até à superfície e reflectir sobre o que estava a acontecer. Agora que a poeira já assentou e estou de regresso a Lisboa, parece que já consigo colocar em palavras o que aconteceu, abrindo este novo espaço no blog dedicado à partilha de experiências no mundo da programação.
Aprender a programar está na moda e há várias razões para tal: vivemos num universo cada vez mais tecnológico, dependemos cada vez mais de apps e existe uma crescente procura de mão-de-obra neste sector. Ver jovens de 25 anos a arrecadar milhões com as suas start-ups também talvez ajude.
Para alguém que tem um background de Marketing Digital, o mundo da Programação faz todo o sentido, apesar de ser, na verdade, muito distinto. E apesar de já há vários anos andar a explorar este tópico, seja através de cursos online como os da Treehouse ou tutoriais da Codecademy, nada se compara a chegar a uma sala todos os dias e, das 9h30 às 18h30, interpretar e escrever código.
Muito se pode dizer sobre os últimos 2 meses – houve muitas sensações, lições e ideias – mas vou seguir um dos grandes ensinamentos que este novo mundo me trouxe: partir uma questão em pontos mais pequenos, começando por falar sobre… mitos.
Mitos
Por mais que achasse que tinha uma ideia aproximada do que era um programador, a verdade é que vi algumas das minhas verdades indiscutíveis abaladas.
As minhas ideias pré-concebidas não eram baseadas naquele “amigo meio-estranho que é programador” ou fruto do visionamento de dezenas de filmes em que o rapaz do teclado é a pessoa mais inteligente da sala ou o único capaz de ampliar imagens escrevendo complexos comandos no terminal (se gostas deste último, vais adorar este site) – era simplesmente o que julgava ser verdade até ter passado algumas semanas a programar.
#1: Só existe uma solução para cada problema
Esta ideia talvez tenha surgido pela habitual associação da matemática à programação. Se quando resolvemos uma equação, só há um resultado correcto, o mesmo se aplica à programação, certo?
Bom… não necessariamente. Há muitas formas de chegar a um resultado e não existe “A” resposta certa para uma situação.
O que há é uma série de raciocínios que, quando traduzidos para código, poderão responder de forma satisfatória ao desafio original – e como cada pessoa tem um raciocínio diferente, a forma de solucionar o problema variará de pessoa para pessoa.
Isto significa que se procuravas algo que fosse uma ciência exacta (como eu pensava que isto seria), o mais provável será que a programação te desiluda.
Para mim esta conclusão foi surpreendente mas, ao mesmo tempo, vista com muitos bons olhos.
#2: Não é preciso falar com ninguém
Se existe um estereotipo para um programador, essa imagem raramente é positiva. Normalmente, pensa-se numa pessoa que é socialmente inadaptada porque passou demasiado tempo na sua cave a olhar para linhas de código e se esqueceu de como se fala com uma pessoa.
Apesar de achar que tal era exagerado, acreditava, isso sim, que para fazer um bom trabalho não precisaria de falar com ninguém – bastava estar no editor de texto até ao fim do dia e depois fazer push (ou upload do trabalho realizado).
A verdade é que tal não poderia estar mais longe da verdade. Nos últimos 2 meses interagi com dezenas de pessoas que programam e vi como é importante comunicar.
Programar não é apenas escrever linhas de código de forma convulsa – é muito mais filosófico do que parece. Como vimos no 1º ponto, a forma como se resolve um problema é subjectiva, pelo que uma discussão saudável com um colega pode ser benéfica e fazer-nos chegar a uma solução mais eficaz para o que procuramos.
Programar a pares é, na verdade, algo que muitas empresas adoptam e realmente produtivo – estima-se que a produtividade em pair programming é de 3 ou 4 vezes superior a um programador a solo!
Se pensavas, como eu, que uma empresa de programação era um conjunto de pessoas num cubículo com os olhos vermelhos de tanto olhar para um ecrã, vais apanhar uma grande surpresa – serão provavelmente aqueles que estão na copa ou nos sofás a pensar como vão resolver o próximo desafio.
#3: Os programadores sabem tudo de cor
Se é verdade que com a prática alguns comandos ficarão familiares, a realidade é que a documentação será absolutamente fundamental a todas as alturas – isso e um bom Google-fu, claro está.
Com várias soluções possíveis e com tantos comandos disponíveis, é irrealista pensar que o programador terá sempre a solução na ponta dos seus dedos. Ele tem, isso sim, a capacidade de saber o que procurar e como o incorporar no seu projecto, sendo frequente para tal uma passagem pelos fóruns para entender qual a melhor abordagem para o seu caso em particular.
#4: Basta colocar os phones, uma lata de Monster e programamos 12 horas seguidas a teclar sem parar
Nah, isso é praticamente impossível, pelo menos ao início. Vais sentir o teu cérebro a derreter com a quantidade de problemas que não sabes a resposta e vais ter de aprender a reduzir grandes problemas em pequenas tarefas, como falarei num artigo posterior.
Portanto, a não ser que sejas um hero programmer, não conseguirás fazer muito barulho no teu (novo) teclado mecânico, até porque tens de equacionar as pausas para reflectir sobre as melhores soluções e os momentos de desespero que terás quando ficares preso no teu raciocínio.
#5: No fim, tudo vai ficar perfeito
Esta custou-me um pouco engolir, mas de facto nenhum projecto ficará perfeito… porque programar é também um jogo de compromissos; consideramos as várias tecnologias disponíveis e optamos por aquelas que melhor se adaptam à situação.
É bom que procures a perfeição e que sejas exigente contigo próprio, claro, mas mentaliza-te que haverá sempre algum código que poderia ser reduzido/re-escrito, alguma resolução de monitor em que o teu site não fica como esperavas e alguma situação em que a tua app não funciona conforme esperado.
O melhor será aceitar essa inevitabilidade e fazer o possível por minimizar essas ocorrências. Terás sempre de pegar em questões como performance, usabilidade e design e colocá-las na balança… e dificilmente poderás (ou saberás como) maximizá-las.
#6: O programador é arrogante e guarda tudo para ele próprio
Apesar de me sentir cada vez mais confortável a programar, a verdade é que os primeiros tempos são de grande frustração e onde nada é fácil – vamos ter de sobreviver um período em que tudo é muito estranho até que as coisas começam a fazer algum sentido.
Com essa curva de aprendizagem, poderíamos assumir que programadores mais avançados fossem inacessíveis ou, no mínimo, difíceis de lidar. No entanto, não foi isso que testemunhei, seja online ou offline.
A comunidade de development é excelente – existe imensa informação sobre qualquer tópico e não somos alienados se perguntarmos algo totalmente óbvio ou básico, o que considero crítico para não desanimar iniciados.
E fico com a clara sensação que ninguém guarda a informação para si próprio – depois de uma grande descoberta, o mais provável será um programador escrever sobre isso no seu blog pessoal, colocar o código no GitHub ou no CodePen ou ajudar futuros utilizadores postando respostas no Stack Overflow.
O mesmo se sucede de modo offline, com as diversas meetups e conferências promovidas em todas as cidades, com o intuito de juntar programadores.
Posto isto, parece-me ser evidente a vontade em ajudar o próximo, até porque todos já estiveram uma vez bloqueados.
#7: Erros no código? Isso é de programador inferior
Independentemente do teu grau de experiência, vais sempre encontrar erros – seja porque falta uma vírgula, porque te enganaste no nome de uma variável ou porque te esqueceste de gravar um ficheiro. Acontece a todos e não é por seres veterano que vais deixar de os encontrar.
O que vai mudar é a tua relação para com eles. Os erros não são mensagem de fracasso – são indicações para saberes o que deves alterar para que o teu programa funcione.
Se calhar é por isso que em Silicon Valley os fracassos são celebrados, não?
Se ao início encontrava um erro e rapidamente voltava para o editor de texto para procurar a origem do problema, agora prefiro levar o meu tempo a ler e interpretar as mensagens de erro, para que a resolução seja bem mais fácil.
Uma boa parte de programar é saber olhar para os erros e resolvê-los. Essa é uma das grandes lições no mundo REAL da programação… mas sobre isso, falarei em detalhe no próximo artigo desta série!
Conclusão
Como seria de esperar, depois de programar em regime full-time durante 2 meses, existe uma considerável diferença entre o que imaginava e a realidade.
Neste período, aprendi que programar não é algo sobre-humano, que os programadores são pessoas acessíveis e preocupadas em ajudar e que resolver problemas é algo muito mais subjectivo do que esperava.
E para ti, quais são os maiores mitos?