Pular para o conteúdo

Componentes de conhecimento

A área Knowledge, em /knowledge, é o vocabulário do Fito: todas as tecnologias que ele conhece e as peças de conhecimento presas a cada uma. Esta página é para quem abriu essa tela e quer conseguir lê-la — o que significam os três rótulos sob uma tecnologia, o que um componente guarda, e o que nada disso tem a ver com a nota que um caso dá a você.

Ela não cobre a autoria do vocabulário, nem cobre resolver um caso. Para um caso de ponta a ponta, veja Comece seu primeiro caso.

O Fito não modela uma tecnologia como um bloco só. Ele divide cada uma em peças pequenas e endereçadas separadamente, chamadas componentes de conhecimento (knowledge components), e esses componentes são o vocabulário que todo o resto do produto fala: um caso declara o que ensina em componentes, o tutor fica limitado aos componentes que o caso dele referencia, e sua proficiência é registrada por componente.

Todo componente carrega um id de referência canônico, montado a partir do tipo, do slug da tecnologia dele e do slug dele próprio — concept:javalin.handler, execution-fact:javalin.ctx-json-sets-result-and-content-type, usage-scenario:javalin.serving-a-json-rest-endpoint. Esse id é o que um caso fixa, o que o aplicativo web usa nas rotas e o que o terminal imprime de volta para você. Ele aparece em fonte de código sob o nome do componente, na página dele.

Um id publicado nunca muda. Onde dois componentes gerariam o mesmo slug, o segundo recebe um sufixo -2.

As leituras sob /knowledge são públicas, então o vocabulário inteiro pode ser navegado sem uma conta.

Os componentes de uma tecnologia vêm em três tipos. A tabela a seguir lista os três na ordem que as abas de tipo usam:

Tipo O que ele captura Exemplo
Concept Vocabulário do domínio e o modelo conceitual. “Idempotência em HTTP”
Usage scenario Um padrão orientado a objetivo para aplicar a tecnologia. “Implementar um endpoint de pagamento idempotente”
Execution fact Um fato de comportamento sobre como a tecnologia funciona em execução. “PUT tem de ser idempotente”

A divisão não é enfeite: ela é a diferença entre saber o que um termo significa, saber como a coisa se comporta quando roda, e saber buscá-la de propósito. A página de uma tecnologia carrega um selo e uma contagem por tipo, e as abas de tipo — All, Concepts, Usage Scenarios, Execution Facts — reduzem a lista a um tipo por vez.

Um componente não se liga a uma tecnologia diretamente. Ele vale para uma ou mais linhas principais (major lines) daquela tecnologia, e toda linha à qual ele se aplica pertence à mesma tecnologia — é isso que permite que um único slug de tecnologia fique dentro do id de referência.

Duas páginas carregam essa estrutura:

O conteúdo de um componente é estruturado em campos, não em texto livre. Um template declara os campos que um componente daquele tipo tem de preencher — as chaves, os rótulos, a ordem, e se cada um é um valor único ou uma lista — e o componente registra contra qual versão de template ele foi escrito. O script de carga do backend carrega os templates; não existe interface para editá-los.

Cada valor de campo é um fragmento de markdown: parágrafos, ênfase, código em linha, listas, citações, tabelas e blocos de código cercados com uma marca de linguagem. HTML cru não é permitido, e H1 também não — o nome do componente ocupa esse nível. Um título escrito dentro de um campo é rebaixado ao ser exibido, para ficar abaixo do campo em que está.

Os campos são o que vira as seções com título na página do componente e as entradas do sumário dela. O sumário fica no nível dos campos: um título dentro de um campo nunca aparece nele.

O conteúdo é gerado e curado pela comunidade, então o aplicativo web higieniza cada fragmento antes de exibi-lo e colore o código cercado conforme a linguagem marcada na cerca.

Esta é a parte que faz o vocabulário importar em vez de enfeitar.

A rubrica de um caso é uma lista de critérios, e cada critério nomeia um componente de conhecimento e o nível de Bloom que ele mira para aquele componente. Quando seu trabalho é avaliado, cada critério recebe uma nota de 0 a 3. Uma nota 2 ou 3 registra o nível de Bloom do critério como a proficiência do componente dele, e uma nota 0 ou 1 registra NOT_ACHIEVED. A proficiência é registrada por componente de conhecimento, nunca por competência.

A regra completa, o que NOT_ACHIEVED quer dizer ao lado de um componente não avaliado e como esses registros viram uma competência estão todos em Níveis de Bloom e proficiência.

Duas estruturas referenciam componentes, e elas não são a mesma coisa. Uma competência é uma capacidade permanente cujos elementos são definidos, cada um, por um componente. Um objetivo de aprendizagem é um vínculo que um único caso declara sobre si mesmo.

O painel Used in cases na página de um componente lê o segundo tipo: ele lista os casos publicados que referenciam o componente como objetivo de aprendizagem ou como pré-requisito. Para a diferença, e o teste que a resolve, veja Competências e objetivos de aprendizagem.