Porque é que a codificação é tão difícil? | Parte 1

Este é um post sobre um assunto técnico: codificação. Mas para ser claro, eu não tenho uma base técnica.

Eu sou o filho orgulhoso de um artista que me ensinou a usar minhas emoções como uma bússola guia para navegar na vida, ao invés de lógica. Argila, grafite, tinta, tinta, tela, papel e adesivo atravessam as minhas veias.

Lutei na escola por muitas razões – entre elas duas dificuldades de aprendizagem: danos nos nervos cerebrais devido a complicações no nascimento e dislexia e que ficariam por diagnosticar até aos meus 20 e poucos anos. As minhas melhores notas nos testes foram tão más que quase não entrei na faculdade.

Estudei ciências políticas na escola e as minhas primeiras tentativas falhadas de carreira foram em Cinema e Design Gráfico.

Ensinei-me a codificar – é uma das coisas mais difíceis que já fiz. Eu também tenho ensinado código em um bootcamp aqui em D.C. por cerca de 5 anos e mentoring friends on e off.

Embora seja difícil, não é impossível. Quando você é autodidata, você está aprendendo pedaços e peças. Às vezes algo faz sentido imediatamente, enquanto outros clicam daqui a uns anos. O caminho da explicação é bem percorrido, mas eu descobri que suas experiências de vida, disposições e educação significam que metade de sua batalha é encontrar os recursos de aprendizagem certos.

Duas coisas antes de começarmos:

  1. Se eu posso fazer isso, você também pode.
  2. Você não está sozinho.

Novo vocabulário, novos conceitos, novo… tudo

Uma das barreiras complicadas para aprender a codificar é que os termos usados para descrever qualquer coisa em “código fala” podem muitas vezes significar algo completamente diferente em inglês comum. O meu exemplo é a palavra “Class”.

ÀÀ semelhança das conotações académicas ou sociológicas a que estamos habituados, uma Class in programming-speak é diferente dependendo da linguagem de programação que está a usar. Ainda mais confusa nestas diferentes linguagens de programação, uma Classe está conceptualmente relacionada o suficiente para traçar paralelos de semelhança com o porquê dos seus autores originais a terem escolhido para ser chamada de Classe, mas o uso real é suficientemente diferente para ser algo completamente diferente. (Especificamente classes CSS vs classes orientadas a objetos)

Código falado é quase como gíria, o que, como qualquer pai sabe, é frustrante. Pode ser difícil no início sinalizar o que é uma palavra normal em inglês e o que é um termo “código”.

Mais ainda, você as ouve frequentemente em sucessão rápida, então uma frase completa de código será gramaticalmente correta e você saberá cada uma das palavras separadamente, mas não quando organizadas dessa forma.

“Depois de ter descarregado o cache do navegador no local e pedido ao John para limpar os caches do servidor na encenação, pensando que tinha de ser algum tipo de problema persistente de memória ou de estado, acabou por se verificar uma colisão de nomes sobrepondo as invocações definidas anteriormente na raiz. Vou fazer um ticket para adicionar mapas de origem para que possamos rastrear instanciamentos mais facilmente, em vez de “grepping the repo””. -Uma frase real que eu disse ao meu chefe, que acenou aprovando.

Não apenas começando do zero, definindo o que é scratch

Em cima disso, há conceitos que você nunca teve que encontrar antes, muito menos discutir com.

Um exemplo que eu gosto de usar com meus alunos é:
Diga que você quer programar seu computador para fazer uma xícara de café. Direito simples?

Você: Ei Computador: me faça uma xícara de café.

Computador: BIP BOOP: PALMADINHA CERTA. O QUE É CAFÉ E O QUE É FAZIDO?

Imagine todas as formas de fazer café… depois imagine o processo de tirar o grão de café da árvore em que cresceu, numa forma que você pode usar neste processo… yikes.

Começamos do zero muitas vezes, e mesmo coisas pequenas e simples para nós são, na verdade, muitas vezes surpreendentemente complexas para realizar com o código.

Você não tem apenas que programar as coisas, você tem que definir o que elas são em primeiro lugar. Depois, você tem que reforçar o seu código para lidar com todas as formas possíveis de errar. Tarefas simples tornam-se catedrais impressionantes honrando os deuses do explícito.

“Just Google it”

Talvez o conselho que mais me enfurece dos meus pares para os novos desenvolvedores seja “Google it”.

Aquela pessoa que tem estado profundamente na lama sabe como isso é inútil.

A. Você não sabe como diagnosticar o que está errado, então você não sabe nem por onde começar. (Se soubesse, não estaria a perguntar).
B. Mesmo que soubesse, você não sabe quais termos estão associados com o problema.
C. E mesmo que soubesse, os resultados são muitas vezes tão desconcertantes que não saberia se estivesse a olhar directamente para si. (Ou como disse o meu avô, não seria capaz de deitar água de uma bota se houvesse instruções no fundo.)

Code é como uma língua estrangeira

Existem paralelos impressionantes para aprender a codificar e aprender uma língua estrangeira. Descobri que os estudantes de língua, inglês ou não, tendem a pegar as sintaxes mais rapidamente.

Sim, há padrões e lógica para os sistemas.

Sim, algumas coisas são idiossincráticas e não podem ser transmitidas sucintamente em seu equivalente em inglês.

Sim, há exceções aos 2 pontos acima que contradizem ou não fazem sentido, mas é assim que é, então você tem que memorizar.

Metade Pastor / Meio Cientista

Talvez a contradição mais louca que um programador deve cumprir é que você tem a tarefa de saber como tudo funciona, e de reunir uma maioria saudável à fé.

Para programar, você deve usar lógica, razão e inferência. A depuração é um processo dedutivo. Um bom código é bem estruturado, deliberadamente lógico e bem organizado.

Por outro lado, estamos usando rochas que enganamos para pensar (computadores). Confiamos em frameworks, bibliotecas e trechos escritos por outras pessoas que ou não entendemos por causa do tempo ou tomamos puramente a fé. Há tanta coisa acontecendo em cada linha de código que nunca poderíamos terminar a função se tivéssemos que parar e pensar sobre o que tudo isso faz.

Para ser um programador, você deve ser tanto parte baseado na fé/Perdote/Priestado e pedra-frio Spock logician.

Imagem via Paramount Pictures.

Conclusão

Então, como pode ver, temos o nosso trabalho recortado para nós. Mas assim como não viemos a este mundo sabendo como falar, ou escrever, ou completar qualquer uma das tarefas que agora encontramos rotineiramente, mas uma vez lutado: podemos fazê-lo.

A verdade profunda por trás da codificação é que é o produto, o nível de melhores esforços – as boas intenções – o presente honesto de algumas pessoas muito inteligentes para tornar a vida mais fácil. Alguma pessoa inteligente, em algum lugar disse: “Isto é uma treta. Tem de haver uma maneira melhor do que esta”

E o código deu o seu primeiro suspiro.

Na próxima secção, vou dar-lhe algumas estratégias para suavizar este processo e levá-lo em direcção aos seus objectivos. O código está aqui para ficar, está aqui para ajudar, e se nada mais, você pode apenas se divertir um pouco.

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado.