News for hackers. Stuff that matters.
Re:Storm 2.0 by Jach on Sunday June 02, 2019 @06:25AM (#20074587)
At another point you just accept you'll have to hire people who don't fit the classic job requirement of "X years experience in Lang" and hire people who don't know Lang at all but want to learn. A growing Clojure shop in Seattle seems to be having success with this, onboarding the language is a small fraction of overall onboarding.

On the more meta level it's weird what people expect devs to learn on the job or know up front. Companies expect employees to keep up with the latest nonsense in web dev, but can't pick up a new straightforward language? Unless maybe another Algol like Go or TypeScript? This Steve Yegge quote captures some of it:

"For some reason, programmers love to learn new stuff, as long as it's not syntax."

Re:Storm 2.0 by amortize on Sunday June 02, 2019 @07:17AM (#20074775)
> A growing Clojure shop in Seattle seems to be having success with this, onboarding the language is a small fraction of overall onboarding.

I can attest to this fact, as part of a unicorn upstart with dev offices in Sao Paulo and Berlin. Clojure onboarding has never been a major roadblock for new engineers. And we never hire asking for "X years of lang experience". Almost everyone in the (~300 strong) engineering team started with zero-to-little Clojure background.

Re:Storm 2.0 by mooreds on Sunday June 02, 2019 @08:18AM (#20075001)
What do you look for? I mean the "X years of experience" is a shorthand proxy for "can get stuff done in the language we use". So I imagine you must have some other way of getting an idea of how a candidate can get things done. Would love to hear more about it.
Re:Storm 2.0 by amortize on Sunday June 02, 2019 @08:36AM (#20075084)
What we have found is that it is enough to verify 'can get stuff done', and leave out 'in the language we use'. So, much of the interview turns out to be a process of validating two things: 1. can do what is claimed in the language of choice. 2. gauge enthusiasm and interest to pick up our language.
Re:Storm 2.0 by lvh on Sunday June 02, 2019 @08:38AM (#20075092)
FWIW, that's been our experience as well (both at a largeish publicly traded company and now at a small private consultancy). Go get work sample tests :)

(It's fine if your work sample test really just focuses on one language! But then make it part of the rubric if that's the answer you want, and tell the applicant about that rubric.)

Re:Storm 2.0 by mooreds on Sunday June 02, 2019 @08:38AM (#20075093)
Thanks!

I can see 1. being pretty easy to suss out (paid take home coding assignment is how I'd do it).

How do you assess 2.?

Re:Storm 2.0 by amortize on Sunday June 02, 2019 @08:57AM (#20075169)
Mostly in our conversations, in an informal way. I would say the assumption we make is that developers with a penchant for any form of functional prog and/or Lisps, and with an acute focus on testing have an easy time grasping Clojure. And we bias our rubric towards this.

Also, we encourage our candidates to choose Clojure for their take-home assignment, even if they do not have any prior taste of it. This, for those of them who choose that option, gives an idea of if they would enjoy working in it. Our rubric however does not have a bias against developers who do not choose Clojure for their assignments, and we make this explicit to the candidates as well.

Re:Storm 2.0 by erk__ on Sunday June 02, 2019 @10:25AM (#20075635)
I guess the difference here is if they have to learn Clojure just to contribute to a single project, then they may be put behind some other things they want to learn and contribute to first.
Re:Storm 2.0 by willtim on Sunday June 02, 2019 @08:06AM (#20074959)
Yes it seems strange to me that a Java developer is willing to learn Spring, a massive ad-hoc framework which exists in part because of Java's weaknesses, rather than functional programming and Clojure (a lifelong skill that will benefit their Java programming).
Re:Storm 2.0 by StevePerkins on Sunday June 02, 2019 @10:16AM (#20075589)
This is not the answer that HN wants to hear, but Spring has enormous market share and makes your resume more marketable for tens of thousands of jobs. Clojure, or any other niche language you might insert here, does not help with career building on that level.

For every one shop that looks at darling niche stuff and thinks, "Ooh, that probably makes him or her a better programmer", there's ten shops who look at it and think, "They're probably going to be insufferable to work with, undermine the architects at every turn, and spend their whole time complaining about the tools we use".

As an aside, if you see Spring as existing to correct issues with the underlying Java language, then I'm highly skeptical that you've ever had meaningful experience with either one. Spring is a portfolio of libraries, stretching across over a dozen business application development domains, with inversion of control as the only common thread. NO language has all that baked into its standard library, and you'd have to pull down a bajillion NPM packages (or whatever) to even come close to approximating it.

Re:Storm 2.0 by willtim on Sunday June 02, 2019 @11:26AM (#20076036)
> if you see Spring as existing to correct issues with the underlying Java language, then I'm highly skeptical that you've ever had meaningful experience with either one.

Let's please avoid personal attacks if at all possible. Spring started out with the dependency injection framework and "aspect-oriented programming". It was marketed as an alternative to EJB. Web frameworks and other add-ons came later. If you don't see DI and AspectJ as working around Java's weaknesses, then I encourage you to try a more expressive language.

In an expressive language (e.g. Clojure or Haskell), DI and AspectJ could be, for example, replaced by reifying a program as data and using modular interpreters. One interpreter using mock data, another talks to the database, uses transaction boundaries and logs. This sort of solution is unfortunately just not very practical in Java.

Re:Storm 2.0 by Jach on Sunday June 02, 2019 @06:15PM (#20078659)
DI is just another name for "passing values to functions". We did it in Java just fine before Spring became so popular and Spring doesn't add that much for this particular way of writing Java code. Of course Spring is nice as a whole, even if huge and much more than DI, but the benefits of using it just to specify lazy proxy singletons using annotations are overblown. Autowiring becomes seductive so you get situations when you still need to test and some devs now have a component class with 10 private autowired dependencies and ask questions on how to test it that lead to in order of awfulness using reflection in the test to bypass 'private' and assign dummy values to the dependencies, using Spring's JUnit test runner and mock beans, rewriting the class a bit to use constructor or setter-method autowires that you can set without bringing in all the spring machinery, or break up the test so it depends on less and individual parts may not even need to be Spring components at all.

In another expressive language like Common Lisp, it has generic functions which 1) let you dispatch on more than just the class type of the first argument (implicitly in Java, explicitly 'self' in Python) which is a feature that by itself removes a lot of Java back-bending and 2) you can specify :before and :after and :around methods to provide the benefits of aspects with the built-in function compute-applicable-methods available to help see everything that might apply when invoking a method with specific arguments. There's also metaclasses which open other doors. There's just a whole lot of built-in expressiveness in the languages beyond the Java and JavaScript ecosystems.

Re:Storm 2.0 by solussd on Monday June 03, 2019 @06:15PM (#20089497)
Software developers' skills are mostly fungible– supply meets demand.

I've been happily employed (and regularly solicited) as a Clojure developer for over 8 years.

There's no shortage of Clojure dev positions for developers that want to write Clojure.

Re:Storm 2.0 by yogthos on Sunday June 02, 2019 @08:29AM (#20075052)
I've worked with plenty of devs in my time who don't really understand what they're doing and just copy and paste code from Stack Overflow until it seems to work. A lot of the enterprise takes the monkeys with typewriters approach to software development.

I think there are cultural reasons for that because enterprise treats devs like fungible cogs that you replace when they burn out. It tends to be highly dehumanizing environment where devs have no say, no autonomy, and no ownership. This naturally pushes out people who have options, and you end up with a pool of devs who just want any job that pays the bills.

Re:Storm 2.0 by kamaal on Monday June 03, 2019 @12:45AM (#20080473)
>>I think there are cultural reasons for that because enterprise treats devs like fungible cogs that you replace when they burn out.

Its mostly approach to any work in general. If it were upto them, these are really the kind of the people who would dig earth with spoons and shovels, instead of heavy machinery.

The idea is simple, should you use Spring + Java, you are likely to need say 60+ people to run a product well. It could take 15 to make it work in Clojure. But having 60 people has its own advantages from their perspective. Say 10 people decide to leave, they can hire 10 replacements for the lowest prices from the market, train them on the application and get it going. Eventually the whole team could leave and get replaced this way, reducing the problem to a bit like the Ship of Theseus paradox. But it works for them.

If they use Clojure, they have to treat people well, pay them well to retain them. Because there teams tend to be small and a exodus puts everything at risk.

They have to use spoons and shovels, personnel trained to work on heavy machinery are expensive, training is expensive and replacing them is expensive.

Re:Storm 2.0 by thomasfedb on Sunday June 02, 2019 @09:54AM (#20075455)
I think it's interesting that people (willingly?) pigeonhole themselves to the extent that they're a "Java developer" or a ".NET Engineer" rather than more simply a "Software Engineer".

I'm a Software Engineer, and while I have my go-to tools, I'd like to think I make an informed choice to use what fits the task at hand .

An Engineer who's a comfortable polygot is perhaps also a better Engineer overall.

Re:Storm 2.0 by nugator on Sunday June 02, 2019 @02:34PM (#20077148)
I'm willingly pigeonholing myself as a "software developer mostly working on the JVM" just to be honest about my (current) main strengths/experince. Throwing me into a Go/Python/whatever project would first need some time for me to get up to speed with the language.
Re:Storm 2.0 by pjmlp on Monday June 03, 2019 @03:37AM (#20081155)
I do the same, but I also happen to acknowledge that I slowly transition into X Developer, depending on which project I am on.

It is the usual "Jack of all trades, master of none." consulting, but it does come in handy when we need to deal with mixed stacks end-to-end.

Re:Storm 2.0 by dragonwriter on Sunday June 02, 2019 @10:37AM (#20075701)
I think it's a vicious circle: management used year of experienc with <tool/language> as a hiring filter, so devs focus on building years of experience with in-demand tools/languages to maintain maximum career opportunity, and the laser-like focus developers exhibit reinforces the idea that devs can't be flexible on tools and languages, supporting the use of the classic hiring filter.
Re:Storm 2.0 by lvh on Sunday June 02, 2019 @08:31AM (#20075062)
Also, to get there, you're already accepting the assertion that the move isn't a management decision :-)
Re:Storm 2.0 by dtech on Sunday June 02, 2019 @09:03AM (#20075192)
Spring is so large that a lot of job offerings require X years of Spring experience.
Re:Storm 2.0 by cutler on Sunday June 02, 2019 @09:46AM (#20075402)
Benefit their programming maybe but I don't see who Clojure will benefit anyone's Java as the two languages are poles apart.
Re:Storm 2.0 by dangerbird2 on Sunday June 02, 2019 @10:09AM (#20075534)
They both share the underlying JVM library ecosystem, and as Java increasingly applies functional programming to its mainstream frameworks, clojure is a good illustration of how a near-pure functional style can work within the JVM environment
Re:Storm 2.0 by cwyers on Sunday June 02, 2019 @11:52AM (#20076188)
Well, this isn't a hiring situation, this is a getting contributors to an open-source project. When you're looking for volunteers, the tolerable amount of friction is often less than if you're paying someone for their time.
Re:Storm 2.0 by Jach on Sunday June 02, 2019 @06:37PM (#20078815)
Yes, I was responding mostly to the grandparent's move towards discussing this sort of tradeoff in the commercial space, not just in the open source space. To stick with open source, it could become the case that moving away from Clojure leads to a cooling of contributors, existing or new. If you're looking for an Apache project to start contributing to, there's no shortage of Java projects. But if you like Clojure or want to learn it better, hey look there used to be this Clojure one, cool. If you liked the Storm project specifically and wanted to conribute, I don't think the language would get in the way that much. (Speaking personally if I had more time and energy I'd like to try and contribute to the Godot project despite my desire to never have to program in C++ again. It's a sufficiently cool project to overcome that.)

Optimizing for new volunteer contributors goes beyond core language choice anyway. For an interesting description of how the game Battle for Wesnoth tried to do it, see: http://aosabook.org/en/wesnoth.html