Convince your boss to let you use Scala
scala-boss.heroku.com
scala-boss.heroku.com
Let me first define Big Corp. A traditionally long standing business (good ole boys) type of company. A financial or insurance institution, with hundreds of employees in I.T., devs, QA, and deployment.
I've seen big corps with large teams who are entrenched in .Net or Java mention they also must worry about getting people to understand your Scala code. Hate to say it, but I've meet a lot of supposed Java programmers who didn't know what a HashMap was... in big corp...
In my experience, they just (big corp) don't give a crap. It's Java or .Net and if you don't like it... leave.
Unless that one small group going rouge and using Scala has full backing from the top you'll find yourself on a deserted island in time... which doesn't mean to say that they won't give you a shot. They will but they want 2-3x results. Otherwise why break what you have now? I'm just saying that is what I see them thinking.
I believe it has to do more with the type of project and if it has real visible impact on the bottom line to whether Scala or X,Y,Z will succeed in the big corp env. Project A does well, makes Big Corp more $$$ then they try to reproduce. Mr. VP of finance doesn't care if it's Scala or Alacs (Scala backwards) and that Scala helps you write less code. Small Corp might though as they have less resources (funds/time).
Just my opinion from interfacing with Big Corp.
I did leave (each one) after I got tired of trying to champion better ways of doing things.
Twitter "success stories" (yes, with quote, since we never actually see the internal code of Twitter, and considering that they have many developers since that is their core) is probably not applicable to "business enterprise software". I believe there are attempts to fit solution for case X to case Y already in the history of software projects. I'm not sure if that went well.
side note: Why would anyone downvote this? What is a downvote? Does it mean it's not true? Should we downvote everything we don't agree with? Is this some kind of competition?
The presentation was about how to switch to Scala and the primary consideration was "I want to do functional programming", not "I want to use something like Java, but less verbose" (which would lean more towards groovy or possibly jruby).
Consider downvotes as an editorial tool to help you create better posts. When you see a downvote the first response should be, "what is wrong with my post?"
If it takes the thread off topic, delete your post.
If it is on topic, consider rewriting your post so that your ideas are communicated more clearly, your arguments flow logically, your position is reasonably supported by relevant details or examples, and that it does not rely on ad hominem or sweeping generalizations.
(and why is it not in Alioth language shootout? ATS is brilliant, but how many devs could tell you anything about it?)
http://groovy.dzone.com/articles/groovy-action-how-make-5000
Might that be why the benchmarks game tells devs about ATS?
- Complex syntax: semicolon inference, optional parenthesis, optional braces, arbitrary infix operators, associativity rules...
- Complex semantics: classes, case classes, traits, mixins, implicits, function objects, lambdas, currying, generics, variance, view bounds, context bounds, type parameters, multiple packages, relative imports, pattern matching...
- Standard library is EXTREMELY bloated. Simple classes have dozens of supertypes and hundreds of methods. Documentation is also lacking: a lot non-obvious methods and even entire classes have no comments or scaladocs.
- Implicits are nice in theory, but in practice they lead to nasty spaghetti code which is difficult to follow. They also hide errors which would be caught be more more robust type systems. So does type inference. So does the lack of checked exceptions.
- IDE support is still poor. The problem isn't that Scala is new; it's just very difficult to build a great IDE for such a complex language.
- Ugliness resulting from JVM compatibility: null, ClassManifest, Function/Tuple classes, nasty mangled names...
- Compilation is very slow, with or without fsc. Compiler is more stable than it was a few years ago, but it still does funny things and occasionally crashes.
- Huge memory overheads and lousy performance resulting resulting from all the indirection.
WTF is the point of it all?
I'll bet this is a big Yes for Scala, Groovy or Clojure compared to Java.
A few others: http://getvouched.com/jobs?term=&terms=%2C6d81ef86-fe56-...
Sometimes they want software that is a good selling point. A language can be 100 times better but if the customer never heard about it it can be hard to sell. Some customers just want there product written in .Net or Java.
Those people are 'clients' rather than 'customers'. The former are people who mostly likely are paying you to create something specific. The latter are purchasing a program, or access to a program on the web, and unless it's something that integrates with other bits of IT infrastructure, likely don't care a bit what it's written in as long as it works.
One of the things I'm loving about working on LiberWriter is that people don't care in the slightest what it uses as long as it does what they need. Night and day from regular battles, discussions and intrigues in the consulting world over tech choices.
Also, switching from Java to Scala without leveraging it's main features (using Actors, functional programming) seems like switching for no good reason, other than the fact that Scala is trendy nowadays.
Those are all benefits of Scala over Java, so what makes them less important than Actors and functional programming? (Notwithstanding the fact that some of those benefits are because of gradually introducing the more accessible functional programming constructs - like filter and Option.)
That's like saying you shouldn't use Ruby unless you plan to write lots of DSLs and monkeypatch everything. Some people do those things with Ruby, and it's good at them, but it does other things too.