Quero conversar com você sobre por que consertamos encanamentos com mais frequência do que escrevemos teses sobre eles, sobre diferentes abordagens de ensino de programação e como tentamos aplicar uma delas no nosso novo produto, Hyperskill.
Se você não gosta de introduções longas, vá diretamente para o parágrafo sobre programação. Mas assim será menos divertido.
Um desvio lírico
Vamos imaginar uma moça chamada Masha. Hoje, Masha planejava lavar algumas frutas e assistir a um filme com calma, mas aí vem o imprevisto: de repente, ela percebe que a pia da cozinha entupiu. O que fazer com isso - ainda não está claro. É possível deixar a questão pendente por um tempo indeterminado, mas como tem tempo livre agora, Masha decide resolver o problema imediatamente. O bom senso sugere duas opções: a) chamar um encanador b) resolver sozinha. A moça escolhe a segunda opção e começa a estudar instruções no YouTube. Seguindo o conselho do usuário Vasya_the_plumber, Masha olha embaixo da pia e vê um tubo plástico se contorcendo, composto por várias partes. Ela cuidadosamente solta uma peça na base da pia, mas não encontra nada. Um pedaço do tubo um pouco mais abaixo está totalmente entupido com uma substância desconhecida, e nem mesmo o garfo encontrado na mesa consegue desobstruí-lo. Especialistas da internet dão prognósticos nada encorajadores: a peça terá que ser trocada. No mapa, Masha encontra a loja de materiais de encanamento mais próxima, leva consigo o pedacinho comprometido e compra um igual, só que novo. Por sugestão do vendedor, Masha também leva um novo coador, para prevenção. A missão está completa: a pia funciona como deveria, e sua protagonista, enquanto isso, aprendeu o seguinte:
- Os tubos sob a pia podem ser desparafusados e aparafusados sozinhos;
- A loja de encanamentos mais próxima fica a uma distância de um quilômetro e meio do apartamento de Masha.
Provavelmente, Masha nem percebeu o quanto aprendeu e o que adquiriu de conhecimento, porque estava mais preocupada com o seu conforto futuro, além de assistir ao filme e a uma maçã lavada. Na próxima vez que surgir um problema semelhante, a moça irá resolvê-lo muito mais rapidamente. Na verdade, Masha não estava apenas restaurando a paz; ela estava aprendendo indutivamente, ou seja, a partir de casos específicos, e com foco prático, ou seja, fazendo as coisas, em vez de estudá-las detalhadamente e com antecedência.
Tudo poderia ter sido diferente. Suponhamos que Maria esteja sentada à noite na cadeira e, de repente, perceba que não está mental e fisicamente pronta para um entupimento na pia. Ela se apressa a se inscrever na academias de encanadores, estuda os tipos de pias, tubos e possíveis conexões, a classificação dos problemas de encanamento e as possíveis opções de resolução. Maria passa as noites sem dormir, memorizando termos e nomes. Talvez ela até escreva uma tese de doutorado sobre teórica dos tubos, onde discute as juntas de borracha. Finalmente, ao obter o certificado, Maria examina a cozinha com orgulho, convicta de que agora até mesmo um pequeno problema na pia será resolvido com um estalar de dedos. Nesse cenário, a jovem aprendeu dedutivamente, passando do geral para o específico, e estava mais focada na teoria..
Então, qual abordagem seria melhor? No caso da pia e do entupimento — a primeira, e aqui estão as razões:
- Se o que importa é apenas uma pia funcionando, então basta saber apenas o que diz respeito a essa área. Quando Maria entender que faltam conhecimentos, ela certamente encontrará uma maneira de aprender mais.
- Um conhecimento enciclopédico pode não ser útil em situações reais, porque o hábito não foi praticado. Para aprender a sequência de ações, é mais eficaz não apenas ler sobre elas, mas executá-las.
Vamos deixar a pobre Maria em paz e passar para o processo de aprendizado como um todo.
Programação: aprender ou fazer?
Costumamos pensar que, para se desenvolver e se tornar um especialista em uma área desconhecida, é preciso primeiro entrar em uma universidade ou pelo menos se inscrever em cursos. Escutamos atentamente o que é ensinado, executamos as tarefas. Quando finalmente temos o tão sonhado diploma ou certificado, ficamos instantaneamente perdidos, porque não entendemos por que precisamos de tanta informação e como aplicá-la concretamente. Isso não é um problema se o plano é escrever trabalhos acadêmicos e apresentá-los em conferências. Caso contrário, devemos buscar habilidades, ou seja, fazer e refazer coisas concretas, experimentar e errar, para lembrar por muito tempo como não agir.
Uma das áreas onde uma "mão habilidosa" ou um "olhar atento" se alinha com uma ampla visão de mundo é a programação. Se você conversar com desenvolvedores experientes, ouvirá histórias impressionantes, nas quais a pessoa se dedicou à matemática/física/ensino desde jovem, e depois se cansou e mudou para o backend. Também existem programadores sem diploma superior! O que é valorizado em um desenvolvedor não é o certificado ou o diploma, mas sim a quantidade e a qualidade dos programas, scripts e sites que foram criados.
"Mas espere!", você pode argumentar, "isso soa bonito — é só pegar e fazer! Não consigo simplesmente escrever um programa para mim mesmo, se nunca programei antes! É importante para mim entender onde programar, como me comunicar com o compilador em uma linguagem de programação. Não é como encontrar o telefone de um encanador no Google."
Há uma verdade amarga nisso. Um aspecto desconhecido puxa outro, que por sua vez puxa um terceiro, e logo esse processo se transforma em um show de mágica, onde o mágico continua puxando lenços interligados sem conseguir retirá-los de sua cartola. O processo, sinceramente, é desagradável, e no quinto "lenço" já parece que a profundidade da ignorância se aproxima da Fossa das Marianas. A alternativa a isso são as mesmas palestras sobre 10 tipos de variáveis, 3 tipos de loops e 150 bibliotecas potencialmente úteis. É triste.
Hyperskill: nós construímos, construímos e finalmente construímos.
Pensamos muito sobre esse problema. O quanto pensamos é eloquentemente indicado pela data da última postagem em nosso blog. Após todas as discussões e tentativas de integrar uma nova abordagem no Stepik, conseguimos... um site diferente. Você pode já ter ouvido falar dele como parte da JetBrains Academy. Nós o chamamos de Hyperskill, incorporamos a aprendizagem baseada em projetos, conectamos a ele uma base de conhecimentos em Java e contamos com o apoio da equipe EduTools. Vamos entrar em mais detalhes agora.
Um objetivo específico. Oferecemos um "cardápio" de projetos, ou seja, programas que você pode escrever com nossa ajuda. Entre eles estão: jogo da velha, assistente pessoal, blockchain, mecanismo de busca, etc. Os projetos consistem em 5-6 etapas; o resultado de cada etapa é um programa pronto. "Por que então as outras etapas, se na primeira já consegui tudo?" Obrigado pela pergunta. A cada passo, o programa se torna mais funcional ou mais rápido. No início, o código ocupa 10 linhas; no final, pode não caber em 500.
Um pouco de teoria. Não é possível sentar e, sem saber uma palavra sobre programação, escrever até mesmo um Hello World. Por isso, em cada etapa do projeto, você verá quais fundamentos teóricos precisa dominar e, principalmente, onde encontrá-los. Os fundamentos estão também na Hyperskill na seção 'Mapa do Conhecimento' (Knowledge Map). Para a primeira fase do projeto, os alunos não precisam ler dados de arquivos, mesmo que não saibam fazê-lo depois. Eles aprenderão mais tarde, para seu desenvolvimento pessoal, ou será necessário na próxima etapa.
Mapa do conhecimento. Nele, você pode ver quais temas já estudou e como eles estão interconectados. Abra qualquer tópico interessante. Você pode dar uma olhada rápida, mas recomendamos resolver pequenas tarefas para se certificar de que a informação foi absorvida. No início, a plataforma lhe dará testes, após os quais — algumas tarefas de programação. Se o código compila e passa nos testes, compare-o com a solução de referência (reference solution); às vezes isso ajuda a conhecer uma maneira mais otimizada de implementação. Ou a garantir que sua solução está ótima.
Nada além do necessário. Estamos esperando tanto usuários 'iniciantes' quanto desenvolvedores experientes. Se você já escreveu programas, não se preocupe, não vamos fazer você somar 2+2 ou inverter uma linha novamente. Para entrar diretamente no nível necessário, ao se registrar, indique com o que você já está familiarizado e escolha um projeto mais desafiador. Não tenha medo de se subestimar: se precisar, sempre poderá voltar a um tema esquecido no mapa do conhecimento.
Ferramentas. É ótimo escrever pequenos pedaços de código em uma janela especial no site, mas a verdadeira programação começa com o trabalho em um ambiente de desenvolvimento (Integrated Development EAmbiente). Programadores experientes sabem não apenas como escrever código, mas também como construir interfaces gráficas, compor diferentes arquivos em um projeto, usar ferramentas de desenvolvimento adicionais, e parte desses processos é realizada pela IDE. Por que não aprender essas habilidades enquanto você aprende programação? Aqui entra o JetBrains com uma versão especial do IntelliJ IDEA Community Educational, já equipada com o plugin EduTools. Nessa IDE, você pode realizar cursos de aprendizado, verificar as tarefas resolvidas e consultar dicas sobre o projeto, caso você tenha esquecido algo. Não se preocupe se você nunca ouviu as palavras “plugin” ou “IDE” antes: nós vamos explicar o que são e como instalá-los em seu computador ou laptop sem muitos problemas. Entenda a teoria e depois vá para a IDE e complete mais uma etapa do projeto lá mesmo.
Prazos. Não existem! Quem somos nós para bater na sua cabeça e dizer qual o ritmo que você deve escrever o programa. Quando você gosta de escrever código e deseja finalizá-lo, você o termina, hoje ou amanhã. Trabalhe no desenvolvimento com prazer.
Erros. Todos cometem erros, cometa também em uma das etapas do projeto, e então essa etapa não passará nos testes automáticos. Bem, você terá que descobrir sozinho o que deu errado. Poderíamos dizer onde está o erro, mas isso realmente o ensinaria a escrever código com atenção? Leia as dicas da IDEA ou o tópico teórico sobre Bugs, e quando o programa finalmente funcionar, a explosão de dopamina provavelmente não demorará a chegar.
Resultado visual. Então, você terminou seu primeiro projeto, e agora? Aproveite os frutos do seu trabalho! Jogue uma partida de jogo da velha com amigos e mostre seus sucessos. Carregue o projeto no GitHub para apresentar a um futuro empregador, escreva a descrição você mesmo, mencionando os conhecimentos que aplicou. 4-5 projetos desafiadores e, voilà, um portfólio modesto para um desenvolvedor iniciante está pronto.
Oportunidade de crescimento. Suponha que você esteja no Hyperskill e não veja um tópico importante ou um projeto útil. Informe-nos sobre isso! Se seu histórico é mais amplo e rico do que o mapa de conhecimentos, nos escreva através do formulário. Nossa equipe compartilhará dicas e truques com você, então ficaremos felizes em ajudá-lo a transformar seu conhecimento em conteúdo útil, compreensível para usuários de diferentes idades e níveis. Talvez até paguemos, mas isso não é certo.
Bem-vindo: Visite, assista, experimente, sugira, elogie e critique. Nós também estamos aprendendo a ensinar você.
Fonte: habr.com
