Scala Roadmap
Um guia prático e progressivo para aprender Scala, dominar a programação funcional e construir aplicações de backend.
🧱 1. Fundamentos de Programação
Seção intitulada “🧱 1. Fundamentos de Programação”Lógica de Programação
Seção intitulada “Lógica de Programação”- Algoritmos e resolução de problemas
- Pseudocódigo
- Linguagens compiladas vs interpretadas
Conceitos básicos
Seção intitulada “Conceitos básicos”- Variáveis e constantes
- Tipos de dados
- Comentários
- Entrada e saída no terminal
Controle de fluxo
Seção intitulada “Controle de fluxo”- Condicionais
- Estruturas de repetição
- Funções
🔺 2. Primeiros Passos com Scala
Seção intitulada “🔺 2. Primeiros Passos com Scala”Ambiente
Seção intitulada “Ambiente”- JDK e a JVM
- Instalação com o Coursier
- Scala CLI:
run,compile,test,fmt,repl - sbt
- Editor com Metals ou IntelliJ
Sintaxe do Scala 3
Seção intitulada “Sintaxe do Scala 3”valevar- Tipos básicos e inferência de tipos
- Strings interpoladas (
s,f,raw) - Indentação significativa e chaves opcionais
if,whileeforcomo expressões- Funções, parâmetros nomeados e valores padrão
@maine argumentos de linha de comando
🧩 3. Modelagem de Dados
Seção intitulada “🧩 3. Modelagem de Dados”- Classes e objetos (
object) - Companion objects
- Case classes
- Traits e mixins
- Enums e ADTs (algebraic data types)
- Opaque types
- Extension methods
🔀 4. Pattern Matching
Seção intitulada “🔀 4. Pattern Matching”matche exaustividade- Desestruturação de case classes e tuplas
- Guards
- Extractors (
unapply) - Pattern matching em
valefor
📦 5. Coleções
Seção intitulada “📦 5. Coleções”List,Vector,SeteMapimutáveis- Funções de ordem superior:
map,filter,flatMap,fold groupBy,groupMapReduce,sortBy,zipfor comprehensionsIteratoreLazyList- Coleções mutáveis e quando usar
⚠️ 6. Tratamento de Erros
Seção intitulada “⚠️ 6. Tratamento de Erros”OptionEitherTry- Exceções e quando usar
- Encadeando falhas com
for
λ 7. Programação Funcional
Seção intitulada “λ 7. Programação Funcional”- Funções puras e efeitos colaterais
- Imutabilidade
- Funções como valores, currying e composição
- Recursão e
@tailrec - Funções parciais
🧬 8. Sistema de Tipos
Seção intitulada “🧬 8. Sistema de Tipos”- Generics
- Variância (
+A,-A) - Type bounds
- Union e intersection types
- Givens,
usinge type classes - Context bounds
- Inline e metaprogramação (conceitual)
🗂️ 9. Organização de Projetos
Seção intitulada “🗂️ 9. Organização de Projetos”- Pacotes e imports
- sbt:
build.sbt, dependências e plugins - Projetos multi-módulo
- Mill (alternativa ao sbt)
🧪 10. Testes e Qualidade
Seção intitulada “🧪 10. Testes e Qualidade”- MUnit
- ScalaTest
- Testes baseados em propriedades (ScalaCheck)
- scalafmt
- Scalafix e opções de alerta do compilador
🐱 11. Programação Funcional com Typelevel
Seção intitulada “🐱 11. Programação Funcional com Typelevel”- Cats:
Functor,Monad,Applicative,Semigroup,Monoid - Validação com
Validated - Cats Effect:
IO,Resource,Ref, fibers - fs2 (streams)
🌀 12. ZIO
Seção intitulada “🌀 12. ZIO”ZIO[R, E, A]- Tratamento de erros tipado
- Injeção de dependências com
ZLayer - Fibers e concorrência
- ZIO HTTP
⚡ 13. Concorrência
Seção intitulada “⚡ 13. Concorrência”Futureda biblioteca padrão- Concorrência com Cats Effect ou ZIO
- Modelo de atores com Pekko
- Virtual threads da JVM
🌐 14. Desenvolvimento Web e APIs
Seção intitulada “🌐 14. Desenvolvimento Web e APIs”- http4s
- Tapir (endpoints tipados e OpenAPI)
- Play Framework
- JSON com circe, upickle ou jsoniter-scala
- Cliente HTTP com sttp
🗄️ 15. Banco de Dados
Seção intitulada “🗄️ 15. Banco de Dados”- Doobie (JDBC funcional)
- Skunk (PostgreSQL)
- Quill
- Migrações com Flyway
📊 16. Dados e Streaming
Seção intitulada “📊 16. Dados e Streaming”- Apache Spark com Scala
- Kafka com fs2-kafka ou ZIO Kafka
- Pekko Streams
☁️ 17. Deploy e Produção
Seção intitulada “☁️ 17. Deploy e Produção”- Empacotamento (
scala package, sbt-assembly, sbt-native-packager) - Imagens Docker
- GraalVM Native Image e Scala Native
- CI/CD com GitHub Actions
- Observabilidade com OpenTelemetry
🎯 18. Tópicos Avançados
Seção intitulada “🎯 18. Tópicos Avançados”- Macros e metaprogramação no Scala 3
- Derivação de type classes
- Scala.js para o front-end
- Performance na JVM
🚀 Próximos Passos - Da Sintaxe à Produção
Seção intitulada “🚀 Próximos Passos - Da Sintaxe à Produção”- Domine a base do Scala 3: case classes, enums, pattern matching e coleções
- Trate erros com
OptioneEithere escreva testes com MUnit - Aprenda os fundamentos de programação funcional e de type classes
- Construa uma API com http4s ou ZIO HTTP, banco de dados e JSON
- Empacote com Docker, publique com CI/CD e observe com OpenTelemetry
Foque em projetos reais ao invés de só teoria.
Sugestões:
- CLI útil para o seu dia a dia
- Processador de arquivos grandes com streams
- API REST funcional com http4s, Doobie e PostgreSQL
- Job de dados com Apache Spark
🔥 Regra de ouro: Aprenda - Aplique - Ensine - Repita