Como começar a aprender programação e como aprender Python?
Vez por outra me fazem essa pergunta. Minha sugestão está contida ao longo deste post, pode ser que ajude outras pessoas. Em geral, programadorxs te indicarão: “programe, programe, programe!”. Sim, isso é verdade. A melhor forma de aprender a programar é programando!
Parece uma resposta óbvia, porém muitas vezes o aprendiz iniciante acaba achando que apenas assistindo vídeos, lendo livros e olhando outras pessoas programando elx irá aprender.
É importante sim que você leia/estude livros da linguagem, assista vídeos, conheça as técnicas de outros programadores. Porém, para você aproveitar de forma eficiente esse momento é importante que você aprenda o básico e pratique bastante.
Alguém aprende a andar de bicicleta apenas olhando e ouvindo dicas? Não! É preciso pegar as dicas básicas e macetes dos que já aprenderam e colocar em prática andando muito de bicicleta. No processo você vai cair bastante(aconteceu comigo), poderá até fazer uns calos nas mãos ao tentar se equilibrar(aconteceu com minha mãe e comigo as vezes). Faz parte do processo de aprendizagem.
Programar é a mesma coisa. Você precisará praticar bastante e buscar aprender os fundamentos da programação. Você vai errar, seus códigos não sairão bonitos no início, vai ter dúvidas, mas tudo isso faz parte do processo de aprender. É algo continuo, até programadores profissionais estão sempre aprendendo. E se você não desistir, vai continuar aprendendo a programar.
Em programação não adianta apenas escrever código. É preciso saber o que está codificando e o porque está fazendo daquele jeito. Esse nível de conhecimento é adquirido quando aliamos nossa curiosidade (para saber os porques) à prática, codificando constantemente e buscando escrever códigos melhores (reescrever seus códigos antigos é uma forma).
Voltando ao sobre aprender a andar de bicicleta: Após todo esse choque inicial de aprendizado(quedas, calos e etc), chegará o momento em que você terá uma fluência mínima para andar de bike e correr sem desequilibrar. É nesse ponto que você poderá avançar mais, terá condições de fazer corridas no nível de pessoas mais experientes e arriscar aprender a andar com uma mão só. Como conseguir isso em programação?
O que e como tenho feito para aprender a programar com Python
Neste post vou apresentar como tenho feito para garantir essa fluência mínima para chegar no ponto de fazer corridas melhores. ops! Programas melhores! E como me preparar para aproveitar xs desenvolvedorxs Python que sabem mais do que eu.
Não importa seu nível de conhecimento, você sempre pode aproveitar e aprender com os experientes da comunidade Python (eles adoram ajudar). Porém, é importante que você saiba perguntar1 e corra atrás de aprender os fundamentos, eles estão acessíveis de forma gratuita(videos, documentação, blogs) e nos livros. Seja responsável pelo seu aprendizado e busque a comunidade/fóruns2 sempre.
É bem mais interessante para as duas partes quando buscamos o apoio dos desenvolvedorxs para trocar ideias e dúvidas quando fizemos nossa parte, assim podemos aprender melhor e não estaremos perguntando algo que uma googlada responderia satisfatoriamente.
Eu sei o básico da programação, C3 foi minha primeira linguagem (não recomendo ela como primeira, apesar de gostar muito dela), tive rápido contato com Java (IMO, java só para android mesmo) e Python vi de forma descompromissada quando me dividia com os estudos para o ENEM.
No entanto, estou retomando meus estudos em Python do zero, como alguém que estivesse tendo primeiro contato com programação e como eu recomendaria fazer(opinião pessoal). Ainda que não seja meu primeiro contato, decidi por assim fazer para adquirir fluência na sintaxe, aprimorar a prática de lógica e matemática (em Python isso é bem mais fácil por ter escrita simples) e, por fim, entender o ecossistema Python.
Os caminhos que estou seguindo não é uma receita infalível e nem pretende ser, pode funcionar comigo e não funcionar com você. É puramente algo que refleti bastante sobre como aprendo, o que eu preciso aprender e onde eu quero chegar. É importante que você também tenha seu método de estudo e compartilhe.
Saber algo de programação e autoconhecimento me ajudou muito nesse planejamento. A parte mais dificil é colocar em prática o que planejo (assunto para outro post) e por isso estou me desafiando a fazer.
Estou estudando usando a versão 3.x do Python por ser a mais atualizada, além disso é recomendada para quem está aprendendo Python e não tem necessidade de usar a versão 2.x. As referências e materiais que estou usando são para Python 3.x.
Material de estudo:
Existem diversos cursos, livros, video-aulas e materiais excelentes. Adotei estes para esta primeira fase por se encaixar de forma satisfatória e também para manter o foco. Em outro post específico coloco todas as fontes e materiais que pretendo utilizar e que também são boas fontes de estudo.
- Vídeo aulas: Python para Zumbis (PPZ) 4
- Livro: Python para desenvolvedores - 3ª Edição 5 (A 2ªedição do livro usa Python 2.x e tem tem distribuição gratuita6)
Prática:
Como estudo:
Nesta primeira fase, estou treinando e focando nos conceitos básicos da linguagem que adotei e da lógica, itens fundamentais para qualquer programador. Dividi em pequenos conteúdos, estudo um por vez. Assim consigo entender e praticar bastante o porque(conceito) e como fazer (prática). A divisão do conteúdo, em geral, ficou mais ou menos assim:
Assuntos da 1ª fase:
(As próximas fases irei publicar em outro momento, quando eu chegar nela :P )
- Estrutura sequencial
- Estrutura de decisão
- Estrutura de repetição
- Strings
- Funções
- Recursividade
- Arquivos
- Orientação a objetos
- Projeto
Meu guia principal sobre a ordem do que estudar é as aulas do curso Python para Zumbis(PPZ), permite que se aprenda fundamentos de forma divertida e mesclando diversas áreas de aplicações do Python. O livro Python para desenvolvedores5 é um reforço e complemento ao qual vou adaptando junto com as lista de exercícios do PPZ e da Python Brasil.
Meu algoritmo atual de estudo
- Assisto as vídeo aulas do Curso Python para Zumbis e pratico o que o professor estiver fazendo.
- Em seguida leio o assunto no livro e reproduzo os códigos.
- Anoto no papel o que eu achar importante.
- Faço duas lista de exercício (uma do PPZ e outra da Python Brasil). Faço uma de cada vez, um pouco por dia. Na codificação vou fazendo testes em cada exercício e vou melhorando o código aos poucos. Faço uma primeira versão e depois melhoro ele da forma que eu conseguir.
- Coloco os códigos no Github8 e pratico controle de versão9.
- Caso em algum passo acima eu identifique algum comando que eu tenha ficado com muita curiosidade (o que geralmente acontece) de entender a fundo, eu faço uma pesquisa rápida na documentação oficial ou em blogs. Caso seja algo complexo eu anoto o comando em um papel e deixo para pesquisar depois com mais calma. Assim eu não perco o foco de entender o geral e partir para a parte prática.
- Só estudo outro assunto da lista de conteúdo após concluir esse processo acima descrito.
- Para revisar a semana anterior posso fazer um post para o blog.
Exemplo: Guia de estudo da Semana 1
- Vídeos aulas PPZ: Começando com o básico (Aulas: 00, 010, 020, 030, 040, 050, 052, 053, 060)
- Livro Python para desenvolvedores 5 - 3ªEdição: Capítulo 1 e 2
- Lista I de exercícios PPZ 4
- Lista estrutura sequencial10 - Lista oficial5 da Python Brasil
Complemento motivacional:
- Assisto palestra sobre assuntos que me interessam e são ligados ao meu objetivo: Python, Lifestyle Business, Coding Dojo, Educação ou tecnologia.
- Participo de eventos e/ou tento compartilhar o que aprendi.
Motivacional da Semana 1:
Assisti várias palestras, mais até do que eu deveria. Já que tenho dificuldade em foco e concentração preciso dosar a quantidade de palestras em uma mesma semana ou dia. Das que assisti, cada uma eu poderia destacar algo, o Dojo Gameplay do Henrique Bastos11 me deu um empurrão enorme!
Nesse Dojo, Henrique Bastos resolveu o problema ‘Happy Numbers’ passo a passo, usando fundamentos do Python, desenvolvimento orientado a testes e refatoração. Com esse vídeo pude ver minhas limitações, o que eu preciso focar, os conteúdos essenciais de Python e como eu posso fazer para chegar nesse nível em breve. Confesso que na primeira impressão eu fiquei meio triste, vi o quão longe eu estava de fazer um código como aquele.
Porém, muitas partes do código eu entendi com o que já sei de Python, outras eu precisei assistir novamente para entender e muitos outros tópicos que não domino ficaram mais claros. Sem falar na lista de referências/materiais que ele colocou na descrição do vídeo!
Foi essencial para mim assistir o Dojo GamePlay12! Não só para saber do que eu precisava mais também para me determinar a correr atrás do que eu quero!
Se eu fosse um número, eu seria um número feliz! Valeu, Henrique Bastos!
Todos os links e referências do Post:
-
http://aprenda-python.blogspot.com.br/2014/02/como-perguntar.html ↩
-
http://novatec.com.br/livros/pythondesenvolvedores/ ↩ ↩2 ↩3 ↩4
-
<slides.com/lidianemonteiro/controle-de-versao/> ↩