Mike Slinn

Some Cold Water to Slake Your Thirst

— Draft —

Published 2019-08-12. Last modified 2024-07-20.
Time to read: 3 minutes.

Scala is a huge language. Few people master all of it. The time and energy required to fully absorb Scala is not justifiable for most people. As a result, many programmers learn some new features by using them in the programs they are currently writing, whether the programs really needed those features or not. Scala is an expensive language to write. It is often an expensive language to read, as well.

Most scientific and business users require and expect a stable computing platform for their solutions.

Unstable

In contrast, since Scala was first released 20 years ago, the Scala language has been treated by its free-spirited developers as a playground for novel software concepts. While compiler and language features have come and gone, ongoing compatibility has never been a primary concern.

Furthermore, the Scala ecosystem has always been unstable.

  • One of the driving factors for this behavior is that acting irresponsibly can yield revenue for the inner circle. A second factor is that Scala’s academic roots have not mustered the resources to deliver a long-term, comprehensive, user-centered approach.
  • The loss of a major library repository host (bintray.com) was traumatic for library maintainers and their users. Every user (Scala programmer) paid the price. Every publisher (library programmer) also paid the price; for example, I did not republish the dozens of libraries that I had published over the years. In contrast, I have found that publishing Ruby libraries on RubyGems.org to be easy and reliable.
  • Software tools are frequently released with significant overlap, without co-ordination, without proper documentation, without a user-centered approach, and without adult supervision. Chaos is the inevitable and perpetual result.

Expensive Maintainance

As a result, all Scala programs are exceptionally expensive to maintain. Unless you are prepared to devote a significant amount of time and energy keeping up with breaking changes until the day you no longer need your Scala programs, they will go out of date rather quickly. Often that means your Scala programs break unexpectedly after a build and stop working.

If your goal is merely to keeps existing software running as it was originally implemented over a time period many months or years, with a minimum of time spent performing basic maintenance, Scala is not for you. Instead, many hours of developer time must be dedicated each quarter to just maintain the status quo. This problem is rarely experienced by programmers of other languages, and certainly not to this degree, yet for most Scala programmers and managers of development project that incorporate Scala, this becomes a significant concern.

If you are a language researcher, then Scala will probably be fun. However, if you need to address a business or scientific requirement, and the solution(s) need to persist for more than a quarter, I suggest you consider another language, like Rust, Java, or Ruby.

Scala 2.13 vs Scala 3

This course discusses every concept with regards to Scala 2.13 and Scala 3.

Scala 2.13 (first released 5 years ago) is still actively maintained. Scala 3 applications can leverage 2.13 libraries, in fact, Scala 3 uses the 2.13 standard library.

Programmers who upgrading a non-trivial programs written in Scala 2.13 to Scala 3 for the first time often report that the process is arduous and time-consuming. Upgrading older Scala programs is more problematic.

Compared with transiting nontrivial Python 2 programs to Python 3, upgrading nontrivial Scala programs from Scala 2 to Scala 3 is orders of magnitude more difficult and time-consuming.

Programs written with older versions of Scala, for example Scala 2.12, 2.11, 2.10, etc. cannot be maintained effectively. This course only mentions older Scala versions when historical context is helpful for understanding current Scala.

So Why Take This Course?

Alright, if Scala is so horrible for most commercial and scientific applications, why consider taking both of these difficult courses?

Scala provides a nice teaching / learning platform for learning and practicing advanced programming techniques.

I have been programming commercially since June 1976 (48 years), and I became a much better programmer after mastering Scala. You will too … if you work hard for about 40 hours, you can work through the course material. Your brain will hurt, but in a good way, in a way that makes you a more powerful and versatile programmer.

The concepts you will learn in this course work in a very similar way in many other languages. You will be a better Java, Ruby, Python and JavaScript programmer after working through this course.

Solid Understanding of Fundamentals

This course, and the Intermediate Scala course that follows, avoids esoteric theory and cool but fast-evolving language features. These courses are written for programmers who have scientific or business tasks to address.

Even so, these courses, and the platform that delivers them, have had to be completely rewritten several times since they were first released on November 23, 2012.


* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.