Quantcast

Why I and my company have moved away from Scala. An honest critique.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
115 messages Options
123456
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Adriaan Moors-7
Always happy to discuss, but prefer https://contributors.scala-lang.org/ for language design discussions.


On Tue, Feb 14, 2017 at 3:40 PM Seyed H. HAERI (Hossein) <[hidden email]> wrote:
Hi Adriaan,

> I think this is getting a bit too technical for this forum,

Agree. But, I think it needs to be taken up once at least -- just for
the record.

> but path
> equivalence is decided statically, so, there's no uncertainty there either.
> Of course, every time you select a member on a path, you don't statically
> know the run-time value of the target. This is where late binding kicks in
> for value members.

And, that's one of the few places where things get out of my hands
wanting to simulate lightweight family polymorphism in Scala.

Cheers,
--Hossein

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why I and my company have moved away from Scala. Anhonest critique.

gclaramunt
Since we're talking about removing or obscuring a feature with lots of magic, that can't be determined at compile time and causes unneeded complexity, can we get rid of subtyping? :)

From: [hidden email]
Sent: ‎2/‎14/‎2017 20:47
To: [hidden email]
Cc: [hidden email]
Subject: Re: [scala-user] Why I and my company have moved away from Scala. Anhonest critique.

Always happy to discuss, but prefer https://contributors.scala-lang.org/ for language design discussions.


On Tue, Feb 14, 2017 at 3:40 PM Seyed H. HAERI (Hossein) <[hidden email]> wrote:
Hi Adriaan,

> I think this is getting a bit too technical for this forum,

Agree. But, I think it needs to be taken up once at least -- just for
the record.

> but path
> equivalence is decided statically, so, there's no uncertainty there either.
> Of course, every time you select a member on a path, you don't statically
> know the run-time value of the target. This is where late binding kicks in
> for value members.

And, that's one of the few places where things get out of my hands
wanting to simulate lightweight family polymorphism in Scala.

Cheers,
--Hossein

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. Anhonest critique.

Vlad Patryshev
This may be a beautiful idea, switching from Curry types to Church types. Haskellers will totally love us. And no OOP, guaranteed! (very bad, total disaster)

Thanks,
-Vlad

On Tue, Feb 14, 2017 at 4:07 PM, Gabriel Claramunt <[hidden email]> wrote:
Since we're talking about removing or obscuring a feature with lots of magic, that can't be determined at compile time and causes unneeded complexity, can we get rid of subtyping? :)

From: [hidden email]
Sent: ‎2/‎14/‎2017 20:47
To: [hidden email]
Cc: [hidden email]
Subject: Re: [scala-user] Why I and my company have moved away from Scala. Anhonest critique.

Always happy to discuss, but prefer https://contributors.scala-lang.org/ for language design discussions.


On Tue, Feb 14, 2017 at 3:40 PM Seyed H. HAERI (Hossein) <[hidden email]> wrote:
Hi Adriaan,

> I think this is getting a bit too technical for this forum,

Agree. But, I think it needs to be taken up once at least -- just for
the record.

> but path
> equivalence is decided statically, so, there's no uncertainty there either.
> Of course, every time you select a member on a path, you don't statically
> know the run-time value of the target. This is where late binding kicks in
> for value members.

And, that's one of the few places where things get out of my hands
wanting to simulate lightweight family polymorphism in Scala.

Cheers,
--Hossein

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. Anhonest critique.

Vincent Marquez
In reply to this post by gclaramunt
+1 so much. 

On Tue, Feb 14, 2017 at 4:07 PM, Gabriel Claramunt <[hidden email]> wrote:
Since we're talking about removing or obscuring a feature with lots of magic, that can't be determined at compile time and causes unneeded complexity, can we get rid of subtyping? :)

From: [hidden email]
Sent: ‎2/‎14/‎2017 20:47
To: [hidden email]
Cc: [hidden email]
Subject: Re: [scala-user] Why I and my company have moved away from Scala. Anhonest critique.

Always happy to discuss, but prefer https://contributors.scala-lang.org/ for language design discussions.


On Tue, Feb 14, 2017 at 3:40 PM Seyed H. HAERI (Hossein) <[hidden email]> wrote:
Hi Adriaan,

> I think this is getting a bit too technical for this forum,

Agree. But, I think it needs to be taken up once at least -- just for
the record.

> but path
> equivalence is decided statically, so, there's no uncertainty there either.
> Of course, every time you select a member on a path, you don't statically
> know the run-time value of the target. This is where late binding kicks in
> for value members.

And, that's one of the few places where things get out of my hands
wanting to simulate lightweight family polymorphism in Scala.

Cheers,
--Hossein

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. Anhonest critique.

scala solist
In reply to this post by Vlad Patryshev
I'm very amused no one mentioned that at the present time scala libraries uses macroses (macro paradise) to generate implicits. Now you have zero chances to find origins of given code sample. Just somewhere clever macros provided implicits for you to use. And, of course, it may be used to trigger implicit macro expansion. All things quickly go out of control. I really like puzzles and implicit type classes gives you ton of interesting challenges like sorting list in compile time. But honestly I don't like to see none of such canny tricks outside pet projects.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. Anhonest critique.

Seyed H. HAERI (Hossein)
In reply to this post by gclaramunt
Hi Gabriel,

To answer your question below, I need to deviate a bit from the original topic.

> Since we're talking about removing or obscuring a feature with lots of
> magic, that can't be determined at compile time and causes unneeded
> complexity, can we get rid of subtyping? :)

Well, I never said things that are determined at the runtime are
categorically bad. Indeed, certain flexibilities are only at hand when
things get done dynamically. It, however, is the question of what to
leave to the runtime and how. Personally, I think deciding to pair up
with Java was such a poor decision. A fundamentally disturbing
consequence that relates to your question is that the programmer has
no control on when the dynamic behaviour kicks in. In particular,
virtual function calls are automatic. Even worse, there is no way to
override that by a non-virtual call. That in addition to implicits
being objects (as opposed to classes) mean that late binding of
implicit values cannot be evaded -- causing things to get out of the
programmer's hands. (Let alone the widely used macros that generate
implicits on the fly.)

To avoid all that, one needs not to eradicate subtyping. It only needs
to be engineered differently.

Cheers,
--Hossein

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Oliver Ruebenacker
In reply to this post by kraythe

     Hello,

  Regarding whether Scala is good for business: before doing Scala at a major research center, I did Scala at two software startups. You can search for job ads containing "Scala" and convince yourself that there are plenty.

  Drawback: it is not as popular as Java. Popularity is an obvious advantage: larger pool of staff candidates, more tools, etc. If popularity with its perks is the all-deciding factor, then you go with Java, of course.

  Regarding implicit things, I may share part of Robert's frustration. There is no problem once I have working code in my project: IntelliJ know exactly what it does.

  The problem is when trying to learn something new. There is a library, and the documentation lists an example code fraction, not self-contained, with wild-card imports, omitted types and either implicit conversions or implicit parameters. It is hard to understand how it is supposed to work, and error messages are often not helpful.

  It can be difficult to find things in the Scaladoc. For example, try to find Tree.

     Best, Oliver

  

On Tue, Feb 14, 2017 at 1:45 AM, kraythe <[hidden email]> wrote:
What I meant is that implicits are. It directly linked to code you can see. If you look at a method and see the code it is not apparent that an implicit is involved. Because they happen "magically.

But I got the message. It was "F off, your opinions aren't wanted no matter how honestly you offer them." Message received. No more reason for me to post on this thread or indeed group anymore. Twitter abandoned Scalia. Linked in abandoned Scala. So by all means keep beating people upside the head when they offer constructive advice. Could have been wonderful but toss it on the heap of could have been languages.

Peace and good luck.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.



--
Oliver Ruebenacker
Senior Software Engineer, Diabetes Portal, Broad Institute

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Russ P.
In reply to this post by kraythe
On Monday, February 13, 2017 at 10:45:04 PM UTC-8, kraythe wrote:
What I meant is that implicits are. It directly linked to code you can see. If you look at a method and see the code it is not apparent that an implicit is involved. Because they happen "magically.

But I got the message. It was "F off, your opinions aren't wanted no matter how honestly you offer them." Message received. No more reason for me to post on this thread or indeed group anymore. Twitter abandoned Scalia. Linked in abandoned Scala. So by all means keep beating people upside the head when they offer constructive advice. Could have been wonderful but toss it on the heap of could have been languages.



I don't know where you got the impression that anyone was telling you to "F off, your opinions aren't wanted no matter how honestly you offer them." The replies to your post seemed civil and reasonable to me.

When you offer a criticism of something that others value, you should expect some pushback. Did you expect Scala users to just say, "Yeah, you're right. Scala is dying and will soon be dead"?

And yes, you were corrected for claiming erroneously that implicits are not statically typed. That's fairly basic stuff. Your criticism of implicits took a major hit when you wrote that, at least in my mind.

As others have said a million times, implicits can be useful, elegant, and convenient when used properly, and they can also be overused or used improperly. The same thing can be said for many other language features, including vars.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

kraythe
In reply to this post by Adriaan Moors-7


On Tuesday, February 14, 2017 at 11:22:46 AM UTC-6, Adriaan Moors wrote:
Thanks, Kris, and everyone else for sharing your thoughtful feedback.

The point about antipatterns is an important one. All languages have those, and all language communities acquire cultural knowledge about how to avoid them. It's up to us (the creators and the community together) to document them and share the wisdom with new members of the community. As the creators, we are also always looking for ways to have the language itself guide you away from the antipatterns, where possible. 

The point I have been trying to make is that this is great in a resource unlimited setting where you can just say "hey, lets all spend six months learning to not be newbies at scala" and the real business world where deadlines loom and managers want delivered product. You can train people in the basics of scala in a short amount of time if they are competent and they will get it, then they hit the minefield of implicit conversions and macros and they go straight backwards back down the slope. Enough times and they tire of climbing the slope. They haven't even gotten to hard things like currying which at least are visible from the code you are looking at. With implicits especially things are happening to your code that are not right in front of you, not to be found with a cmd-click to navigate to method. They are magically imported from god knows where and changing things and you are just supposed to "know" they are happening.

Case in point, I know a very experienced developer, 10 years experience with high quality systems, who jumped into Scala. All was going well but then he ended up encountering implicit conversions and the unpredictable effects that occurred from importing them into third party libraries. They acted like non-deterministic code in the platform. You counter that he needed more training? I counter he had deadlines to meet.. Now the developer was frustrated, irritated and completely non productive. After encountering this multiple times they had enough. So now I have a 10 year experienced engineer, he is not productive. I am forcing him to learn a new language that has brief (in his mind "cryptic") in syntax and oh, by the way, stuff magically happens that has no relationship to the code you are looking at. The developer is not preparing code, not implementing features, not being productive. Hence, developer wants NOTHING to do with Scala anymore. He goes back to java and cranks out more productive code in a week than he had Scala code in 2 months. Unfortunately he will also now have to deal with dual languages, mixed mode compiling, converting between java and scala which don't understand each other's lambda syntax and he will assuredly never ever do Scala again if he can avoid it. This is not a hypothetical, it is real life and i have 4 staff members in the same boat. 

Solution? Drop Scala. Problem solved. Indeed that is what we have done. We have only 4 more classes in Scala and by the end of next month I will have converted them to java. The change in code volume is not appreciable. The Java code is quite understandable. Other than pattern matching and immutable types I am quite content. 

So I come to post about the issues and my experiences and, yes, I am blunt. I don't have time to be non-blunt. I guess people don't like blunt. But the reality is when the language cross wires that many EXPERIENCED, intelligent, professional developers, it will never penetrate beyond niche in business. Hence many major companies have dropped it. I have nothing to gain through these posts, I gather neither fame nor fortune and spend a boatload of time reading replies and writing when I could be doing other things.

I love Lightbend's products. But then I use them with the java API. Why? Because I can staff my team and produce code. 
 
I believe Scala does a good job at shielding you from many existing antipatterns, but implicits (and their interaction with type inference, which may look like magic, even though it is deterministic) are a harder nut to crack in terms of finding a good balance in the (new) user experience and expressive power.

I also would like to reiterate that we value everyone's opinion (that includes criticism, obviously), and we take all feedback to heart. I prefer the actionable kind of feedback, though (I'm not about to give up being a mad scientist ;-)). We care deeply about the productivity of all Scala programmers out there, and are dedicated to improving your experience with Scala in every release.

cheers
adriaan

Scala team lead at Lightbend

Oh by all means be a mad scientist but realize this:
1. I have nothing to gain from this in either fame or fortune, so what is my motivation?  
2. If you have a language that an experienced senior java programmer can't grasp in a couple weeks and be good at in 2 months or requires expensive training, then it will not get past those startups and little projects. It will never full scale penetrate like Java. If that is fine, then you consent to being an niche language. 
3. Major companies have dropped Scala because of point 2. 
4. Current companies that adopt Scala will hit point 2 and eventually have to make a decision of do they delay products and revenue or switch back. 
5. After years of being out there Scala has meagre penetration, and still bad tooling. 
6. Again, I gain nothing by making this post. It CERTAINLY hasn't made me any friends here and it is not an avenue for fame or fortune so maybe, just maybe, my motivation is that I would love this to change. 

Peace ... out!

-- Robert

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

kraythe
In reply to this post by Kevin Wright-3
Whatever FUD is, I don't know. 

I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 

That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 

I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 

I would love Scala to replace java. On this trajectory it doesn't have a chance. 

-- Robert


On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”

Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.

My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.


On 12 February 2017 at 21:54, kraythe <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="iXJ4kSiYCQAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">kra...@...> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.

Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.

The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.

I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.

Thanks,
-Vlad

On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 

First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 

Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 

Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 

I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 

I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 

-- Robert, 
-- Principal Software Architect. 


--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Aw: Re: [scala-user] Why I and my company have moved away from Scala. An honest critique.

Dennis Haupt-2
this makes perfect sense. if you study "business software development for the real world" anywhere, you most likely are taught mainstream languages, not scala, f#, haskell or clojure. those are languages for people that want to learn new things in their free time.
all the scala developers i know either learned it by accident or because they were curious people (of which a large part doesn't/didn't like java because of a lack of features)
fud is "fear, uncertainty + doubt" 
 
Gesendet: Donnerstag, 16. Februar 2017 um 07:41 Uhr
Von: kraythe <[hidden email]>
An: scala-user <[hidden email]>
Cc: [hidden email]
Betreff: Re: [scala-user] Why I and my company have moved away from Scala. An honest critique.
Whatever FUD is, I don't know. 
 
I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 
 
That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 
 
I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 
 
I would love Scala to replace java. On this trajectory it doesn't have a chance. 
 
-- Robert
 

On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”
 
Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.
 
My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.
 
 
On 12 February 2017 at 21:54, kraythe <[hidden email]> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.
 
Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.
 
The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.
 
I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.
 
Thanks,
-Vlad
 
On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 
 
First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 
 
Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 
 
Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 
 
I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 
 
I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 
 
-- Robert, 
-- Principal Software Architect. 
 

 

 

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Martijn Hoekstra
In reply to this post by kraythe
> Whatever FUD is, I don't know.

Fear, Uncertainty and Doubt. It was the strategy unofficially deployed by IBM - nobody ever got fired for choosing IBM.

Twitter is joining the Scala Center Advisory Board as a full member. The claim that Twitter has moved away from Scala may instill Fear, Uncertainty and Doubt, but it's not true. 

 Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. 

So that means demand for Scala devs is so high that supply can't keep up with it. That can be a good reason for companies to move back to Java, but that doesn't show the lack of traction Scala has. 

 You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. 

Of course not. You can't take any average dev and train them in a couple of weeks in a different language by reading the SDK of that language with comprehension and have them be good at the language in a month for any language that's appreciably different from the languages they know. 


 




On Thu, Feb 16, 2017 at 7:41 AM, kraythe <[hidden email]> wrote:
Whatever FUD is, I don't know. 

I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 

That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 

I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 

I would love Scala to replace java. On this trajectory it doesn't have a chance. 

-- Robert


On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”

Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.

My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.


On 12 February 2017 at 21:54, kraythe <[hidden email]> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.

Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.

The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.

I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.

Thanks,
-Vlad

On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 

First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 

Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 

Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 

I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 

I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 

-- Robert, 
-- Principal Software Architect. 


--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Alan Burlison
In reply to this post by Filippo De Luca
On 14/02/2017 11:21, Filippo De Luca wrote:

> You say Twitter and Linkedin have abandoned Scala, fair enough, but at the
> same time other, much bigger companies, like Expedia, are embracing it
> because more and more developers want to write Scala code.

I think one of the things that often clouds these sort of discussion is
they often don't distinguish between issues with Functional Programming
in general and issues with Scala - they all get lumped together. If you
are coming from an traditional imperative background then switching to
FP is a big leap, but it's pretty much the same size of leap no matter
which FP language you choose. Yes, Scala has a reputation for being
"difficult" but I think that's mostly because of the concepts it relies
on rather than the language itself.

Yes, Scala has its dark corners, as do all other languages. Part of the
art of being truly competent in any language is to know where the dark
corners are, avoid them if you can and if you do have use them, make
sure it's tightly-bounded and documented. Several very experienced Scala
people have already said that in this thread.

There is a much older example of similar "mindset" issues - SQL. Being
declarative it requires a completely different approach from procedural
programming to write well. A significant proportion of the SQL I've seen
written by imperative programmers is awful - they end up using the
database like a flat file - join and predicate free SELECTs which they
then loop over in the application code. The "You need to switch your
paradigm" problem is nothing new.

--
Alan Burlison
--

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Vlad Patryshev
In reply to this post by kraythe
So, the problem is that experienced developers can't grok it.

Experience means nothing in our world. One has to learn all the time.

Thanks,
-Vlad

On Wed, Feb 15, 2017 at 10:32 PM, kraythe <[hidden email]> wrote:


On Tuesday, February 14, 2017 at 11:22:46 AM UTC-6, Adriaan Moors wrote:
Thanks, Kris, and everyone else for sharing your thoughtful feedback.

The point about antipatterns is an important one. All languages have those, and all language communities acquire cultural knowledge about how to avoid them. It's up to us (the creators and the community together) to document them and share the wisdom with new members of the community. As the creators, we are also always looking for ways to have the language itself guide you away from the antipatterns, where possible. 

The point I have been trying to make is that this is great in a resource unlimited setting where you can just say "hey, lets all spend six months learning to not be newbies at scala" and the real business world where deadlines loom and managers want delivered product. You can train people in the basics of scala in a short amount of time if they are competent and they will get it, then they hit the minefield of implicit conversions and macros and they go straight backwards back down the slope. Enough times and they tire of climbing the slope. They haven't even gotten to hard things like currying which at least are visible from the code you are looking at. With implicits especially things are happening to your code that are not right in front of you, not to be found with a cmd-click to navigate to method. They are magically imported from god knows where and changing things and you are just supposed to "know" they are happening.

Case in point, I know a very experienced developer, 10 years experience with high quality systems, who jumped into Scala. All was going well but then he ended up encountering implicit conversions and the unpredictable effects that occurred from importing them into third party libraries. They acted like non-deterministic code in the platform. You counter that he needed more training? I counter he had deadlines to meet.. Now the developer was frustrated, irritated and completely non productive. After encountering this multiple times they had enough. So now I have a 10 year experienced engineer, he is not productive. I am forcing him to learn a new language that has brief (in his mind "cryptic") in syntax and oh, by the way, stuff magically happens that has no relationship to the code you are looking at. The developer is not preparing code, not implementing features, not being productive. Hence, developer wants NOTHING to do with Scala anymore. He goes back to java and cranks out more productive code in a week than he had Scala code in 2 months. Unfortunately he will also now have to deal with dual languages, mixed mode compiling, converting between java and scala which don't understand each other's lambda syntax and he will assuredly never ever do Scala again if he can avoid it. This is not a hypothetical, it is real life and i have 4 staff members in the same boat. 

Solution? Drop Scala. Problem solved. Indeed that is what we have done. We have only 4 more classes in Scala and by the end of next month I will have converted them to java. The change in code volume is not appreciable. The Java code is quite understandable. Other than pattern matching and immutable types I am quite content. 

So I come to post about the issues and my experiences and, yes, I am blunt. I don't have time to be non-blunt. I guess people don't like blunt. But the reality is when the language cross wires that many EXPERIENCED, intelligent, professional developers, it will never penetrate beyond niche in business. Hence many major companies have dropped it. I have nothing to gain through these posts, I gather neither fame nor fortune and spend a boatload of time reading replies and writing when I could be doing other things.

I love Lightbend's products. But then I use them with the java API. Why? Because I can staff my team and produce code. 
 
I believe Scala does a good job at shielding you from many existing antipatterns, but implicits (and their interaction with type inference, which may look like magic, even though it is deterministic) are a harder nut to crack in terms of finding a good balance in the (new) user experience and expressive power.

I also would like to reiterate that we value everyone's opinion (that includes criticism, obviously), and we take all feedback to heart. I prefer the actionable kind of feedback, though (I'm not about to give up being a mad scientist ;-)). We care deeply about the productivity of all Scala programmers out there, and are dedicated to improving your experience with Scala in every release.

cheers
adriaan

Scala team lead at Lightbend

Oh by all means be a mad scientist but realize this:
1. I have nothing to gain from this in either fame or fortune, so what is my motivation?  
2. If you have a language that an experienced senior java programmer can't grasp in a couple weeks and be good at in 2 months or requires expensive training, then it will not get past those startups and little projects. It will never full scale penetrate like Java. If that is fine, then you consent to being an niche language. 
3. Major companies have dropped Scala because of point 2. 
4. Current companies that adopt Scala will hit point 2 and eventually have to make a decision of do they delay products and revenue or switch back. 
5. After years of being out there Scala has meagre penetration, and still bad tooling. 
6. Again, I gain nothing by making this post. It CERTAINLY hasn't made me any friends here and it is not an avenue for fame or fortune so maybe, just maybe, my motivation is that I would love this to change. 

Peace ... out!

-- Robert

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Vlad Patryshev
In reply to this post by kraythe
Get an average Java developer and train them to become a good FP Scala programmer? Done it; developers are happy. There are known, and well-explained steps to get Java OOP programmers into Scala FP world.

Thanks,
-Vlad

On Wed, Feb 15, 2017 at 10:41 PM, kraythe <[hidden email]> wrote:
Whatever FUD is, I don't know. 

I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 

That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 

I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 

I would love Scala to replace java. On this trajectory it doesn't have a chance. 

-- Robert


On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”

Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.

My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.


On 12 February 2017 at 21:54, kraythe <[hidden email]> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.

Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.

The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.

I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.

Thanks,
-Vlad

On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 

First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 

Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 

Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 

I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 

I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 

-- Robert, 
-- Principal Software Architect. 


--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

jez prime
Devil's advocate time. There are vast numbers of Java developers who have no interest in learning anything new for themselves - i've worked with plenty in the past. Like it or not, that's the way it is. Similarly there are many organisations who are quite simply not prepared to spend money to train their existing staff to do new things. For a self-employed mercenary such as myself, your point holds true for the very simple reason that it's in my direct financial interest to find the time to learn new things. That isn't as clear for a developer in a permanent post in a fairly comfortable position. So yes, a steep learning conceptual learning curve does limit adoption. I recently worked in a sizeable UK government organisation that absolutely rejected Scala from the word go, despite a recommendation from one of their own architects to adopt it. Their concern was purely and simply (and correctly) about the size of the pool they'd have available to recruit from. 

I'm speaking as a Scala fan by the way, but I've witnessed this for myself as outlined above. They disregarded the argument that they wouldn't need as big a pool because the developers they would recruit would be more productive and ultimately the codebase would end up cleaner.

On Thursday, February 16, 2017 at 4:36:53 PM UTC, Vlad Patryshev wrote:
Get an average Java developer and train them to become a good FP Scala programmer? Done it; developers are happy. There are known, and well-explained steps to get Java OOP programmers into Scala FP world.

Thanks,
-Vlad

On Wed, Feb 15, 2017 at 10:41 PM, kraythe <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="CO-BMmK6CgAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">kra...@...> wrote:
Whatever FUD is, I don't know. 

I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 

That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 

I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 

I would love Scala to replace java. On this trajectory it doesn't have a chance. 

-- Robert


On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”

Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.

My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.


On 12 February 2017 at 21:54, kraythe <[hidden email]> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.

Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.

The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.

I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.

Thanks,
-Vlad

On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 

First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 

Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 

Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 

I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 

I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 

-- Robert, 
-- Principal Software Architect. 


--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="javascript:" target="_blank" gdf-obfuscated-mailto="CO-BMmK6CgAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">scala-user+...@googlegroups.com.
For more options, visit <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Russ P.
In reply to this post by kraythe
You keep coming back to implicits and how they frustrate even experienced programmers. That may well happen at times, but here's the problem with your claims. It could simply be that the code base you are working with has misused or overused implicits. If so, that is not a knock on Scala per se but rather on it's misuse in that particular code base. You cannot hold any language responsible for its misuse unless the misused feature has no value when used properly (certainly not the case for implicits).

Here's the other thing that I am wondering about. Many IDEs will take you right to the definition of the implicit. Perhaps your experienced developers should use an IDE that does that. Short of that, can't they simply grep the source code for the implicit? How about something like

grep implicit *.scala | grep SomeClassName

Is that so hard? You could even make an alias for it to reduce the typing.


On Wednesday, February 15, 2017 at 10:32:41 PM UTC-8, kraythe wrote:


On Tuesday, February 14, 2017 at 11:22:46 AM UTC-6, Adriaan Moors wrote:
Thanks, Kris, and everyone else for sharing your thoughtful feedback.

The point about antipatterns is an important one. All languages have those, and all language communities acquire cultural knowledge about how to avoid them. It's up to us (the creators and the community together) to document them and share the wisdom with new members of the community. As the creators, we are also always looking for ways to have the language itself guide you away from the antipatterns, where possible. 

The point I have been trying to make is that this is great in a resource unlimited setting where you can just say "hey, lets all spend six months learning to not be newbies at scala" and the real business world where deadlines loom and managers want delivered product. You can train people in the basics of scala in a short amount of time if they are competent and they will get it, then they hit the minefield of implicit conversions and macros and they go straight backwards back down the slope. Enough times and they tire of climbing the slope. They haven't even gotten to hard things like currying which at least are visible from the code you are looking at. With implicits especially things are happening to your code that are not right in front of you, not to be found with a cmd-click to navigate to method. They are magically imported from god knows where and changing things and you are just supposed to "know" they are happening.

Case in point, I know a very experienced developer, 10 years experience with high quality systems, who jumped into Scala. All was going well but then he ended up encountering implicit conversions and the unpredictable effects that occurred from importing them into third party libraries. They acted like non-deterministic code in the platform. You counter that he needed more training? I counter he had deadlines to meet.. Now the developer was frustrated, irritated and completely non productive. After encountering this multiple times they had enough. So now I have a 10 year experienced engineer, he is not productive. I am forcing him to learn a new language that has brief (in his mind "cryptic") in syntax and oh, by the way, stuff magically happens that has no relationship to the code you are looking at. The developer is not preparing code, not implementing features, not being productive. Hence, developer wants NOTHING to do with Scala anymore. He goes back to java and cranks out more productive code in a week than he had Scala code in 2 months. Unfortunately he will also now have to deal with dual languages, mixed mode compiling, converting between java and scala which don't understand each other's lambda syntax and he will assuredly never ever do Scala again if he can avoid it. This is not a hypothetical, it is real life and i have 4 staff members in the same boat. 

Solution? Drop Scala. Problem solved. Indeed that is what we have done. We have only 4 more classes in Scala and by the end of next month I will have converted them to java. The change in code volume is not appreciable. The Java code is quite understandable. Other than pattern matching and immutable types I am quite content. 

So I come to post about the issues and my experiences and, yes, I am blunt. I don't have time to be non-blunt. I guess people don't like blunt. But the reality is when the language cross wires that many EXPERIENCED, intelligent, professional developers, it will never penetrate beyond niche in business. Hence many major companies have dropped it. I have nothing to gain through these posts, I gather neither fame nor fortune and spend a boatload of time reading replies and writing when I could be doing other things.

I love Lightbend's products. But then I use them with the java API. Why? Because I can staff my team and produce code. 
 
I believe Scala does a good job at shielding you from many existing antipatterns, but implicits (and their interaction with type inference, which may look like magic, even though it is deterministic) are a harder nut to crack in terms of finding a good balance in the (new) user experience and expressive power.

I also would like to reiterate that we value everyone's opinion (that includes criticism, obviously), and we take all feedback to heart. I prefer the actionable kind of feedback, though (I'm not about to give up being a mad scientist ;-)). We care deeply about the productivity of all Scala programmers out there, and are dedicated to improving your experience with Scala in every release.

cheers
adriaan

Scala team lead at Lightbend

Oh by all means be a mad scientist but realize this:
1. I have nothing to gain from this in either fame or fortune, so what is my motivation?  
2. If you have a language that an experienced senior java programmer can't grasp in a couple weeks and be good at in 2 months or requires expensive training, then it will not get past those startups and little projects. It will never full scale penetrate like Java. If that is fine, then you consent to being an niche language. 
3. Major companies have dropped Scala because of point 2. 
4. Current companies that adopt Scala will hit point 2 and eventually have to make a decision of do they delay products and revenue or switch back. 
5. After years of being out there Scala has meagre penetration, and still bad tooling. 
6. Again, I gain nothing by making this post. It CERTAINLY hasn't made me any friends here and it is not an avenue for fame or fortune so maybe, just maybe, my motivation is that I would love this to change. 

Peace ... out!

-- Robert

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Oliver Ruebenacker
In reply to this post by jez prime

     Hello,

  If your team is a mix of Scala engineers and Java engineers, the Scala engineers can teach the Java engineers and help them find appropriate tasks for their level. Such team will be quickly productive and suitable even in a startup, where survival depends on your ability to produce results quickly.

  We can't predict the future of Scala, but many features of Scala are great features and will be part of the most popular language within the next five to ten years, regardless of whether that most popular language will be Java, Scala or something else. Then you want to have people who are familiar with these features.

     Best, Oliver

On Thu, Feb 16, 2017 at 2:12 PM, jez prime <[hidden email]> wrote:
Devil's advocate time. There are vast numbers of Java developers who have no interest in learning anything new for themselves - i've worked with plenty in the past. Like it or not, that's the way it is. Similarly there are many organisations who are quite simply not prepared to spend money to train their existing staff to do new things. For a self-employed mercenary such as myself, your point holds true for the very simple reason that it's in my direct financial interest to find the time to learn new things. That isn't as clear for a developer in a permanent post in a fairly comfortable position. So yes, a steep learning conceptual learning curve does limit adoption. I recently worked in a sizeable UK government organisation that absolutely rejected Scala from the word go, despite a recommendation from one of their own architects to adopt it. Their concern was purely and simply (and correctly) about the size of the pool they'd have available to recruit from. 

I'm speaking as a Scala fan by the way, but I've witnessed this for myself as outlined above. They disregarded the argument that they wouldn't need as big a pool because the developers they would recruit would be more productive and ultimately the codebase would end up cleaner.

On Thursday, February 16, 2017 at 4:36:53 PM UTC, Vlad Patryshev wrote:
Get an average Java developer and train them to become a good FP Scala programmer? Done it; developers are happy. There are known, and well-explained steps to get Java OOP programmers into Scala FP world.

Thanks,
-Vlad

On Wed, Feb 15, 2017 at 10:41 PM, kraythe <[hidden email]> wrote:
Whatever FUD is, I don't know. 

I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 

That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 

I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 

I would love Scala to replace java. On this trajectory it doesn't have a chance. 

-- Robert


On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”

Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.

My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.


On 12 February 2017 at 21:54, kraythe <[hidden email]> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.

Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.

The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.

I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.

Thanks,
-Vlad

On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 

First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 

Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 

Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 

I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 

I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 

-- Robert, 
-- Principal Software Architect. 


--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.



--
Oliver Ruebenacker
Senior Software Engineer, Diabetes Portal, Broad Institute

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

joe.pallas
In reply to this post by kraythe


On Wednesday, February 15, 2017 at 10:32:41 PM UTC-8, kraythe wrote:

1. I have nothing to gain from this in either fame or fortune, so what is my motivation?  

That's an excellent question.  What is your motivation?  What did you hope to accomplish when you posted the message that started this thread?

To be honest, it seems like you wanted to vent your frustration, not that you wanted to somehow make Scala better.  You offered criticism, but not constructive criticism.  Please show us how we can make Scala better, but don't be surprised if "remove feature X" is met with, "Okay, tell us how we can achieve the benefits we currently derive from feature X without it."  And if your reaction is, "I don't benefit from feature X" then the problem may be that your needs can and should be met by a different language—which is what you seem to have decided.

It sounds like you really wanted Scala to be "a better Java".  Scala is not Java with FP glued on, Scala is a new language, one that has proven useful to many but, like any language, will never be "one size fits all".

Best wishes for your future endeavors,
joe

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why I and my company have moved away from Scala. An honest critique.

Brian Maso
In reply to this post by jez prime
The learning curve is indeed steep. It took me at least a couple years working evening and weekends with Scala -- with no real FP background -- to start feeling like I was guaranteed more productive in Scala than Java. At this point I see FP on the JVM as my extreme advantage over Java developers.

I know there are shops who don't want to change to other languages -- similarly there weren't shops who wanted to move from classic VB to .Net, from craptaculous HTML and server-side code to CSS/JavaScript, from COBOL to almost anything else, etc. There are definitely niches and industrial enclaves where those technologies make sense from a business POV even to this day.

If you are in a position to ride the Java wave all the way to retirement, and you are satisfied and enjoy the solutions you are able to create, that's great. Both personally and professionally I am more than satisfied with Scala, at least in part because I can look forward to the staff-heavy Java shops that I can compete with very handily.

Brian Maso



On Thu, Feb 16, 2017 at 11:12 AM, jez prime <[hidden email]> wrote:
Devil's advocate time. There are vast numbers of Java developers who have no interest in learning anything new for themselves - i've worked with plenty in the past. Like it or not, that's the way it is. Similarly there are many organisations who are quite simply not prepared to spend money to train their existing staff to do new things. For a self-employed mercenary such as myself, your point holds true for the very simple reason that it's in my direct financial interest to find the time to learn new things. That isn't as clear for a developer in a permanent post in a fairly comfortable position. So yes, a steep learning conceptual learning curve does limit adoption. I recently worked in a sizeable UK government organisation that absolutely rejected Scala from the word go, despite a recommendation from one of their own architects to adopt it. Their concern was purely and simply (and correctly) about the size of the pool they'd have available to recruit from. 

I'm speaking as a Scala fan by the way, but I've witnessed this for myself as outlined above. They disregarded the argument that they wouldn't need as big a pool because the developers they would recruit would be more productive and ultimately the codebase would end up cleaner.

On Thursday, February 16, 2017 at 4:36:53 PM UTC, Vlad Patryshev wrote:
Get an average Java developer and train them to become a good FP Scala programmer? Done it; developers are happy. There are known, and well-explained steps to get Java OOP programmers into Scala FP world.

Thanks,
-Vlad

On Wed, Feb 15, 2017 at 10:41 PM, kraythe <[hidden email]> wrote:
Whatever FUD is, I don't know. 

I get harassed by headhunters, a good portion of them want to place me in inappropriate jobs. I get 60 mails a day sometimes. Its stupid. Ive thought of cancelling my linked-in account at times. That doesnt translate to penetration. Scala developers cannot be hired. Companies that are stuck in scala with millions in capital investment would MUCH RATHER be able to staff their shops, so they go back to Java. Because the scala language is too difficult to learn, the shortage of developers means new projects aren't started in scala and those with the ability either black box their old software and build on it with java or just start over in java. 

That is just business reality. Good or bad hardly matters. You can't take an average dev and train them in a couple weeks and have them reading the Scala SDK with comprehension and have them good at the language in a month. Businesses don't have time for their staff to spend six months getting good or the money to send them to expensive 3 week seminars. Hence no penetration. 

I realize my posts aren't popular and I am not making friends. So my motivation must be something else. I am not nearly bored enough to want to sit here answering for no reason and I have a quite excellent live with a wonderful family and no need to go troll anyone. Therefore my intentions must be honorable. They aren't given credit for being so but I am not surprised really. 

I would love Scala to replace java. On this trajectory it doesn't have a chance. 

-- Robert


On Sunday, February 12, 2017 at 5:58:27 PM UTC-6, Kevin Wright wrote:
“Scala has gained ZERO significant traction in the business world.”

Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.

My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.


On 12 February 2017 at 21:54, kraythe <[hidden email]> wrote:
No its not. Scala has gained ZERO significant traction in the business world. It is not the next java. 

On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:
Oh, and Java of course is just perfect, compared to Scala.

Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.

The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.

I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.

Thanks,
-Vlad

On Sun, Feb 12, 2017 at 9:16 AM, kraythe <[hidden email]> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why. 

First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot. 

Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on. 

Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0. 

I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance. 

I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala. 

-- Robert, 
-- Principal Software Architect. 


--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.



--
Best regards,
Brian Maso
(949) 395-8551
Follow me: @bmaso
[hidden email]

--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
123456
Loading...