Sugerindo melhorias em exercícios

O que considerar antes de sugerir melhorias em exercícios


Então você encontrou algo que gostaria de melhorar em um exercício. Antes de tudo, obrigado por se importar e por arranjar um tempo para nos contar! 💙

Quando mudamos um exercício, há algumas coisas a considerar, e elas são um pouco diferentes para os Exercícios de Aprendizagem (aqueles que ensinam tópicos do Syllabus) e os Exercícios de Prática (o resto). Falamos dessas diferenças mais abaixo.

Mas, antes disso, há algumas coisas genéricas a considerar.

Mudar um exercício tem consequências

Mudar um exercício tem várias consequências:

  1. Adicionar novos testes pode quebrar soluções existentes. Isso tem a consequência de tornar obsoleto o trabalho de milhares de pessoas, o que é frustrante para elas se os testes extras não estiverem apontando nenhum bug existente.
  2. Temos que retestar o trabalho de todo mundo, o que tem um custo tanto ambiental quanto financeiro.
  3. Um ou mais mantenedores precisam dedicar tempo para revisar as mudanças, o que significa que não poderão fazer outras melhorias na trilha durante esse período.

Por todos esses motivos, tomamos o cuidado de só mudar exercícios quando há um benefício forte e identificável.

Evite tender à entropia

O objetivo das suítes de testes dos exercícios não é cobrir todos os casos possíveis. Nossos exercícios não são software de produção, nem foram projetados para imitar casos de uso do mundo real. Eles são feitos para serem problemas de brinquedo que ajudam você a ganhar fluência em uma linguagem de programação. Por isso, evitamos de propósito tentar cobrir cada caso extremo, forçar muita validação de entradas ou outras preocupações desse tipo do mundo real. Se a sua sugestão de melhoria é capturar um caso extremo ou verificar a validação de entradas, é pouco provável que seja aceita, a menos que faça uma diferença substancial para o exercício.

Exercícios de Aprendizagem

Os Exercícios de Aprendizagem são projetados com um único objetivo: ensinar conceitos. Todas as mudanças em um exercício serão consideradas, em primeiro lugar, em relação a se elas melhoram o ensino dos conceitos.

Os Exercícios de Aprendizagem (especialmente) não são projetados para serem exaustivos nos seus testes. Além disso, muitas vezes eles podem ser um pouco artificiais ou rebuscados, para evitar usar conceitos que o estudante ainda não aprendeu, ou para não sobrecarregar o estudante.

Se a sua sugestão de mudança puder desviar a atenção do aprendizado do conceito, provavelmente será rejeitada. Se a mudança tornar o aprendizado mais fácil, ela será considerada com bastante atenção. Se ela ficar em algum ponto intermediário, pode ser aceita, mas dificilmente ganhará prioridade.

Exercícios de Prática

A principal coisa a entender sobre os Exercícios de Prática é que quase todos eles ficam em um repositório central (conhecido como "Problem Specifications"). Portanto, fazer uma mudança em um exercício tem efeitos em cadeia sobre todas as trilhas. Isso significa que uma boa mudança é ainda mais poderosa, porque ajuda todas as linguagens. Mas também aumenta o peso da mudança, já que vários mantenedores de diferentes trilhas precisam concordar com ela para que seja aceita, e depois os mantenedores de cada linguagem precisam trazer as mudanças para as suas trilhas.

Mudanças em exercícios também podem fazer com que os conceitos a que eles estão vinculados nos Syllabus fiquem mais nebulosos, ou que os exercícios precisem de recursos extras para serem resolvidos, o que muda o ponto em que eles ficam desbloqueados. Isso também precisa ser considerado entre as trilhas antes de as mudanças serem aceitas.

Embora tenhamos mecanismos para que apenas algumas trilhas tenham certos casos de teste, costumamos desencorajar isso, já que essa bifurcação pode gerar confusão tanto para mantenedores quanto para estudantes. Então, ao propor mudanças em Exercícios de Prática, considere o panorama mais amplo entre as trilhas.

Como fazer suas mudanças serem aceitas

Embora existam muitos motivos pelos quais não aceitamos sugestões, na maioria das vezes as pessoas têm ideias ótimas, e nós as aceitamos!

Também estamos quase sempre abertos a mudanças de redação que tragam mais clareza, especialmente nos Exercícios de Aprendizagem.

Para dar às suas sugestões a melhor chance de serem aprovadas, escreva-as mostrando que você considerou o seguinte:

  • A melhoria concreta que essa mudança traz (de preferência com exemplos de código do que a sua mudança possibilita/impede).
  • O impacto sobre as soluções existentes, e por que vale a pena.
  • Quaisquer mudanças nos conceitos ensinados ou usados.
  • Uma compreensão de por que as coisas podem ser do jeito que são. (Leia o nosso post sobre Chesterton's Fence.)

E lembre-se de expressar opiniões como opiniões e fatos como fatos. Isso costuma levar às conversas mais produtivas.

Obrigado mais uma vez por dedicar seu tempo para fazer uma sugestão e por ler este documento!