In case you're interested, word creation is a pretty interesting topic in linguistics. The wikipedia page on this -- they call it "conversion" [1] -- seems like a good starting off point for someone interested in the subject.
I'm sure this is going to increase the competition for these roles, but heads up that the `icims.com` links weren't working for me, so you may need to use https://careers.microsoft.com/us/en/job/590350/Software-Engi... , which seems like the same position.
Aah, thanks for the clarification :) the top voted comments on this article now indicate that as well, so hopefully no one else will have the same confusion.
Aah, makes. I'm not a huge fan of it for similar reasons, but the appeal of a language that's quick, dirty, and relatively acceptable by coworkers is strong.
Re. a recommended alternative to quick and dirty bash scripts, do you think golang would do? I've barely dabbled with the language, but its default packaging (a single, static binary) and build system (`go build x`) seem well suited to rapid setup, deployment and testing, which is presumably what you'd want in this scenario.
May I ask where you invested your time in learning Scala (e.g. reading the red book, studying type theory, syntax + stdlib + collections, etc.)? I found I could read simple Kotlin in a couple afternoons, and after a couple weekends, I felt pretty comfortable with it. The only difficult concepts to wrap your head around, I'd say, are type safe builders [1] and coroutines [2], but you certainly don't need to know those to be productive in the language.
To answer your specific question, however, if you're doing Android development it's worth it :) otherwise, it's up to you/your specific situation.
AFAIK, it's popular on Android because it provides e.g. Java 8 stream-like functionality without needing support for that baked into ART, which is something. Additionally, it supports compilation to Javascript [3] and early support for JVM-less execution ("native") [4]. No new abstractions or ideas, though; the language designers were aiming to make something that formalized current best practices, not lay down new ones.
Beyond that, it's nothing that you couldn't cobble together without the standard Guava + Commons + Lombok + Quasar/EASync etc. libraries and plugins that you'd use on every project written in Java, as well as that terseness you mentioned that makes people excited (see Kotlin data classes [1] vs Lombok data classes [2], if/try returns values and destructuring [5], coroutine support for lightweight threading and generators [6], null safety w/o optionals and smart casting, etc. [7]).
In my opinion, it's hard to know what value those features provide without actually trying them out yourself. If you want to be certain that you're not missing something, I'd suggest writing up a little script to try out some of its features.
edit: Just noticed the other responses on this thread. It's also very useful for starting fights with Scala developers, apparently.
This [1] is the article they're citing. Note that a cursory search turns up similar claims from back in 2013; it might be worth waiting for someone with more experience and less bias to express their opinions before dumping your captcha-related stocks.
Not sure if it bothered anyone else enough to look, but I tracked down the missing source for the header image [1]. The U.S. Declaration of Independence [2] is another nice example of handwriting, but unlike a random, faded (and potential non-English?) recipe, it seems very legible and might not have helped the author's argument.
On the flip side, I lose coverage incredibly often with Freedom Mobile. Basements, but also random parts of ground-level buildings, are off-limits. To be fair, their coverage map doesn't flat out lie anymore, so they are improving.
They 'closed' the Google referer header loophole by switching to Facebook and Twitter headers. That is a shortened Twitter link, thus you see the full article.
Edit: You don't really need monads any more than you need classes, interfaces, functions, procedures (just use goto!), etc. they just help bring a bunch of seemingly disparate functionality together into one standard (which is helpful in, e.g. Scala or Haskell where there's some syntactic sugar for dealing with monads). People complained for the longest time (amongst many, many other things) that Javascript lacked classes, even though you could totally hack it together with `new`, functions and prototypes. Similarly, FP people complain that everything else lacks monad support, even though they can hack it together with largely language independent features (typically without compile-time checking).
I don't have an intuitive grasp of the formal definition of monads, but some examples of things that I _think_ are monads (in Java ... sorry :/ it's all I work with these days):
* jOOQ [1]: you use it to build up a sequence of SQL statements with a pleasant chaining API, then execute the whole shebang
* Promise/future chaining: you build up a sequence of promises that should apply in-order, then defer their execution until later (unless you use a language that performs a transformation at compile time which effectively does this for you).
* Streams/optional mapping: you build up a sequence of functions that should apply in-order to every element in a potentially empty sequence (optional: a sequence of 0 or 1).
* The builder pattern: you build up a sequence of property values, then (potentially) construct the entire object.
[1]: Conversion (word formation), https://en.wikipedia.org/wiki/Conversion_(word_formation)