As the one who brought this up in Gitter: I think this is a really serious matter for those of us in larger Scala-centric companies.
My scenario is that, starting in January, I’m going to be facilitating a couple of classes of folks who are learning Scala for the first time. Many of these are going to be relatively junior engineers, and the goal is to get them to the point where they can potentially work in our backend codebase.
That codebase is, obviously, entirely Scala 2 at the moment – more importantly, I expect it to be mostly Scala 2 for some time. We have hundreds of Scala repos, some of them very stable and mostly in maintenance mode, so I expect Scala 3 adoption to be gradual. My guess is that the serious Scala geeks (eg, me) will start to port to Scala 3 late-2021, but I would expect some projects to take at least a year after that, maybe longer, depending on their available time and appetite for new-and-different. (Frankly, the fact that 2.13.4 and 3.0 can interoperate is deathly critical for us – if it wasn’t for that, I suspect we would never get to 3.0 at all.)
That being the case, these new engineers are mainly going to be looking at Scala 2 code, and I’m sorry: the notion that you can learn Scala 3 and just quickly pick up Scala 2 looks off-base to me. It’s a senior-engineer viewpoint, going “these concepts are basically the same”. Junior engineers see syntax first and foremost, and Scala 3 looks like a very different language than Scala 2. Many concepts have a different look-and-feel, especially the hardest concept, implicits. If you already know a dozen languages, sure – the mental translation isn’t too bad. If this is your second language, though, that’s a serious barrier.
IMO the Scala 3 course is likely to be a poor choice for relatively junior engineers who need to be diving into Scala 2, which is going to be a large fraction of the audience for a while yet. It’s intellectually interesting and all, yes, but as a practical training course it’s the wrong tool for the job: we need something that is more closely focused on the problem at hand, which is getting junior engineers up to speed and able to work in a Scala 2 environment.
And honestly, I would expect it to be frustrating as hell for them to be put through a course, and then told, “and now you’re going to work on code that looks dramatically different from what we just taught you”. I would expect to lose some of them in that transition, completely negating the point of the exercise.
That’s why I brought the question up on Gitter: if the only Coursera option was Scala 3, I was going to have to find an entirely different course and platform for training our new folks. (Which I would prefer not to do: the Scala Center Coursera course is generally the best-reputed, so I would prefer to use it.)
So I would strongly urge y’all to leave the Scala 2 version of the course up on Coursera for at least a year after the release of Scala 3. Many larger shops like ours are going to need some time for the Scala 3 transition and are going to be onboarding more new Scala engineers in the meantime. We’re still going to need that course for a fair while…