Sendo um programador atualizado

Evandro F. Souza
Training Center
Published in
10 min readAug 15, 2018

Há algumas semanas falei sobre a importância de ter um planejamento para a sua carreira em programação. A ideia desse post é continuar nessa mesma linha de assunto.

Na área de TI, existem muitos caminhos diferentes para percorrer, mesmo para aqueles que já estão decididos sobre qual escolheu, a cada momento que passa surge uma tecnologia nova e isso pode ser uma razão para mudar a trajetória. Independente da direção escolhida — front-end, back-end, machine learning, big data, etc. — a realidade é a mesma, você precisará se manter atualizado e acompanhar a avalanche de informações.

No post anterior mostrei rapidamente como utilizo o Kanbanflow para organizar os estudos. Nesse pretendo detalhar mais e apresentar o processo que utilizo para aprender assuntos novos de modo rápido.

Os cinco passos

Foi o livro “Soft Skills The software developer’s life manual” que me inspirou a criar esses cinco passos. No livro são originalmente 10 passos, acabei unificando alguns, descartando e modificando outros. Por fim, ficaram os que apresento aqui:

Figura 1 — Os 5 passos

1 — Entenda o contexto geral

O primeiro passo, na minha opinião, é um dos mais importantes. É nesse passo que você deve investir tempo para entender o que realmente está querendo aprender. Para isso, nesse passo crie um documento que servirá para fazer anotações durante todo processo. As primeiras anotações são em relação a estas duas perguntas:

Qual é o escopo desse estudo?

Dependendo do assunto, ele pode ser realmente grande, nesses casos responder esta pergunta ajuda a definir um escopo menor e viável. Por exemplo, vamos supor que você quer aprender a linguagem Go. Podemos considerar que “aprender a linguagem Go” é um escopo grande. Sabemos que esta é uma linguagem que possui diversas funcionalidades diferentes. Para esse caso, um exemplo de escopo bem definido seria:

Aprender o básico necessário da linguagem Go para criar uma API.

Viu a diferença? Com o escopo bem definido, suas pesquisas serão mais específicas e você já possui um objetivo para seguir.

Qual é a definição de sucesso?

Aqui você irá definir a sua expectativa para quando terminar o estudo. Imagine:

Se você conseguisse viajar para o futuro e se ver após concluir este estudo. Como você gostaria de se ver?

Usando o exemplo de criar uma API com a linguagem Go, a definição de sucesso poderia ser:

Eu sei criar e dar manutenção em sistemas RESTful que utilizam a linguagem Go.

Estas duas perguntas são importantes. Pois, muitas vezes julgamos que sabemos do que queremos aprender, mas, na prática, não temos total clareza.

Buscando referências

Agora que possuímos ideia do que queremos aprender, chegou a hora de buscar as referências. A ideia aqui é reservar um espaço de tempo — eu gosto de colocar um limite de 30 minutos — para navegar na internet e buscar o máximo de conteúdo sobre o assunto que está estudando. O objetivo aqui não é investir tempo consumindo o conteúdo (dos artigos, blogs, vídeos, etc.), mas simplesmente anotar e categorizar o máximo de referências possíveis.

Para facilitar a vida, no mesmo documento que descrevi o “escopo” e “definição de sucesso”, adiciono uma sessão para as referências. O documento fica como na imagem abaixo:

Figura 2 — Documento com a organização dos estudos

Com o tempo aprendi diferentes categorias de referências. Vou listar elas:

  • Mindmap. Quem me conhece sabe o quanto sou fã de Mindmap, gosto tanto de criar quanto consumir estes diagramas. Uma maneira fácil de achar este tipo de conteúdo é buscando direto no Google Images, Bing Images e afins.
  • Documentação oficial. Nessa categoria coloco links do repositório do GitHub, do site oficial, e qualquer outro que seja produzido pelos criadores originais.
  • Blog posts. Essa é sempre a categoria mais populosa das referências. Uma dica é não se resumir somente ao Google. Utilize outros buscadores como o Bing e o DuckDuckGo. Existem ótimos posts que o Google não indexou nas primeiras páginas, porém, aparecem nos outros buscadores.
  • Awesome list. Para mim este foi o achado de 2018. Existe este tópico Awesome no Github. O “Awesome lists” são listas curadas pela comunidade. Neste link é possível visualizar um exemplo de Go, mas tem praticamente de qualquer assunto que você imaginar.
  • Podcast. Dependendo do quão especifico o assunto é, pode ser difícil localizar este tipo de conteúdo. A principal ideia dos podcasts é aproveitar o tempo. Por exemplo, você pode escutar no ônibus, na academia, durante caminhadas, fazendo compras, etc.
  • Livros. Essa categoria é muito importante, pois um dos passos a seguir — no “defina seu caminho de aprendizado” — iremos utilizar a grade de conteúdo dos livros como inspiração. Aqui utilizo muito o Google Books e Amazon, eles auxiliam na identificação dos livros mais famosos do assunto. Na maioria das vezes a funcionalidade de “dar uma olhada” no livro já é o suficiente para o estudo.
  • Vídeo aulas. Da mesma maneira que os livros, essa categoria será importante para o passo “defina seu caminho de aprendizado”. Além do mais, dependendo do assunto, os vídeos possuem a mesma vantagem dos podcasts, sendo um conteúdo de fácil consumo.

Sinta-se livre para adicionar outras categorias ou retirar algumas. Nas “primeiras versões” eu nem colocava categorias. Com o tempo notei que determinados “tipos de referências” se repetiam com frequência. Por isso achei interessante citar aqui.

2 — Filtre as referências

No segundo passo, iremos olhar a lista de referências e achar as pérolas e diamantes. Possivelmente a lista de referências terá muito conteúdo repetido ou com pouca qualidade, por isso é necessário a filtragem. Para filtrar, não é necessário excluir as referências, para isso, faça comentário no próprio documento, explicando de forma sucinta o que gostou naquele conteúdo.

É nesta etapa que iremos investir algum tempo lendo os posts, assistindo algumas partes dos vídeos, escutando algum trecho dos podcasts, etc. Note que não é necessário ler um livro por completo, escutar um podcast inteiro e assim por diante. O importante é consumir o suficiente para entender a qualidade da informação. Neste passo coloco um limite de tempo de 30 minutos.

3 — Defina seu caminho de aprendizado

O assunto que você está querendo aprender agora, antes de você, alguém já teve que estudar e ensinar sobre. Como estas pessoas organizaram o conteúdo? Qual é a melhor ordem?

Para responder estas perguntas, basta se inspirar nas referências coletadas. Analisando o índice dos livros, a grade de conteúdo das vídeo aulas, a organização dos tópicos em posts, slides, etc. Não precisa copiar exatamente como está na fonte. Por exemplo, se você pegar um livro técnico, ele provavelmente abrangerá assuntos que estão fora do seu contexto de estudo(aquele que definimos no passo 1). Você precisa realmente personalizar o seu caminho de estudos para chegar naquele conhecimento tão desejado.

Continuando no exemplo da API desenvolvida em Go, um possível caminho de aprendizado seria o seguinte:

1 - Aprender sintaxe básica do Go Lang
2 - Aprender a usar Go routines
3 - Aprender a utilizar o gerenciamento de dependências
4 - Analisar e comparar bibliotecas REST para Go
a- Desenvolver utilizando pacote net/http
b- Desenvolver utilizando o pacote resty
5 - Publicar a aplicação no Heroku

Note que no exemplo, o caminho dos estudos está diretamente ligado ao objetivo definido no “sucesso”. Uma dica é conforme você for montando a sua grade de estudos, você pode vincular a referência em cada item (para aqueles que já souber). Deste modo fica fácil para quando for estudar, você vai direto ao ponto.

4 — Brinque e pratique

Como o título diz, nesse passo você está livre para brincar e praticar sobre o assunto que quiser. O objetivo é praticar o bastante para gerar muitas perguntas. Após possuir a lista de perguntas em mãos, buscar as respostas com o auxílio do conteúdo filtrado nas referências.

Continuando no nosso exemplo da API desenvolvida em Go, aqui você vai pegar aqueles posts e vídeo aulas de Go — que você filtrou no passo 2 — e começar a praticar sem a preocupação de ler o artigo ou assistir a vídeo aula por completo. Simplesmente pratique até onde você consegue ir sozinho e vá anotando as dúvidas em um caderno ou bloco de notas.

Curiosidade é um ponto crucial no aprendizado, conforme as dúvidas forem acumulando, não tenha medo de voltar e brincar um pouco mais enquanto descobre respostas das suas perguntas e aprende coisas novas sobre o assunto. Tire o tempo que precisar para entender completamente o assunto lendo e experimentando, assistindo e fazendo.

Por fim, mantenha sempre em mente o “escopo do estudo” e a “definição de sucesso” estabelecidos no primeiro passo. Tente ligar o seu aprendizado diretamente ao objetivo final. Lembre-se, cada item do seu “caminho de aprendizado” , de alguma forma, deve mover seu avanço em direção ao destino.

5 — Ensine e compile o seu conhecimento

Gosto de pensar neste passo como o polimento do conhecimento adquirido. É a maneira de saber com certeza que você aprendeu alguma coisa. Ao tentar explicar o que você aprendeu aos outros, você irá preencher as lacunas em seu próprio aprendizado. Na maioria das vezes, no momento de tentar explicar, questões antes não pensadas surgirão. É um processo que fará com que você realmente analise e compreenda o tópico que está aprendendo em sua mente enquanto organiza as informações de modo a torná-las compreensíveis para os outros.

É possível ensinar o que aprendeu de diferentes maneiras: escrevendo um post em algum blog, gravando um vídeo sobre tutorial, fazendo uma talk em algum Meetup, até mesmo uma conversa de café com o seu colega de trabalho. Lembre-se:

Você não precisa ser professor para ensinar algo para alguém, para isso, basta estar um passo a frente.

Nas primeiras vezes que pratiquei este passo, eu ensinava escrevendo posts, porém, não publicava em lugar algum. Deixava ali guardado, não sei dizer ao certo a razão de não ter publicado, possivelmente por pensar que o conteúdo não iria ajudar ninguém. Porém, em algum momento eu decidi publicar, e quando fiz isso recebi tantos feedbacks positivos que percebi mais uma vantagem deste passo:

Ao ensinar o que você aprendeu, além de consolidar o seu conhecimento, você estará ajudando outras pessoas que estão trilhando o mesmo caminho que você.

Quebrando em tarefas

Agora que já falamos sobre cada um dos passos e temos uma ideia sobre o objetivo de cada um deles, quero mostrar como defino as tarefas para organizar e executar cada deles. Usando o exemplo repetido durante o post, vou descrever como eu faria para organizar a semana de estudos.

No post anterior, falei rapidamente sobre ferramentas de produtividade e ali mostrei o Kanban que eu uso, o KanbanFlow. A ferramenta que usará não faz diferença, pode ser até um Kanban físico. A única necessidade é que seja possível personalizar as colunas, já que o que vou mostrar aqui possui nove raias: backlog, segunda, terça, quarta, quinta, sexta, sábado, domingo e concluído. Veja a figura abaixo:

Figura 3 — Exemplo de kanban

Também foi comentado no post anterior, para organizar os estudos, será necessário definir quantas horas por dia ou semana serão investidas. No meu caso eu defini 1 hora por dia (7 horas por semana).

Pronto, agora vamos quebrar as tarefas conforme os passos. No momento que estamos quebrando essas tarefas, ainda não compreendemos bem qual é o nosso objetivo, já que isso é descoberto no primeiro passo, o que sabemos é que queremos “Aprender Go”. Abaixo vamos listar as tarefas e já colocar a estimativa, a unidade de medida que eu uso para estimar é pomodoro (30 minutos), 7 horas por semana dá um total de 14 pomodoros. Vamos ver como ficam as tarefas:

Tarefa 1: Contexto geral. 1 pomodoro .

Tarefa 2: Filtrar referências. 1 pomodoro.

Tarefa 3: Definir o caminho de aprendizado. 2 pomodoros.

Tarefa 4: Brincar e praticar. 6 pomodoros.

Tarefa 5: Ensinar. 4 pomodoros

Pronto, por enquanto são estas tarefas, coloquei mais pomodoros naquelas que imagino demandar mais tempo. Nada impede que durante o decorrer dos passos, as tarefas sejam melhor detalhadas. Por exemplo, ao chegar no terceiro passo e definir o seu caminho de aprendizado, você pode transformar a tarefa “Brincar e praticar” em duas novas, uma para sobre “Aprender o básico de Go” e outra para “estudar bibliotecas de REST”. É importante manter em mente que nada aqui é escrito em pedra, o principal objetivo de tudo isso é dar uma sensação de controle nos seus estudos, uma visão de início, meio e fim. Agora o que precisamos fazer é espalhar as tarefas entre as colunas dos dias, assim conseguimos ter uma previsão de quando vamos terminar os estudos, veja como fica o Kanban na imagem abaixo:

Figura 4 — Kanban organizadinho :)

E agora?

Primeiramente agradeço você que leu até aqui. Este post ficou maior que o planejado. Admito que a primeira vista este método parece meio control freak. Mas eu lhe garanto que é só uma questão de hábito, depois fica natural e você até sente falta se não fizer. Além do mais, esta foi a maneira que tive de continuar estudando e ainda assim ter tempo para o meu lazer (seriados, vídeo game, etc). Espero que este post tenha lhe ajudado de alguma forma.

Se quiser trocar uma ideia ou entrar em contato comigo, pode me achar no Twitter(@e_ferreirasouza) ou Linkedin.

Grande abraço e até a próxima!

--

--