Learn Scala by having fun. Learn advanced Scala. Learn really well by coding a huge amount. Write more code during play than you do at work or at school.
ScalaQuest takes place in DataLand, a place where land produces data, and its inhabitants harvest data to survive.
In DataLand, many mysterious forces have arisen, with mystical names such as 4-train, C-cross-cross and Hava. They all made data harvesting more efficient, but they all came with dangers of their own. Eventually, Complexity Plagues appeared, forces became slow and inefficient. Whole crops were lost. Those were difficult times for all.
Within DataLand, a powerful wizard named Ski has roamed for a while, taming many of these forces. Recently, he's discovered a new force and named it Scala.
However, Ski knows this great power needs to be wielded wisely, so he's gathering an order of apprentices, who can use Scala skillfully and with great care.
He's called this the Order of The Ski, or Order[Ski] for short.
This is where you come in.
You shall become his apprentice, and learn Scala through practice and peril. You will start on the warm, safe haven of Values and Expressions, cross the Classes and Objects plains, hike over Variance Hills and make your way to the treacherous Implicit Forests.
And after that? Who knows what lies ahead.
Warning: This might be the first time you ask your team members to play a game during work hours.
Scala is a programming language that mixes Object Oriented and Functional Programming. It has been adopted by organizations such as Twitter, LinkedIn, Netflix and Duolingo, and it has enjoyed steady growth for several years. Lately, investment in the language has come from companies like Intel, IBM and Juniper Networks. Its developer community is sharp, curious and dynamic.
Scala is being used in solid frameworks like Akka, Spark and Play, and is gaining much traction in Data Analysis, Machine Learning and Reactive Systems.
If you're a developer, having Scala under your belt can open up exciting job opportunities.
Our goal is to cover a range of topics well beyond the very basics, including:
- Values and expressions
- Classes and Types
- Case Classes
- Value Classes
- Pattern Matching
- Error Handling
- Variance and Covariance
- The type system
- MONADS. Yes, Mondays. I mean Monads.
Each level will typically focus on one topic, but as you advance you will be prompted to reinforce your existing knowledge.
Who we are
As a Senior Software Developer & Trainer, Alejandro splits his time between architecting and building software, and coaching others on how to effectively use the Lightbend Reactive Platform. He has a strong passion for teaching, and is one of the few certified Lightbend trainers in Scala, Akka and Play. Over the last 4 years, he has taught over a thousand people from a variety of companies, ranging from startups like Hootsuite and large corporations like Intel and IBM. Alejandro has also created strong connections with many experts involved in building and supporting these platforms. (More about Alejandro)
Christian is an experienced software developer who has been around a few blocks, and is still trying to find the safest neighbourhood to hang out in. Professionally he is somewhat of a generalist. His love for Scala started a few years ago when he was exposed to its capacity for brevity, its hiding of redundancy found in other languages, all the while being unwary of the dangerous hidden parts. Now he believes the way forward is to come to terms with acceptance - that no advanced language can ever be fully understood, yet sufficient patience and effort can still lead to skill, power and accomplishment. (More about Christian)
Why do you care?
You will want to back up this project if:
- You want to learn Scala from scratch and have no time for nonsense
- You want to level up your Scala skillz
- You want to grow your Scala team
- You want to encourage others to learn the language
- You think great learning should be super affordable
How will you learn Scala?
We strongly believe fun is a multiplying factor for learning.
When you're having fun, you're more engaged and tend to retain more information.
Play is the highest form of research. -- Albert Einstein
Surely, Einstein was referring to the Zelda series here!
The best moments usually occur when a person’s body or mind is stretched [...] in a voluntary effort to accomplish something difficult and worthwhile. -- Mihaly Csikszentmihalyi, Flow (1990)
If you're working at a task that's too easy, you get bored. Too hard, and you ragequit.
As developers, we also call this Flow, and we crave it often - but do we leverage 'fun' and 'games' enough for learning?
Learning Scala is difficult and worthwhile... but can we make it **fun**?
Repetition. In order to survive the quest, you will need to write a lot of code. Exercises will rarely repeat, but we will ensure that every concept is covered from as many angles as possible. You will write lots of code.
Observation. As developers, we spend more time reading code than writing. We'll challenge you to read, understand and fix Scala snippets.
Metaphors. We believe the right metaphors can unblock learners from understanding hard concepts. The further the metaphor from code and software, the better. We will use the game environment to create these metaphors and help you develop an intuition for hard concepts.
That is our goal with ScalaQuest.
What about other learning options?
Yes, there are great training courses out there, some in pure digital form, others delivered by human beings.
But not everyone learns the same way.
We believe there's space for many different learning environments, and we've challenged ourselves to build one we really like!
In addition, we're creating a very affordable platform, that would allow you to learn at a monthly price that you can simply forget about.
Where the project is at
We've made tremendous progress and already have two working levels, with number 3 coming very soon. We plan on having beta testers in the near future to validate and improve our current direction. As a backer, you will be invited to participate in this phase, of course!
For some of the heavy lifting (compiling and running user code) we'll be integrating with Scastie in the near future.
Our goal with ScalaQuest is to provide a relatively humane path to learning the basics and the intermediate parts of the deep world of Scala. We want learners to experience success and failure in the form of adventure, laughter and death, rather than in the form of confusion and self-doubt. ScalaQuest is a safe place to play with fire!
Our objective is to launch ScalaQuest with 8 complete levels, which we believe will take us the rest of 2017. Our goal then is to have a publicly available game by January 2018.
After launching the game, our goal is to release one new level per month. As a player, you'll want to keep coming back for more content.
How else can I get involved?
You can follow us on Twitter and share our news with your friends.