The Codest
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Indústrias
    • Fintech e Banca
    • E-commerce
    • Adtech
    • Tecnologia da saúde
    • Fabrico
    • Logística
    • Automóvel
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
Seta para trás VOLTAR
2018-11-05
Desenvolvimento de software

TRILHOS DE ENSINO

Michal Begejowicz

Em primeiro lugar, algumas palavras sobre o curso em si. Antes mesmo de começar, os nossos alunos receberam uma tarefa de "pré-trabalho" - que continha instruções e exercícios a realizar antes do curso. As suas tarefas incluíam instalar o Linux, familiarizar-se com um terminal e algumas noções básicas de HTML, CSS e Git.

Os cálculos

Durante os quatro meses seguintes, encontrámo-nos de duas em duas semanas e, passo a passo, fomos descobrindo O Fantástico Mundo de Rubi et al. O curso abordou a linguagem Ruby, Ruby on Rails, Javascript e algumas ferramentas populares para RoR aplicações como Devise, Pundit, Sidekiq ou Carriewave.

Cada aluno tinha também um mentor, que era responsável por motivar os alunos e verificar o seu trabalho entre as reuniões.

O plano de ataque

Como professor, vim preparado com 3 anos de experiência com Ruby on CarrisO objetivo é obter uma experiência de 10 anos com programação em geral e algumas apresentações com questões e exercícios para fazer.

Para além de um pequeno curso de gestão de Linux que tinha feito anteriormente, não tinha qualquer experiência de ensino. Quanto aos alunos, só sabia que iam ser dez e que tinham origens muito diferentes - para alguns deles, era a primeira vez que tinham contacto com a programação, enquanto outros tentaram aprender C ou Ruby sozinhos antes de se inscreverem no curso.

Decidi tomar duas resoluções - serei paciente e explicarei tudo se for necessário (nada de "já falámos sobre isso"). A primeira resolução resistiu ao teste do tempo, mas a segunda - obviamente - não. Decidi não fazer nenhuma preparação especial em relação às coisas que ia ensinar - trabalho com Ruby/Rails todos os dias e sinto-me bastante confiante nas minhas capacidades nessa área. No máximo, eu li as apresentações que eu tinha.

Duas pessoas em frente a computadores portáteis

O desafio

Uma das primeiras coisas que se tornou absolutamente clara para mim logo após o início do curso - não se pode explicar tudo. É uma perceção muito triste para alguém como eu, que gosta de aprofundar e descobrir como as coisas funcionam, mas no tempo limitado de uma reunião há apenas um limite para o que se pode ensinar e que pode ser lembrado pelos alunos. Acontece que se pode ser um programador Ruby muito decente sem saber exatamente como é que os Arrays são representados na memória ou como é que o Devise funciona exatamente.

As aulas decorriam aos sábados e domingos, das 9 às 17 horas. É importante compreender que ensinar é um trabalho bastante cansativo - para além de explicar a matéria, também é necessário estar sempre pronto para responder a perguntas relacionadas (ou não tão relacionadas) e resolver vários problemas que os alunos têm.

O café é seu amigo, mas o mais importante é a já mencionada paciência. Para as pessoas que nunca programaram antes, conceitos que são óbvios para os programadores - como loops, tipos ou mesmo variáveis - precisam de ser aprendidos e não é um processo instantâneo. Se programas há XX anos, consideras a matemática fácil e consegues enumerar todos os paradigmas de programação conhecidos a meio da noite, pode ser difícil colocares-te na pele de uma pessoa que não sabe bem de que lado do sinal de igual fica o nome da variável. Mas é vital que o faças. Conceitos básicos como variáveis, loops ou arrays tornam-se tão naturais que é difícil compreender como é que alguém não os entende de imediato, mas são mais difíceis do que parecem para "nós programadores".

Uma dificuldade adicional, especialmente no início do curso, foi explicar esses conceitos para que fossem bem compreendidos. Na minha opinião não é possível aprender Rails sem aprender Ruby - embora eu saiba que alguns argumentam que não é o caso. É verdade que Rails tem seus próprios padrões e muitas coisas podem ser lembradas ao invés de aprendidas no começo. No entanto, eu acho que para se tornar um desenvolvedor RoR consciente, é necessário um entendimento moderado de Ruby, OOP ou SQL é uma obrigação. Ensinar as pessoas a programar é bastante diferente de ensinar Rails - enquanto que com Rails há muita coisa que se pode esperar que seja simplesmente aceite ou acreditada (ninguém precisa de saber como funcionam os callbacks no início - apenas o que podem fazer), os conceitos de programação devem ser explicados com mais detalhe.

Envolver a força

Então, como é que se faz isso?

Pacientemente.

Provavelmente, parece que estou sempre a repetir-me, mas nunca é demais salientar a importância da paciência. Mesmo os meus alunos mais motivados são conhecidos por cometerem um erro de sintaxe aqui e ali - faz parte do processo normal de aprendizagem e não há realmente nada a fazer para um professor para além de mostrar qual é o erro e como o corrigir. Com o tempo, eles aprenderão a corrigi-los sozinhos, mas isso requer muito mais do que um ou dois erros.

Outro aspeto a ter em conta é que o Ruby não é tão fácil como parece. Se começou a aprender Ruby com conhecimentos de C/Java/Python, provavelmente tudo parecia tão limpo, agradável e simples. Tente pensar sobre isso, e vai notar:

  1. Para que servem os parênteses? Devo usá-los? Não devo?
  2. O que é isso? próprio coisa? Por vezes, tenho de o utilizar (por exemplo. attr_writer – self.variable = ...), por vezes não o faço (attr_reader – variável) e às vezes não consigo! (private def some_method – self.some_method irá provocar um erro)
  3. Blocos. Aposto que mesmo alguns programadores experientes (de diferentes linguagens) precisariam de um pouco mais do que o esperado para compreender #inject

Para além da simples correção dos erros, há a questão de transferir a sua compreensão das coisas para os seus alunos. Para isso, é necessária muita flexibilidade. Alguns alunos ficaram satisfeitos com o facto de Array ser apenas uma lista ordenada de elementos. Outros precisavam de uma analogia mais visual, como uma prateleira com lugares numerados onde se podem colocar coisas. Dei por mim a explicar as mesmas coisas várias vezes de formas diferentes - o que é um exercício bastante desafiante!

Mas, como eu disse antes, não se pode explicar tudo. Quando eu estava explicando relações em Rails, era mais um "é assim que se faz, e isso permite que você faça isso e aquilo. Se você quer isso, é incrível". Felizmente ninguém me perguntou como isso funciona - eu não acho que desenvolvedores juniores precisam saber sobre reflexões.

Posicionamento situacional

Devido ao formato do nosso curso (reuniões de dois em dois fins-de-semana e longas pausas), tivemos de garantir que os períodos entre esses fins-de-semana são produtivos para os nossos alunos - sem eles praticarem durante esse tempo, o curso não funcionaria de todo.

Alguns dos meus colegas de trabalho aceitaram ser mentores dos alunos do curso. O trabalho dos mentores consistia em verificar os exercícios que eram atribuídos durante as reuniões de fim de semana e ajudar com questões que surgiam durante a sua realização. Os alunos estavam a comunicar com os mentores através do Slack.

Fui mentor de dois dos meus alunos. Era uma forma significativamente diferente de ensinar - e cheia de armadilhas. Uma coisa que percebi um pouco tarde demais é que um bom programador deve ser independente - eles devem pelo menos tentar resolver os problemas sozinhos antes de pedir ajuda. E estar sempre disponível no Slack não só me tomava muito tempo, como também não inspirava essa independência.

Não me interpretem mal - muitas das perguntas que me foram feitas como mentor eram válidas e responder-lhes era aprofundar os conhecimentos dos alunos. No entanto, é muito fácil entrar no "modo professor" e explicar novamente todas as questões das reuniões do fim de semana. Na perspetiva atual, penso que o papel de um tutor consiste em dar uma visão geral, fornecer ligações úteis e fazer algumas perguntas que possam ajudar a encontrar a solução. Ocasionalmente, pode haver explicações, mas não deve ser a maior parte delas.

A utilização da inteligência

Todos os alunos são diferentes. Uma das maiores dificuldades foi ajustar o ritmo do curso de modo a que fosse o mais adequado para todos os alunos. Devido às diferentes origens e ao nível geral de facilidade em aceitar novas ideias entre os alunos, é uma tarefa quase impossível.

O nosso prazo era de 9 reuniões - vezes 2 dias vezes 8 horas dadas nós 144 horas para passar de 0 a Ruby-herói. Era fundamental fazer todo o programa neste tempo - o que por si só obrigava a um ritmo bastante rápido. As primeiras três reuniões foram todas sobre Ruby - depois uma reunião para SQL, depois RoR e uma reunião para JS pelo meio.

Como professor, tive sempre de saber quem compreendia mais ou menos parte do material que estava a apresentar. Por vezes, bastava perguntar se tinham percebido, outras vezes fazia pequenos testes. Por exemplo, pedi a todos os meus alunos que me enviassem as suas próprias definições de conceitos de Ruby, como classe, próprio, método, variável etc., no Slack. Se alguma questão fosse particularmente pouco clara, eu voltava atrás e tentava explicá-la novamente.

Ilusão e Realidade

Resumindo, ensinar foi uma tarefa ainda mais difícil do que eu pensava. Também pode ser muito gratificante. No entanto, é um trabalho árduo e os seus efeitos não dependem apenas do professor - o esforço do próprio aluno é ainda mais importante na sua aprendizagem. Isto faz com que o ensino seja muito diferente da programação, onde normalmente podemos ser donos de todos os sucessos e fracassos. É importante recordar esta diferença.

Também nos obriga a pensar em questões em que normalmente não pensamos - explicar as coisas também nos dá uma melhor compreensão das mesmas. Desta forma, o ensino também pode fazer de si um melhor programador.

Artigos relacionados

Ilustração de uma aplicação de cuidados de saúde para smartphone com um ícone de coração e um gráfico de saúde em ascensão, com o logótipo The Codest, representando soluções digitais de saúde e HealthTech.
Desenvolvimento de software

Softwares para o setor de saúde: Tipos, casos de uso

As ferramentas em que as organizações de cuidados de saúde confiam atualmente não se assemelham em nada às fichas de papel de há décadas atrás. O software de cuidados de saúde apoia agora os sistemas de saúde, os cuidados aos doentes e a prestação de cuidados de saúde modernos em...

OCODEST
Ilustração abstrata de um gráfico de barras em declínio com uma seta ascendente e uma moeda de ouro que simboliza a eficiência ou a poupança de custos. O logótipo The Codest aparece no canto superior esquerdo com o slogan "In Code We Trust" sobre um fundo cinzento claro
Desenvolvimento de software

Como dimensionar a sua equipa de desenvolvimento sem perder a qualidade do produto

Aumentar a sua equipa de desenvolvimento? Saiba como crescer sem sacrificar a qualidade do produto. Este guia cobre sinais de que é hora de escalar, estrutura da equipe, contratação, liderança e ferramentas - além de como o The Codest pode...

OCODEST
Desenvolvimento de software

Construir aplicações Web preparadas para o futuro: ideias da equipa de especialistas do The Codest

Descubra como o The Codest se destaca na criação de aplicações web escaláveis e interactivas com tecnologias de ponta, proporcionando experiências de utilizador perfeitas em todas as plataformas. Saiba como a nossa experiência impulsiona a transformação digital e o negócio...

OCODEST
Desenvolvimento de software

As 10 principais empresas de desenvolvimento de software sediadas na Letónia

Saiba mais sobre as principais empresas de desenvolvimento de software da Letónia e as suas soluções inovadoras no nosso último artigo. Descubra como estes líderes tecnológicos podem ajudar a elevar o seu negócio.

thecodest
Soluções para empresas e escalas

Fundamentos do desenvolvimento de software Java: Um Guia para Terceirizar com Sucesso

Explore este guia essencial sobre o desenvolvimento de software Java outsourcing com sucesso para aumentar a eficiência, aceder a conhecimentos especializados e impulsionar o sucesso do projeto com The Codest.

thecodest

Subscreva a nossa base de conhecimentos e mantenha-se atualizado sobre os conhecimentos do sector das TI.

    Sobre nós

    The Codest - Empresa internacional de desenvolvimento de software com centros tecnológicos na Polónia.

    Reino Unido - Sede

    • Office 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polónia - Pólos tecnológicos locais

    • Parque de escritórios Fabryczna, Aleja
      Pokoju 18, 31-564 Cracóvia
    • Embaixada do Cérebro, Konstruktorska
      11, 02-673 Varsóvia, Polónia

      The Codest

    • Início
    • Sobre nós
    • Serviços
    • Case Studies
    • Saber como
    • Carreiras
    • Dicionário

      Serviços

    • Aconselhamento
    • Desenvolvimento de software
    • Desenvolvimento backend
    • Desenvolvimento de front-end
    • Staff Augmentation
    • Programadores de back-end
    • Engenheiros de nuvem
    • Engenheiros de dados
    • Outros
    • Engenheiros de GQ

      Recursos

    • Factos e mitos sobre a cooperação com um parceiro externo de desenvolvimento de software
    • Dos EUA para a Europa: Porque é que as empresas americanas decidem mudar-se para a Europa?
    • Comparação dos centros de desenvolvimento da Tech Offshore: Tech Offshore Europa (Polónia), ASEAN (Filipinas), Eurásia (Turquia)
    • Quais são os principais desafios dos CTOs e dos CIOs?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Direitos de autor © 2026 por The Codest. Todos os direitos reservados.

    pt_PTPortuguese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek cs_CZCzech pt_PTPortuguese