26 de janeiro de 2015

Dicas para quem está iniciando em programação

Gostei muito do artigo My Speech to new Hacker Schoolers, da Mary Rose Cook. Pedi autorização, ela deu e aqui está a tradução.

Aproveite, pricipalmente os conselhos e as capacidades mencionadas por ela.


Meu discurso para novos alunos da Hacker School

Oi. Eu sou a Mary. Sou uma facilitadora na Hacker School.

Antes de tudo, vou falar sobre o que os facilitadores fazem. Depois, vou dar-lhe alguns conselhos sobre como aproveitar seu tempo aqui na Hacker School.

O que os facilitadores fazem?

Nós estamos aqui para ajudar a vocês se ajudarem a aprender, e podemos fazer isso de várias formas.

Podemos revisar seu código (fazer code review). Ou seja, podemos analisar o que você escreveu e conversar sobre formas de melhorá-lo, mas funciona melhor se você já vier preparado. Identifique partes de seu código que te preocupam. Ou selecione uma parte do seu programa e um objetivo, como, por exemplo, fazê-lo rodar mais rápido, torná-lo mais idiomático, mais curto, mais fácil de ler, mais funcional ou mais orientado a objeto.

Nós também podemos programar em par com você (praticar pair programming). Explicando melhor: nós podemos colaborar enquanto você escreve seu código. Quando você parear com alguém, tente e seja o programador mais meticuloso. Pratique capacidades de programação de alto nível, como mergulhar fundo nos problemas e depurar sistematicamente.

Nós podemos ajudá-lo a escolher um projeto que se encaixe nos seus objetivos de aprendizado na Hacker School. Isso pode significar mostrar-lhe uma lista dos Projetos Divertidos e Educacionais da Hacker School. Também pode significar que vamos conversar sobre quais objetivos de aprendizado você realmente tem.

Nós fazemos workshops sobre assuntos que nos interessam. Recentemente eu apresentei alguns sobre introdução a programação funcional, desenvolvimento de um jogo e herança baseada em protótipos (prototypal inheritance) em Javascript.

Nós também podemos ajudá-lo a iniciar um novo projeto ou em uma nova tecnologia. Isso pode significar que vamos conversar sobre uma arquitetura viável para seu projeto. Ou, quem sabe, sobre os tópicos básicos da tecnologia em questão.

Nós podemos recomendar outros colegas seus daqui da Hacker School, ou outros facilitadores, que compartilham seus interesses e que você possa gostar de trabalhar junto.

Nós podemos ajudá-lo a destravar quando você estiver lutando com um problema. Alguns de nós usamos um guia sobre quando pedir ajuda. Se você está travado, esforce-se por quinze minutos. Se você ficar travado por quinze minutos, precisa pedir ajuda. Uma forma legal de gastar seus quinze minutos é com o pato de borracha. Ou seja, explique seu problema em voz alta ou mentalmente para um pato amarelo de borracha, real ou imaginário. Algumas vezes isso traz a solução. Outras vezes, ajuda a identificar uma rota produtiva de investigação. E sempre esclarece seu entendimento sobre o problema.

Finalmente, nós podemos conversar com você se estiver com problemas pessoais. O tempo na Hacker School pode ser difícil. É um ambiente novo, isolado da família e dos amigos lá fora. Podemos conversar sobre qualquer tipo de problema.

Tudo que os facilitadores fizerem por você, pode ser feito por você para seus colegas: revisão de código, pareamento, workshops, aconselhamento, etc. Há apenas uma diferença entre os facilitadores e os alunos. Sua prioridade é o seu aprendizado. Mas nós somos pagos para estarmos aqui, então nossa prioridade é seu aprendizado, também.

Conselho para aproveitar a Hacker School ao máximo

Provavelmente você fez grandes sacrifícios para estar aqui. Talvez você tenha economizado por meses ou anos. Talvez você tenha pedido demissão. Talvez você tenha se mudado para uma nova cidade. Talvez você tenha decidido deixar em segundo plano seus hobbies, seus filhos ou seus amigos.

Se você fizer da Hacker School os três meses mais produtivos da sua vida, bem. Muito bem, aliás. Mas, considerando os sacrifícios que você fez, seria ainda melhor usar a Hacker School para adquirir capacidades que o melhorarão para sempre, na vida de programador. A Hacker School é um excelente lugar para praticar bastante essas capacidades de alto nível que são negligenciadas quando as pessoas estão sob pressão de hierarquias ou chefes, ou se preocupando sobre o que a internet vai pensar.

Existem quatro capacidades que me trouxeram grande vantagem.

Mergulhe fundo. Você está usando um framework, uma biblioteca ou uma linguagem e você se dá conta que não entende alguma coisa sobre ela. Invista tempo para entender lendo o código fonte, exercitando no shell interativo ou lendo a documentação. Essa atitude sedimenta seu modelo mental e ajuda a torná-lo um programador mais confiante.

Depure sistematicamente. Quando você travar em um bug, não comece a digitar coisas que você acha que vão resolver o problema. Formule uma hipótese sobre o que é o problema. Faça experimentos. Se os resultados derem suporte à hipótese, o problema agora está mais claro e você já venceu a maior parte da batalha. Caso contrário, use as observações dos seus experimentos para formular uma nova hipótese.

Aprenda suas ferramentas. Conserte aqueles problemas chatos na sua configuração. Aprenda mais atalhos de teclado. Automatize processos que você faz com frequência. Não gaste dias nisso. Conserte uma coisa e volte ao trabalho.

Aprenda muito bem uma linguagem de programação. Isso leva meses ou anos, mas tem duas grandes vantagens. Primeira, você será capaz de pensar na forma de uma linguagem de programação. Você poderá expressar um algoritmo ou um pensamento fluentemente sem consultar sintaxes ou APIs. Segunda, você aprenderá novas linguagens. Programar em Erlang vai te ensinar sobre concorrência. Programar em C te ensina sobre gerenciamento de memória. Mas aderir a uma linguagem te mantém num ambiente seguro. Isso permite que você aprecie as sutilezas dessas ideias fudamentais que afetam todas as linguagens. Você já sabe: espaço, tempo, coisas assim.

Nota: traduzido do original My Speech to new Hacker Schoolers.

Eu sou Vinicius Assef, um programador do século passado que gosta de Python, pratica Lean Development e acredita em Deus. Você pode me contactar por email ou twitter.

Um comentário:

  1. Muito bom, pensar nas soluções ao invés de procurar respostas prontas é o caminho para se tornar um programador confiante.

    Obrigado pela tradução Vinicius !

    ResponderExcluir

Marcadores