Olá Habr! Nós da Hexlet lançamos este ano um projeto aberto e gratuito para iniciantes: code-basics.ru . Estes são cursos práticos interativos para quem nunca programou nada. Ensinamos o básico da programação e falamos sobre o design básico dos computadores.
Um curso completo de PHP e o primeiro módulo JavaScript já estão disponíveis. No caminho Racket e Python. Todo o código fonte da plataforma e as próprias lições estão em código aberto.
Hoje, quero falar um pouco sobre a essência do Code Basics, seu interior e a pilha tecnológica.

Por que é isso?
A principal questão: "por que você precisa de cursos básicos regulares, um milhão deles?" Infelizmente, a maioria dos materiais disponíveis são mais como guias ou tutoriais regulares no estilo de “faça, olhe aqui, funciona, legal, certo?”.
No processo de trabalhar nos principais programas de treinamento do Hexlet, encontramos um problema: se uma pessoa começa completamente, completamente do zero, sem saber quais são as variáveis e funções, então um curso ou tutorial básico típico pode não apenas ajudá-lo, mas até prejudicá-lo. Um iniciante se acostuma facilmente à “mágica”, aos melhores padrões de codificação, à abordagem de memorizar detalhes em vez de entender os sistemas.
À primeira vista, o projeto pode se parecer com a Codecademy, mas há três diferenças importantes:
1. Lições em russo. Começamos com o PHP, inclusive por esse motivo - não havia aulas de russo de alta qualidade, interativas e gratuitas, e o idioma permanece popular e importante na indústria.
2. Nós não ensinamos superficialmente. Esse é um dilema eterno - por um lado, você precisa cobrir muitas coisas e interesse em amplitude (e "palavras populares"); por outro lado, em Hakeslet, continuamos a seguir nossos princípios sobre a importância da fundação e do entendimento dos sistemas, não dos recursos. Mais fácil de entender com exemplos:
a) Consideramos os efeitos colaterais e a variabilidade - isso é incrivelmente importante, mas quase ninguém aborda esses tópicos nos cursos básicos.
b) No que diz respeito às strings, é importante falar sobre o próprio conceito de codificação . Trabalhar com símbolos não se transforma em "palavras mágicas e mágicas".
c) Quando ficar claro que o idioma permite que você faça coisas estranhas como 1 + '7'
, é importante apresentar ao aluno a digitação e, em particular, a digitação fraca .
d) Quando a base é aprovada e várias partes diferentes aparecem na mesma linha de código ao mesmo tempo, é muito importante que a pessoa entenda imediatamente qual é a expressão e como ela difere da instrução. E como as expressões podem estar contidas nas definições .
e) Quando o trabalho com funções começa, é útil continuar considerando expressões, mas já no contexto de chamadas, retornos e argumentos.
Eu acho que você entendeu. Nós programadores não pensamos muito em coisas como foo(a+b)
ou return foo(x)
, mas para iniciantes, muitas vezes essas construções acabam sendo muito mais complicadas do que o foo(a)
padrão foo(a)
ou o return x
. E aqui você pode dar uma olhada em todos os casos individuais, mas é melhor explicar a essência , o próprio sistema de regras básicas das linguagens de programação.
O conteúdo é granular e exibido sequencialmente, aumentando gradualmente a profundidade. Por exemplo, as mesmas funções e expressões são divididas em várias lições, nas quais consideramos vários aspectos, combinando-os gradualmente no quadro geral.
3. Gratuito e interativo. Também criamos o Code-Basics porque não havia para onde enviar iniciantes que estavam se preparando para o nosso programa principal, "A profissão de desenvolvedor de PHP". Simplesmente não há curso online gratuito! Mais precisamente, agora existe :)

Outras características importantes:
- Ensinamos você a nomear corretamente as funções e seguir os padrões de codificação.
- Compartilhamos nossa experiência e melhores práticas.
- Em cada exercício, há uma decisão do professor, que está disponível após uma decisão independente ou após meia hora de tentativa :) Ao mesmo tempo, sua decisão pode ser comparada à decisão do professor em uma página.
- Cada lição pode ser discutida com outros alunos. Tentamos limpar as discussões dos "spoilers"
- As missões são criadas em torno de Game of Thrones :) (veja a tela acima, por exemplo)
Autorização, permitindo que você acesse os exercícios e salve o progresso das lições, até agora apenas através do Github. Aproveitamos esta oportunidade para provocar os recém-chegados a criar uma conta no Github o mais rápido possível :)
Sob o capô
Hakeslet está escrito em Rails. Escrevemos sobre o interior de Hakeslet há três anos (omg, três anos!) No artigo “ Sob o capô do projeto educacional de Hakeslet ” e, desde então, muita coisa mudou, mas fundamentalmente tudo é o mesmo: Rails, PostgreSQL, tudo gira na AWS e parcialmente no Azure , estivador, implantação e orquestração usados ativamente através do Ansible. Sob cada exercício de cada usuário, surge um contêiner, que permite realizar exercícios de praticamente qualquer complexidade: com estruturas, servidores e acesso à web.
O Code-Basics decidiu inicialmente tentar algo novo e mais leve que o Rails. Por exemplo, nodejs + typescript + alguns microframework. Mas, de preferência, não menos expressivo que o Rails. Dado o nosso amor por Erlang, a escolha naturalmente caiu sobre a Fênix , especialmente desde que as mãos com coceira há muito se arranham para experimentar o Elixir.
O quadro surpreendeu inesperadamente. Apesar do número significativamente menor de recursos, ele é feito de maneira muito sólida. Integração com JavaScript, infraestrutura de teste desenvolvida, excelente ORM (mas incomum, você precisa se acostumar com isso), muitas contrapartes ferroviárias (por exemplo, suporte para slim ou gon).
Houve até uma coisa que foi feita muito melhor do que em outras estruturas: criar um conjunto de middleware para rotas específicas ou um grupo de rotas. Mesmo se você não usar o Phoenix, recomendamos que você se familiarize com o pipeline .
E dada a presença de atores (e canais pré-fabricados em Phoenix), podemos dizer definitivamente que o Elixir supera o Node JS em quase todas as situações. E, sendo outras coisas iguais, escolheremos a Phoenix para o desenvolvimento.

Na frente - usamos React + Redux. O layout é construído no Bootstrap 4, como em todos os nossos sites (hexlet.io, Guides.hexlet.io). O editor de exercícios interativos usa o Mônaco , que é a base do VS Code. Também mudamos para Mônaco no próprio Hexlet.
Infra-estrutura e implantação são Terraform, Ansible e vários atalhos para as equipes mais populares. As fontes de código básico estão disponíveis no Github e aceitamos solicitações de recebimento.
Também lições e exercícios práticos. Incluindo, aceitamos solicitações pull para tradução de lições para o inglês. Até agora, um número limitado de aulas de inglês está disponível aqui .
Quem deve usar o básico do código
- Iniciantes com zero experiência.
- Programadores iniciantes que “nadam” um pouco nos tópicos básicos e não entendem completamente como as coisas funcionam, que vão além de exemplos simples de livros didáticos.
- Professores que trabalham com iniciantes.
Planos
Os seguintes cursos de código básico são JavaScript, Racket e Python. Agora existem 63 lições em PHP e em breve mais algumas serão lançadas: nas funções da biblioteca, trabalhando com data e hora e unicode. O JavaScript possui o primeiro módulo e o conteúdo, em grande parte, será semelhante ao PHP: tudo, desde aritmética a funções.
Outros planos incluem tradução para o inglês. Você pode ajudar com isso :) Todos esses cursos sobre código básico também serão totalmente gratuitos.
Teremos o maior prazer em responder às suas perguntas nos comentários. Obrigada