Fork me on GitHub
#jobs-discuss
<
2018-10-08
>
Andrea Imparato13:10:59

hallo everyone! quick question, how hard is to hire clojure devs in your experience?

mauricio.szabo15:10:50

In my experience and in my country, close to impossible 😛. What we do is to hire competent software developers, try to see if they are interested in functional programming or if they had any kind of exposure to it, then expect then to learn the language

Andrea Imparato15:10:54

we have to spread the language all over the world!!!!

Andrea Imparato15:10:07

thanks for your answer @U3Y18N0UC 🙂

mauricio.szabo15:10:55

Yep, I'm trying on my current company 😄

ljosa15:10:59

Same here at Yieldbot: most that we have hired have not had much or any Clojure experience. Clojure appears to be easy to learn.

norman16:10:11

In my experience, the problem is too many clojurists and too few jobs. I don’t see how a new Clojurist can hope to find a job.

ag16:10:30

the question is wrong. should be: how hard is to hire high quality engineers?. And the answer is: very difficult. Clojure simply works as a filter. If a person at least tried Clojure out of curiosity, chances are - they're already somewhat experienced in general.

👍 4
alexlynham16:10:00

I think it depends on where you are too

ag16:10:42

> too many clojurists and too few jobs Too few jobs that ready to pay competitive salaries. Clojure devs demand higher pay. TBH, if I given a budget to hire 3 devs and had to choose between Clojurista and non-functional devs - I'd rather pay that number to a single Clojure dev. They sometimes worth a team.

alexlynham16:10:17

> Too few jobs that ready to pay competitive salaries. Clojure devs demand higher pay. yep I've seen this a fair few times. Experienced clj folks have options but there's sometimes an impedance mismatch of whether employers just want to crosstrain cheaper devs

ag16:10:18

Most businesses don’t understand, can’t evaluate and cannot estimate the real cost of software. Industry in general still getting used to the ideas of functional programming like : “let’s rather have a slow start, but then later be able to scale”. What we can do as functional programmers: is to get better in advocating for it from the business side. Explaining TCO and etc.

👏 16
ag16:10:40

I’ve heard opinions like “PHP is fine, Facebook built their business using PHP”. The real question is: “what price did they pay for that?”

☝️ 12
mauricio.szabo16:10:06

Wonderful explanation! It's one of the main problems that I have when trying to use Clojure or other functional languages: most people want to "start fast" (my current company writes mostly Ruby code) but can't estimate the costs of change in the future (in fact, they're not even interested in this number...)

alexlynham16:10:55

well tbh - if I wanted to just go fast, I'd probably still start a rails team and then refactor to clojure once I'd proved the idea

alexlynham16:10:53

if your MVP contains 3 core features then it's okay to start slow, otherwise if it's say, 12 or something... idk I'd be tempted to crack that out over a weekend in rails heh

mauricio.szabo16:10:17

Yeah, but in most of the cases, it's not really a MVP that we're building: it's trying to extract microservices from a big monolithic system. I don't think Rails would shine here

alexlynham16:10:41

sure, if you're already at the point of refactoring a stable product then clojure is great

ag17:10:44

> if I wanted to just go fast, I’d probably still start a rails team I’ve seen many times the same pattern. with Django, with Rails, with nodejs apps built with Angular and Redux: It’s easy to start the project, get the essentials out. But within a year project becomes hard to grow, difficult to scale. in contrast: starting Clojure(script) projects takes longer. But after initial few months is a smooth sail

alexlynham07:10:31

yeah, it is a sliding scale though 🙂

alexlynham07:10:00

but I tend to agree

alexlynham07:10:12

my last place was going from a rails initial product to a clojure one

ag16:10:30

the question is wrong. should be: how hard is to hire high quality engineers?. And the answer is: very difficult. Clojure simply works as a filter. If a person at least tried Clojure out of curiosity, chances are - they're already somewhat experienced in general.

👍 4
ag16:10:18

Most businesses don’t understand, can’t evaluate and cannot estimate the real cost of software. Industry in general still getting used to the ideas of functional programming like : “let’s rather have a slow start, but then later be able to scale”. What we can do as functional programmers: is to get better in advocating for it from the business side. Explaining TCO and etc.

👏 16
ag16:10:40

I’ve heard opinions like “PHP is fine, Facebook built their business using PHP”. The real question is: “what price did they pay for that?”

☝️ 12
manutter5117:10:03

“Name a major company, other than Facebook, that ended up devoting an entire engineering team to re-writing the language their core app was written in as a necessary business investment.”

☝️ 12
manutter5117:10:41

Twitter? Really?

mpenet17:10:44

Ah, the language. I missread

mpenet17:10:07

No not at all

seancorfield17:10:32

Our experience was that posting a job that offered folks Clojure led to a lot of interesting resumes -- there are certainly a lot more people who want to do Clojure than there are Clojure jobs. At least in the US. Hiring Clojure developers is still hard tho'. You either have to be prepared and have the resources to hire-and-train folks who haven't used Clojure in production that are smart and keen or you have to go after the (much smaller) number who already have production Clojure experience.

seancorfield17:10:47

We're still in that part of the lifecycle where there are a core of experienced Clojure developers and a lot of new or yet-to-become Clojure developers -- and very little in between.

jeremy21:10:01

What is in between? Where do you fit experienced Java developers with little production clojure experience? On the new side? Do you find most of the new or yet to become are coming from 0 or with a bit of experience in something else?

seancorfield23:10:57

@UANK2VBHA an experienced Java developer with little-to-no production Clojure experience is still a new Clojure developer -- the more OOP experience a developer has, the harder the jump to the FP mindset in general (unless they had FP experience prior to OOP).

alexlynham17:10:06

> We're still in that part of the lifecycle where there are a core of experienced Clojure developers and a lot of new or yet-to-become Clojure developers -- and very little in between ^ 👍 💯

scriptor17:10:21

I think as an industry we’re slowly getting better at hiring non-clojure devs and training them

👍 4
danielglauser17:10:57

At Cambium we found hiring to be really easy, however we mandated the following things: - Everyone works remotely - Availability during US normal working hours - Regular on-camera check-in’s, that way we can see body language and tell how you are doing - Pairing together when necessary/possible

danielglauser17:10:42

With this setup we always had a bunch of qualified folks to work with. Our biggest challenge has been brining in new business.

danielglauser17:10:11

Hiring was easy, convincing folks to let us write Clojure for them was a challenge.

danielglauser17:10:52

As soon as you insisted that someone go into a particular office, the hiring pool got really small.

⬆️ 8
danielglauser17:10:26

I’ve spoken with other shops, the only places that have had trouble hiring are those that insisted on colocating people.

scriptor17:10:32

are there any particular sources that people have found useful for finding candidates?

scriptor17:10:03

especially for finding people interested in writing clojure?

risto18:10:05

it's so weird when I hear stuff like this, because I find it hard to find clojure jobs

risto18:10:02

maybe it's a hard problem with the job market in general, like a lack of marketing on both sides? at least for when companies can't find good candidates and job seekers can't find good companies

ericnormand18:10:09

@risto I've heard the difficulty on both sides, too

ericnormand18:10:16

hard to find jobs plus hard to find employees

ericnormand18:10:43

where are you looking?

ericnormand18:10:48

@seancorfield I'd love to pick your brain about what people need for production Clojure

risto18:10:22

i dont know, just here and wherever i see them on job boards like functional works it could be a lot of things, maybe i'm not very good at clojure or programming in general, or my resume doesn't reflect what i know, or something else entirely, etc..

ericnormand18:10:39

so you apply and don't get an offer?

risto18:10:15

it's never lead to a whiteboard or coding thing, i've had a couple of initial calls but thats it

risto18:10:29

usually never leads to a call though

ag18:10:37

> it’s so weird when I hear stuff like this, because I find it hard to find clojure jobs This probably has little to do with Clojure. I’ve been hearing the same thing over the past decade. It’s hard to find jobs where OCaml, or Haskell, Erlang or Clojure is used. Even Microsoft although tried hard to push F#, it still not easy to find F# jobs

risto18:10:42

well the weird thing is that I would expect employers to get a lot of good candidates applying

risto18:10:53

it might be harder for the job seeker, but it seems like a lot of people know clojure and haskell for example

seancorfield18:10:22

As an employer, I can say that we have definitely had a lot of candidates applying for any of the jobs we've opened. "good candidates" is another matter.

kardan18:10:23

Second this

risto18:10:32

what do use to evaluate how good a candidate is?

risto18:10:53

some of the stuff i've seen, i question whether their methods are really adequately evaluating programming skill

seancorfield18:10:51

Those are good questions for the main channel so everyone can see/answer!

risto18:10:24

what do use to evaluate how good a candidate is?

seancorfield18:10:22

I do not perform a "technical test" interview, because I think those are broken. I prefer a conversational interview where I can get the candidate talking about what they like and don't like in projects, libraries, technology in general, as well as in teamwork and management style.

ag18:10:31

the bar for a Clojure or Haskell developer is definitely expected to be higher

dm318:10:46

It’s hard to find good people for cheap

seancorfield18:10:06

If you're not even getting a follow-up on your resume/CV then you probably need to revamp it (and maybe need someone to help you -- or at least review it and provide feedback).

seancorfield18:10:46

If you're getting screening calls from most places you apply and it doesn't go any further, then there's something they're hearing in that screening call that is causing them to lose interest.

seancorfield18:10:16

@ericnormand My comment was intended to differentiate between companies that are constrained in terms of training/mentoring and therefore need people who can hit the ground running, and therefore strongly prefer people who've already have proven production experience with Clojure -- vs companies that can train/mentor folks who have not used Clojure in production.

risto18:10:34

i might not be the best example though as I've only been looking for fully remote, and plus i don't have industry experience with it it would take someone to dig deeper and look at my clojure repos, i doubt a lot of people have the time to do that

seancorfield18:10:49

For, say, a Groovy shop, it can easily take on Java devs who may not have production Groovy experience because they're similar enough. A Clojure shop is very different to a Java shop so taking on people who have no production Clojure experience is much riskier. And most Clojure shops tend to be small so they are often resource/time-constrained in terms of mentoring...

seancorfield18:10:50

Even a Scala shop can reasonably take on Java devs and get them up to speed fairly quickly -- depending on where that shop's code base falls on the OOP <---> FP spectrum.

ag18:10:41

Yes, it’s a conundrum: - Companies using Clojure want to hire experienced devs but not ready to pay higher salaries and accommodate requests like 100% remote. - Developers who have field experience with Clojure are usually very good and require higher than usual pay. - Developers who have no field experience with Clojure, but interested to learn can’t find jobs because companies are not willing to pay for training them (because after that they would ask for a raise)

👍 4
seancorfield18:10:49

Well, #notallcompanies but, yes, it's true for quite a few Clojure shops. I'm surprised about the remote aspects -- but that may depend on the company's location (some countries seem to have more remote work than others). Where I work, we are 100% remote across all positions in the company and a lot of the Clojure companies I talk to in the US seem to be partly or mostly remote.

ag18:10:38

Not in Bay Area. Apple - wants them onsite, Walmart Labs - the same, FundingCircle - mostly onsite, bunch of smaller companies - usually the same

ag18:10:38

DividendFinance, Adstage - onsite. The only exception that comes to my mind, maybe CircleCI

seancorfield18:10:34

All of the Bay Area companies I've talked to allow some level of remote working -- but the Bay Area is definitely a bit "special" and of course several companies here want you on-site so they can lock you into company culture and keep you on-site for long hours and control how you work. Some of those companies are considered very attractive to a lot of candidates for some reason. I would not work for most of them. And, yes, I live right here in the Bay Area -- but I hate Silicon Valley culture, for the most part.

seancorfield18:10:59

I think CircleCI is a great company.

seancorfield18:10:36

I would never work at Apple (nor Google nor Facebook).

ag18:10:25

I wanted to apply to work for CircleCI, but then I heard they decided to move from Clojurescript to vanilla JS on front-end and keep Clojure only for the back-end

seancorfield18:10:51

We are vanilla JS (React.js, Immutant.js, etc) on the front end and Clojure only on the backend. If we were starting again today on a new frontend, we might change that decision, but our previous experiences with ClojureScript in the past put us off trying to use it in production for a high-traffic multi-tenant system like ours (which we started building two years ago).

seancorfield18:10:29

ClojureScript has evolved a lot over the last few years and tooling has shifted dramatically. I think it's much more production-ready today than it was.

ag18:10:15

that is exactly why I was surprised that CircleCI decided to move away from it now…

ag18:10:14

modern Clojurescript with a Clojure back-end is really nice

4
mccraigmccraig18:10:22

we've been using cljs(+re-frame+cordova) for our mobile+web app. pretty much zero of the problems we encounter come from cljs itself

seancorfield18:10:57

I suspect they were locked into older, more complex tooling and perhaps getting bogged down by their framework choices, as things evolved. And it is much easier (and cheaper!) to hire JS developers, to be honest.

seancorfield18:10:14

Yeah, like I say, if we were starting from scratch today, I think we'd consider cljs instead of js... Our JS devs are certainly interested in it 🙂

ag18:10:08

but that comes with the cost. When I was at FundingCircle we were building front-end app and a different team was using vanilla-js and node. They had to rebuilt theirs from scratch 3 times within time span of less than a year

ag18:10:12

Whereas ours (in cljs) took longer to set it up. We started with om.next, then switched to re-frame.

ag18:10:27

but today that team is rocking it

rmprescott02:10:14

^this I've been avoiding front-end work for a decade because none of the tools seem to have any ability to not keel over from accidental complexity rather quickly. This is not the first time I've heard this about cljs. It's still anecdotal -- but encouraging.

ag02:10:27

back then when our cljs project still felt experimental, chief architect thought maybe instead of putting all the eggs in one basket, it would be safe for another team not to use cljs. And cljs team had built entire portal (despite being smaller), there were even talks at some point - maybe now since we have such an efficient team they could save the other, less successful project.

seancorfield18:10:22

I do not perform a "technical test" interview, because I think those are broken. I prefer a conversational interview where I can get the candidate talking about what they like and don't like in projects, libraries, technology in general, as well as in teamwork and management style.

seancorfield18:10:50

The mind map that I use to guide interviews is pinned to this channel as a PDF for everyone to see.

🙏 12
rmprescott02:10:49

To access: gear icon on top of channel > View Channel Details > Pinned Items (one of the few hard things to find in Slack)

risto18:10:05

hmm.. ok that seems pretty idiot proof

risto18:10:13

i'm surprised you have trouble finding good clojure devs

kardan18:10:16

We tend to do a discussion style interview with a process of 2-3 interviews with a mixed set of people (developers, product owners…) But then we always offer a shorter 3-6 months contract to see how things work out. As context our entire dev organisation is on yearly contract (remote). But more or less seen as staff from the orgs point of view.

kardan18:10:25

I’m also very questionable how much a technical test says. So much of delivering value to the organisation is not just typing an algoritm

ljosa18:10:32

How do you get people to quit their previous jobs and take chance on you for only a short-term contract? Seems like that would limit your pool to those who are already out of a job (and desperate or in no need of steady employment). Also, you must not be using recruiters, then?

kardan18:10:02

Not using recruiters.

seancorfield18:10:07

> i'm surprised you have trouble finding good clojure devs Finding good devs is hard in general. Not just for Clojure.

✔️ 16
kardan18:10:22

Essentially we try to provide something that attractive. We’re an non profit and can’t compete on salary only. As context I don’t think we ever not extended that first contract. Really try to make it not a trial period where people have to kill themselves.

kardan18:10:07

But it is what it is. Some good and some bad

risto18:10:25

is it possible that it's more like you can't find good devs that would accept the deal you're offering? ie lower than expected salary, missing benefits, lack of remote, lack of permanent role?

kardan19:10:22

To be clear, we’re fully remote. We’re EU based and it’s hard to compete with the US

ag19:10:22

So here’s a completely honest perspective: I live in Bay Area. Life here is extremely expensive. My rent alone costs me almost $40K/Y. For me to cover my expenses and live more or less normal life I have to earn at least $130K-$150K a year after all the deductions. That is a lot of money. Probably no company outside of Bay Area would be able to pay that much.

ag19:10:41

very few companies would be able to pay that much even here. Now add to that my desire to use Clojure.

ag19:10:31

Now imagine assembling a team of 10 devs with the similar requirements.

ag19:10:48

As I said before: building software is expensive and long process and most businesses don’t understand, can’t evaluate and cannot estimate the real cost of building software. However - that team of 10 Clojure engineers can build, maintain and extend something that would require 3 times more engineers

Andrea Imparato19:10:08

now I have another question for you guys, how do you convince the stakeholders to allow you to use clojure? Imagine you’re already working in the company for 3 years and you are a senior php dev like me. You have a new project and it can build with whatever tech you want, what would you do?

ericnormand19:10:15

build it in clojure first, without asking permission

☝️ 12
ericnormand19:10:22

do a stellar, quick job

ericnormand19:10:49

if it's as good as you say it is, if they complain, it won't take much time from the PHP version

risto19:10:29

sometimes someone has to see it to believe it, you can't convince them a priori

ljosa19:10:45

As with all other tech, engineer it so you can get rid of it again. Whether it's a programming language or a database or a piece of your own code, you don't want to put yourself in a position where it becomes a ball and chain that you're tied to forever. We've managed to make that part of our culture, and then it's less scary to try new things.

mauricio.szabo19:10:12

@andrea.imparato find a problem (not too hard, but not too easy), make a simple proof-of-concept, then present it. Try to transform it in numbers (like, it integrates 20% easier on what we have, we can process 40% more data). It's easier to convince people if you have something to show already

Andrea Imparato19:10:38

yep all you say makes totally sense guys 😉

Andrea Imparato19:10:12

I need to study more clojure I guess though, I still have zero real life experience, only personal projects so far 😕

Andrea Imparato19:10:10

but I love so much the language that I feel so depressed every time I think I can’t use it for my daily job

mauricio.szabo19:10:56

My experience in my current job: we have a really difficult report to emit (lots of lines, crossing multiple tables in our DB, data is not normalized, and lots of antipatterns from Rails like Polymorphic Associations). Somebody here on Clojurians talked about rule-based engines, then I did a simple POC with Clara-Rules

mauricio.szabo19:10:13

In the end, that was what convinced people here

Andrea Imparato19:10:22

yep I think I just have to do the same, show them how I can do stuff faster, easier and more bug free 🙂

mattly19:10:28

at my previous job, I took 2k lines of ruby prototype code for generating a SQL query against a star-schema data warehouse and condensed that down to 400 lines of edn data and 40 lines of clojure logic (on top of honeysql) and that got a lot of attention

🍯 4
clj 12
mauricio.szabo19:10:42

When they saw a simple report being emited without a singe if in the code, nor any kind of "timing issues" like "we have to sort this list the right way, otherwise we'll not consider transfers in our report"

ljosa19:10:10

Look for something where a small solution can be valuable because it's something that's hard to do with your existing tech. Clojure came in the door here on the data analysis side: it works great with Spark and Storm and let us throw out Hadoop. Some other things we've used it for: a job that precomputes a large materialized join (replaced a six-machine python+celery cluster), a high-throughput, low-latency backend service (much faster and reliable than python, and much easier to maintain), and various datomic-near things (e.g., validation and graphql). Clojure/ClojureScript never caught on here for rendering web pages.

seancorfield19:10:22

That's actually how we brought Scala in at work (and subsequently replaced it with Clojure, which "stuck" where Scala did not).

seancorfield20:10:11

We had a very specific process that had defeated several people's attempts to build it effectively in a variety of technologies over the years. So management were open to trying to solve it in different ways already. Scala was actually a good solution although we ran into some issues (memory leaks in the built-in actor library and the horrendous 2.7 => 2.8 migration and the likely awful migration to 2.9).

seancorfield20:10:39

Clojure turned out to be a better solution (slower -- at first -- but a lot more reliable, and the migrations across alpha builds of 1.3 were easy as were nearly all subsequent migrations -- we're on 1.10 Alpha 8 in production today).

the2bears20:10:19

I had been playing around with Clojure on my personal projects for a bit, but was working in a Java shop at the time. Always kept a REPL open, and one day we needed to reproduce some behavior involving a heavy load in Kafka. I added a Kafka library, told everyone I hadn't tried this before, but let them see me work in the REPL - experimenting with small functions until very quickly I had a load generator that was sufficient for this particular test. I followed this up with a lunch and learn, and a few other internal tools. The result? I left there for a Clojure gig... which turned out to be a bait and switch to Scala, but that helped me land two offers at the time, both in Clojure. Here I am, happily working away in it now. But man, there was a time it seems near impossible to turn the "Titanic/Java Career" in the direction I wanted to go. So those still working on moving to Clojure professionally, you have my sympathies and advice if you ever need it.

20
the2bears20:10:43

As a follow-up: in my current role, I took a chance - accepting a contract position first. I was a little worried, because with a family etc. I have always preferred full-time. However, it worked out really well in this case, converted to FT in 3 months and accepting the contract was my way of proving my Clojure ability.

👍 20
joelsanchez16:10:23

your story reminds me of my own. I was working on the backend at a PHP shop, and I'd been using Clojure in personal projects for a while. one day they wanted to build a little recommendation engine, so I proposed using a graph db. the easiest way of doing this was using clojure, but I knew that'd never go through. a month afterwards I started my first Clojure job, full-time, writing a clojurescript frontend

the2bears17:10:35

Awesome, congrats on breaking free of PHP for Clojure!