Fiquei muito feliz com a galera que se juntou no grupo do Telegram e na lista de emails depois do meu post Vamos aprender Elm! No Telegram já somos quase 70 pessoas! Para aquecer o encontro de hoje a noite, resolvi escrever mais algumas linhas. E nos vemos hoje, 20h, no livecoding.tv.

Vai ser gravado e disponibilizado depois?

Sim, mas isso já estava lá no post anterior: Também vou disponibilizar a gravação (para quem não puder ver ao vivo, ou quiser rever algum detalhe).

Preciso saber JavaScript?

Não, aprender Elm não requer saber JavaScript. Na verdade entender o que é um front-end, como o navegador e o DOM funcionam ajuda — mas se não souber, vou resumir isso hoje no nosso encontro.

Só ter uma noção básica de programação já é mais do que o suficiente. O único pré-requisito mesmo é: vontade.

A sintaxe do Elm é parecida com a do Haskell, mas não precisa saber Haskell (inclusive eu comecei a estudar Haskell depois de aprender o básico do Elm).

Qual a minha experiência na área?

Pronto, já veio gente instigar a minha síndrome do impostor… (brincadeira, já não me preocupo mais com isso). Vamos lá:

Não tenho formação oficial na área (sou formado em design gráfico, tenho dois mestrados em sociologia e ciência política, e estou terminando um doutorado em sociologia também). E eu nunca programei com qualquer linguagem de baixo nível (ponteiros? sei o que são mas nunca usei).

Dito isso sou geek desde pequeno. Usava internet quando tinha que ligar pela linha telefônica a uma BBS (usando o novíssimo modem Zoltrix 2400) para enviar um email. Aprendi sozinho HTML, CSS, JavaScript no meio da década de 90. Depois trabalhei bastante com ActionScript (script tosquíssimo que rolava dentro do Macromedia Flash, e não sei mais que fim levou; e sim, o Flash não era da Adobe até a Adobe comprar uma empresa que se chamava Macromedia). Façam a piada que for mas foi ali — animando dinamicamente no Flash, trazendo dados de banco de dados para o Flash e etc. — que comecei a aprender e usar orientação a objetos. Felizmente o Flash começou a morrer e depois trabalhei muito com PHP (antes do Laravel; para mim Code Igniter foi a grande novidade). Flertei com Rails, que estava nas fraldas naquela época, mas antes de fazer mais nada tive uma crise e larguei a tecnologia.

Minha abstnência durou uns 7 ou 8 anos. Em 2013 deu saudades de programar. Retomei aprendendo Python e Ruby, SASS, CoffeeScript (sim, cheguei atrasado na festa), mas acabei me interessando muito mais pelo o que realmente mudou nesse período: metodologias, arquiteturas, ambientes de desenvolvimento (métodos ágeis, TDD e testes em geral, DRY, PaaS, ferramentas de devops etc.). Me apaixonei por Python e já tenho uns calos em Django e Flask — ou seja, meu foco continou sendo web.

Me apaixonei por ferramentas que ajudam o desenvolvedor e arrisquei escrever algumas (como o GetGist ou o webassets-elm por exemplo). Me apaixonei pelo mundo do código aberto e distribuo algumas linhas de código em alguns pacotes que uso. Recentemente comecei a aprender Elm pois odeio (opinião pessoal) o stack JavaScript. Rolou uma química legal entre eu e o Elm. O Elm e a arquitetura dele levam o front-end para um alto nível de abstração (mas sim, isso existe também no React com Redux, que, por sinal, foi inspirado no Elm).

Hoje, juntando tudo da minha trajetória, me vejo como alguém que usa tecnologia como voz política. Por fim, em um futuro próximo quero ter um caso com Elixir.

Quero queimar a largada da série, estudar mais, o que você recomenda?

Me desculpem os que não falam inglês. Conheço pouquíssima coisa de Elm em português. Por isso mesmo comecei a agitar essa comunidade aqui. Em português, obviamente, recomendo meu tutorial introdutório.

Indo para o inglês, essa é a documentação oficial do core do Elm, e esse é o guia oficial sobre a importantíssima arquitetura do Elm. Ambos estão listados na parte de documentação da página oficial do Elm.

E saindo das coisas oficiais, esse foi um dos posts mais legais que li quando comecei a estudar Elm. Amei também essa palestra recente sobre como o Elm te permite fazer estados impossíveis da tua aplicação realmente impossíveis. E hoje achei esse artigo muito legal de um desenvolvedor que menosprezou Elm (tsc ah! mais uma linguagem que compila para JavaScript, deixa pra lá…) e depois mudou de ideia (e o título diz que se você menosprezou Elm, provavelmente você está errado assim como ele estava). Preste atenção não nos pormenores da linguagem, mas em como a robustez dela e do ambiente que a envolve garantem qualidade (mesmo com mais gente, com difernetes níveis de conhecimento, escrevendo código na mesma aplicação).

Por fim, se você nunca ouviu falar de programação funcional, talvez essa série de artigos ajude a quebrar o gelo com os novos paradigmas.


Depois que publiquei esse texto: