image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Izairton Vasconcelos
Izairton Vasconcelos08/09/2024 22:08
Compartir

A Técnica de Feynman: A Jornada de Aprender Programação Pelo Caminho Mais Difícil

  • #Criatividade e Inovação
  • #Python

Desafios de projetos: obstáculos ou oportunidades de aprendizado?

 

Às vezes, nos deparamos diante da necessidade de aprendermos um assunto que nos leva a questionar se é possível desenvolvermos aquele conhecimento pelo caminho mais difícil do aprendizado.


Este artigo tem como objetivo abordar essa temática que envolve aprender determinado assunto, de forma não habitual e consensual, através de explicações e identificação de lacunas que nos leve à compreensão do desconhecido.


É o caso do aprendizado em programação. Pergunto, é possível aprendermos programação pelo caminho mais difícil a partir de problemas complexos ou desconhecidos enfrentando obstáculos ao longo de nossa jornada?


Neste artigo, vamos explorar o assunto abordando a técnica de Richard Feynman, autor da metodologia de aprendizado conhecida como “Técnica de Feynman” que consistem em seis etapas para explicar conceitos complexos de maneira simples.


Para tanto, tomamos como base referencial os exemplos de desafios de projetos solicitados nos cursos e bootcamps da empresa Digital Innovation One – DIO, uma plataforma de ensino para desenvolvedores de software.

 

Do mais fácil para o mais difícil

 

As abordagens habituais de ensino apresentam propostas para otimizar o aprendizado e obter melhores resultados, seja em qualquer área de estudo, técnicas que normalmente nos direcionam para o caminho do mais simples e básico para então, progressivamente, seguirmos para o mais difícil e complexo.


Em programação não é diferente. Por exemplo, ao decidirmos aprender uma linguagem de programação, como Python, recomenda-se que devemos previamente definir objetivos e metas claros e específicos com a divisão em etapas do básico ao avançado.


Ou então, habituando-se à prática regular de codificação, todos os dias, resolvendo desafios simples com o propósito de criar consistência e reforçar o aprendizado. Além dessas, várias outras recomendações podem ser adotadas, como a construção de projetos reais e simples, a leitura de códigos de outros programadores e, à medida que se vai ganhando confiança, aumentar a complexidade.

 

Do mais difícil para o mais fácil

 

Embora as abordagens tradicionais sejam mais comuns e recomendadas pela maioria dos educadores, podemos nos aventurar no aprendizado menos convencional, invertendo o caminho do básico ao avançado, propondo-nos resolver desafios de projetos que estão em níveis intermediários ou complexos.


Em um primeiro momento, isso pode parecer contraintuitivo, porém estratégico para aqueles que encaram essa modalidade como um desafio a ser superado.


Ao se deparar com uma situação dessas, o aluno é forçado a buscar soluções em várias frentes, como livros, blogs, sites especializados, mentorias, tutoriais, vídeos e até mesmo a Inteligência Artificial para sair daquele enrosco.


À medida que vai se superando, passando barreiras e progredindo o estudante absorve conhecimentos aplicando suas habilidades em tempo real.


Por exemplo, nos cursos da DIO, quando nos deparamos em um “Desafio de Projeto”, mesmo que sejamos iniciantes ou desconhecedores do assunto, isso não significa necessariamente que sejamos inaptos para resolvê-lo. A insistência, o mergulhar de cabeça na tentativa de solucionar aquele impasse, pode ser rico em aprendizado, mesmo aparentando frustração no início.


É o “aprender enquanto faz” uma técnica muito comum usada em outros ofícios práticos. É como sair para desbravar uma trilha que não se conhece, mas acreditando que poderá conhecer e atingir o alvo sem desanimar com os obstáculos do percurso.


Apesar de não ter respaldo e consenso entre os educadores, essa abordagem de aprendizado pode ser viável para aquele estudante que almeja aprender de forma ativa e desafiadora, encarando as dificuldades com determinação e perseverança, acreditando no seu próprio potencial: não conheço, mas não me é impossível conhecer.

 

Nos casos dos desafios de projetos, ao acreditar em si mesmo através da insistência e do seu potencial, o estudante é colocado em xeque diante dos obstáculos, obrigando-o a enfrentar os erros e refazer as soluções várias vezes, por insistência e resiliência próprias. À medida que vai superando, esse processo obriga-o a persistir e a não desistir, mesmo diante de tais dificuldades.


É como subir uma escada em que cada degrau se torna um domínio conquistado e absorvido. O aprendizado se torna prazeroso e animador, abrindo portas para enfrentar desafios ainda mais complexos.


Observem nos desafios quando nos deparamos com os obstáculos de instalar e configurar alguma ferramenta necessária para a solução do problema. A configuração de arquivos de configuração, de pré-requisitos, específicos como os JSON, YAML, arquivos de testes ou outros, faz com que aprendamos com a situação. Cada um com suas orientações e procedimentos próprios que no final passamos a conhecer.


Por fim, aprender pelo caminho mais difícil é, na verdade, uma oportunidade rica de aprendizagem. Com essa abordagem o aluno desafiado é forçado a buscar a solução a qualquer custo e, por não desistir, supera o desconhecido e promove êxito. É como um investigador que na tentativa de resolver seu caso, aos poucos vai somando soluções geradas a partir de habilidades adquiridas e da resiliência e capacidade de resolver seus desafios.

 

A Técnica Feynman na Programação

 

A metodologia conhecida por “Técnica de Feynman” é uma abordagem segundo a qual qualquer assunto pode ser aprendido através de passos lógicos e intuitivos aplicado por qualquer pessoa de maneira simples (Pipes, 2017):


Seu criador foi Richard Feynman, físico teórico americano conhecido nas academias por seus estudos na Física Quântica e temas relacionados.

A ideia central da técnica está na formulação de quatro passos a serem seguidos:


a) A escolha de um tópico ;

b) Ensinar o tópico escolhido;

c) Identificar as lacunas de conhecimento;

d) Simplificar e Usar analogias.


Porém, há outras afirmações que a Técnica Feynman pode ser ampliada para o aprendizado em seis etapas: escolher um tópico, ensinar o tópico, identificar lacunas de conhecimento, simplificar, revisar e organizar, e repetir o processo até dominar o assunto.


Diante do exposto, podemos fazer uma analogia interessante entre essa técnica e a maneira de aprender programação.

 

Explicação da Técnica Feynman

 

O início de qualquer aprendizado começa com a escolha de um tópico, que na verdade, é aquilo que nos propusemos a conhecer, portanto a estudar, na programação podemos comparar que a resolução de um Desafio de Projeto é a nosso ponto de partida. É o que queremos conhecer para podermos solucioná-lo.


Em seguida, afirma-se que os conceitos aprendidos sejam ensinados a alguém e aqui começa a mágica: para ser ensinar, primeiro devemos saber. Comparando ao desafio proposto na programação, esse “alguém” começa por você mesmo, ou seja, ensine a você mesmo o que você aprendeu no desafio.


O terceiro passo é verificar se você foi capaz de explicar corretamente a si mesmo. Se isso não foi possível, significa que você tem que revisar o assunto, a matéria estudada e começar tudo de novo.


O quarto passo é reescrever todo o processo, utilizando palavras simples fazendo analogias com outras situações semelhantes que possam facilitar o entendimento.

 

Caso Prático: Construção de uma API em Python para cálculo da Viabilidade de um projeto de Investimento

 

Vejamos os passos segundo a Técnica de Feynman.


1) Instalar as bibliotecas necessárias a serem utilizadas no projeto. Nesse caso, podemos usar “ pip install fastapi uvicorn numpy”


2) Definir o código da API. Exemplo:       

from fastapi import FastAPI
from pydantic import BaseModel
import numpy as np
 
app = FastAPI()
 
# Modelo para as entradas de dados
class InvestmentData(BaseModel):
 initial_investment: float
 cash_flows: list[float]
 discount_rate: float
 
# Função para calcular o Valor Presente Líquido (VPL)
def calculate_npv(initial_investment: float, cash_flows: list[float], discount_rate: float) -> float:
 npv = -initial_investment
 for t, cash_flow in enumerate(cash_flows, start=1):
     npv += cash_flow / (1 + discount_rate) ** t
 return npv
 
# Função para calcular a Taxa Interna de Retorno (TIR)
def calculate_irr(cash_flows: list[float]) -> float:
 return np.irr([-cash_flows[0]] + cash_flows[1:])
 
# Endpoint para calcular o VPL e a TIR
@app.post("/investment/viability/")
def investment_viability(data: InvestmentData):
 npv = calculate_npv(data.initial_investment, data.cash_flows, data.discount_rate)
 irr = calculate_irr([data.initial_investment] + data.cash_flows)
 
 return {
     "npv": npv,
     "irr": irr
 }

 

3) Executar a API - uvicorn api:app –reload


4) Testar a API – arquivo JSON


{
 "initial_investment": 100000,
 "cash_flows": [20000, 30000, 40000, 50000],
 "discount_rate": 0.1
}

    

 

A API retornará o VPL e a TIR calculados:


{
 "npv": 27623.413259,
 "irr": 0.1879532
}

 

 

Conclusão


Utilizar a Técnica Feynman como meio de aprender algo novo e desconhecido é apenas uma forma ou escolha para adquirir conhecimentos novos. A técnica, entretanto, requer dedicação, insistência e resiliência além de prática constante e motivação. Aplicar os conceitos em desafios práticos, como o da criação de uma API aplicada em cálculo de viabilidade de projetos de investimento, ajuda a solidificar o aprendizado através do caminho do mais difícil para o mais fácil, pois aprende-se fazendo.

 

Referências

 

PIPES, Taylor. Learning from the Feynman Technique. Evernote Blog, 21 jul. 2017. Disponível em: https://medium.com/taking-note/learning-from-the-feynman-technique-5373014ad230. Acesso em: 08/09/2024.

DIO. Digital Innovation One. Disponível em: https://web.dio.me/home. Acesso em: 08 set. 2024.

 


https://www.linkedin.com/in/izairton-oliveira-de-vasconcelos-a1916351

 

Compartir
Comentarios (3)
Juliano Silva
Juliano Silva - 07/10/2024 22:25

Boa noite!

Ótima colocação Izairton! Adorei seu artigo! Eu uso essa técnica para aprender e ensinar também!

Fui diagnosticado com TDAH aos 8 anos, e sempre tive muita, muita dificuldade em aprender.

Essa técnica salvou minha vida!

Hoje sou professor de desenvolvimento de Sistemas e ensino aplicando essa técnica para meus alunos!

e Regilene Silva, já existe um conceito de programação de fácil entendimento, criada por Alan Kay, o POO.

Izairton Vasconcelos
Izairton Vasconcelos - 09/09/2024 20:09

Olá Regilene Silva,


Muito obrigado pelo seus comentários e elogios por dedicar seu tempo para ler o meu artigo!

Fico contente em saber que você gostou e aprecio suas sugestões. Feedbacks como o seu são sempre bem-vindos e enriquecem ainda mais a discussão sobre o tema.

Espero continuar trazendo conteúdos que agreguem valor e contar com suas contribuições nas próximas interações.


Abraço e até a próxima!

Regilene Silva
Regilene Silva - 09/09/2024 12:24

Izairton, excelente artigo!

Fui alfabetizadora por quase 17 anos, e embora nas escolas públicas seja aplicado o método Top-Down (da palavra para a menor parte), considero que aprender "Bottom-UP" da menor parte para a maior, como a base para uma alfabetização eficiente(baseado em estudos científicos e em programas de ensino de países com excelentes colocações no PISA). Alguns autores associam esse método (da palavra para a partícula menor) à crescente taxa analfabetismo funcional na população brasileira. Mas isso é assunto para outro momento kkk

Sobre a técnica de Feynmam, todo mundo deveria tentar técnicas de aprendizado disruptivas como essa.

Tenho estudado seguindo ela, comecei no "topo da pirâmide" no inicio do ano e estou indo em direção a "base da pirâmide" agora no segundo semestre. Parto do complexo para o simples de maneira estruturada é claro.

Queria que existe um "método natural" de aprendizado para programação, como existe em idiomas. kkkkkkk

Mais uma vez excelente artigo!