I want to share with you a small piece of my project. It’s about Scala programming language. If to be more precise it’s about the most simple way of Scala studying. Why I said the most simple? Well, because I have a solid knowledge of mainstream problems which occur during Scala studying. So I invite you to discuss my job.

## Forewords

After 3 years of Scala usage, I can confidently say that it’s awesome programming language. Looking back in the days when I started learn Scala, I feel myself stupid, because I didn’t follow an optimal learning way. My attempts to understand Scala concepts were unsuccessful. Only through persistence, I achieved first results.

So I want to share with you my vision of Scala learning process.

## The problem

Here is a well know fact: Scala allows to write the same thing in many different forms. From the one side it’s nice, because you have a large variety of decisions. But from the other side, programming is not a good place for a writing thoughts in a free form.

Here is an example of function declaration in different forms:

```def sum(a: Int, b: Int): Int = { a + b }

def sum(a: Int, b: Int) = { a + b }

def sum(a: Int, b: Int) { a + b }

def sum(a: Int, b: Int) =  a + b
```

As you see, even in so simple action, as a function declaration we have multiple choices, to do it. The further we go, the harder things become for understanding. Of course this can be easily solved by introducing a code guide. Then the only thing you need to do is to learn all basic forms for main language constructions.

Keep in mind, that I’m speaking from the Java developer perspective.

Additional complexity make a syntax and a functional programming. Furthermore you never know what topic need to be learned next. Which came first, the chicken or the egg? In Scala I can ask you: which came first, a case class or a pattern matching? Or maybe an `apply` function?

Despite this circumstances, I choose Scala over Java ðŸ˜‰

## How I would learn it

I decided to start teaching from the most easiest topic for Java developers – object oriented programming. Scala has its own OOP implementation, and it’s very similar to Java 8, including functional interfaces. So there is nothing more trivial than Scala OOP for Java developers.

Here is a short promo video:

As soon as I’ll collect enough comments regarding this mini video course, I’m going to complete the rest of the video lecture. I invite you to join to the first group of “beta” students and leave your feedback about it. Almost 1 hour of content is waiting for you. Try the most unappreciated JVM programming language!

Get your free copy of the course via the subscription form below.