During the code review, the interviewer seemed surprised that I used a database, but didn't seem to have much of a problem with it ("you're the only one I've seen do it that way"). In any event, the 'code review' consisted of him saying "Well, um.... I can't really find anything wrong with this, you're definitely a good Clojure developer"
And then they passed on me anyway. I wonder if they ever filled the position?
P.S., not the first time something like this has happened to me, I've had nearly the exact same experience when I applied for a Golang job.
P.P.S., Also I've got the "Pass. We think you'd be bored here." Which is aggravating. It seems I can only find employment at places with nearly non-existent tech screening that under-utilize me and don't care if I'm bored out of my skull.
Coming from Django Rest Framework I felt at home with Compojure-API.
Hearing "you are overqualified" is awful.
The obvious solution to me in this case was not to eschew the use of a database. Since Clojure runs on the JVM, there are many 'embeddable' databases one can use (H2, Derby, et al) that do not place a burden on the person running your program. Hacking together a poor implementation of an in-memory database myself seemed silly.
Indeed, a major use of embedded databases like H2 and Derby is in prototyping - with the intent of moving to a 'real' database in production.
Here's a good article I've found with information about them:
http://josf.info/blog/2014/03/21/getting-acquainted-with-clo...
http://www.smashcompany.com/technology/embarrassing-code-i-w...
Maybe if you had used datomic as your database it would’ve been fine (/s)
They said it was OK and asked me to turn it into a REST web service as the second part of the assignment. Now I had to keep score between calls but sharing data using a global structure goes against every fiber of my developer muscles so I picked a database. I'm no clojure expert but I guess in the real world most REST APIs are using databases under the hood instead of atoms.
Apparently I was supposed to use a global shared collection instead of a proper database because they want to see if I'm able to map/filter/reduce.
Recruiting is such a gamble - I have this former colleague that I've introduced to functional programming and he passed with flying colors at Nubank's recruiting hoops. I would not say I'm smarter than him but he would agree that I know more about our trade.