La mia esperienza:
Lavoro (a Londra) con Clojure da quasi sei mesi, stiamo riscrivendo un'applicazione java web classica (hibernate/oracle/spring) per uno dei siti di news piu' visitati al mondo.
Non e' molto, forse avrei bisogno di un anno per avere un parere completo, tuttavia posso dire di amare clojure come non abbia mai amato nessun altro linguaggio (in passato ho lavorato con java,C#,ruby,node.js).
I punti salienti:
- Fatica non da poco per spostarmi dal paradigma OO al paradigma FP, ma nel giro di un paio di settimane ero a posto
- Fatica non da poco per imparare ad usare emacs (e soprattutto i vari packages come nrepl, magit, etc) ma al momento e' il mio editor preferito, tanto che lo uso per html, css, orgmode (todos), ...
- O tutto o niente, non credo sia una buona idea usare clojure senza emacs: si fa piu' fatica ma emacs aiuta e non poco
- Ho come l'impressione (molto personale) che per scrivere nei linguaggi sopra citati serva meno 'educazione' rispetto ai linguaggi funzionali, non fraintendermi, per scrivere buon OO ci vogliono anni di esperienza e molti libri letti, ma per scrivere qualcosa di sensato in FP ci vuole un po' piu' di cultura di base, da li a scrivere codice elegante.. beh vedremo...
- Sono quasi sicuro al 100% che un team che non abbia un buon programmatore funzionale al suo interno non diventera' mai un team FP decente, ci vuole un senior, con cui fare pairing e con cui imparare i patterns/i trucchi/ecc (anche qui potresti dirmi che vale lo stesso per TDD o OO, ma credo che in questo contesto l'impatto sia piu' estremo)
- Clojure per noi sta funzionando molto bene sia sul lato trasformazione dati (leggi legacy db che va a finire in elastic search) che sul lato presentazione dati: sono convinto che la programmazione non sia altro che trasformazione dati, da righe di un db a documenti a pagine html
- apprezzo specialmente la dinamicita' del linguaggio con i vantaggi della compilazione (compile check, code completition)
- apprezzo che il buono del mondo java sia fortemente presente (la jvm, librerie, memory model) ma allo stesso tempo assente (spring, enterprise fat frameworks/tools)
- Il discorso Test e' forse OT qui, sono in generale d'accordo con Rich Hickey e noi facciamo molto repl-driven coding ma abbiamo speso molto tempo a scrivere una suite di tests (usando midje & enlive) che controlla che il sito che stiamo riscrivendo abbia la stessa struttura (DOM+dati) di quello vecchio (stiamo cambiando 'solo' il backend)
Chiudendo il discorso Clojure:
- Sull'azienda: se acquisita da adobe e se fa ancora applicazioni in flash, lascerei perdere, il fatto che sia di betting non mi disturberebbe piu' di molto, alla fine per te e' una challenge come hai scritto e un'ottima scusa per spostarti
- Come ha già' scritto qualcuno nel thread, ho anche io l'impressione che i recruiters mettano la keyword /Clojure per attrarre persone, se non c'e' un piano serio di passare a Clojure ma e' un po' vago lascerei perdere: specchietto per le allodole.
- Non mi limiterei ad una sola opzione (tempo permettendo), proverei a cercare qui:
http://functionaljobs.com/ , non hai esperienza clojure/functional ma puoi sembre provare a cercare per qualche internship program per farti le ossa
- Londra e' bella, soprattutto quando ci regala un mese di estate come quest'anno ;-)
In bocca al lupo!
Antonio