Fork me on GitHub
#jobs-discuss
<
2022-11-16
>
Muhammad Saqib09:11:17

Hello Cloujrians, I have been mostly into functional programming and find it hard to work with imperative languages. That’s why I always prefer to find jobs where I can work with a functional language. I am currently working in a company as an Elm developer, but I notice that there are a very few job opportunities for this technology. I want to learn a new functional language, which one should I go with having more job opportunities out of these? • Clojurescript • Rescript • Purescript • Or any other I don’t know about

Rupert (All Street)10:11:26

@U04BUQET5B2 - do you want it to be a client side or server side programming language? Clojure/ClojureScript language is an excellent, fun and powerful functional programming language. So I would naturally recommend that! Clojure/ClojureScript language leans towards small libraries rather than big frameworks - so I've put some suggestions below, but there are many options and you may get other good suggestions from the community. Serverside programmingBasics: You can build powerful websites fully server-side with Clojure ◦ Use libraries: (Server: https://github.com/ring-clojure/ring + Routing: https://github.com/weavejester/compojure or https://github.com/metosin/reitit + HTML: https://github.com/weavejester/hiccup) • If you need extra interactivity: you can layer in https://github.com/bigskysoftware/htmx + https://github.com/bigskysoftware/_hyperscript inside your Hiccup when you need it. Client side programming (when you need maximum interactivity or building a static website and don't want a backend) • ClojureScript runs in the browser- you can access the full power of React Hooks and the whole JavaScript React ecosystem by building your website with https://github.com/roman01la/uix. You would typically use https://github.com/thheller/shadow-cljs for running/compiling. Combine both Server side + Client side • You can create a client side frontend in clojurescript and backend Clojure and have some of the source code shared between the two since its all one language. • Only do this when ready - as it's a lot more work to learn a new frontend + backend language + libraries all at once.

🙌 1
Muhammad Saqib10:11:02

> do you want it to be a client side or server side programming language? I am mainly concerned with client side programming

👍 1
Rupert (All Street)12:11:05

ClojureScript might is worth trying out then. It's a small language and has nice capabilieis like live code reloading: https://www.youtube.com/watch?v=KZjFVdU8VLI

kennytilton13:11:45

ps Rescript and Purescript are strongly typed. No fun there.

octahedrion15:11:22

Clojure then Clojurescript because learning Clojurescript first is harder due to interop with JS and tooling

Rupert (All Street)16:11:28

@U0CKDHF4L - I get where you are coming from, but I think we should avoid putting up large barriers (like learning Clojure) when a new member just want do some client side programming in ClojureScript. It might be more off putting than encouraging. The learning materials and tooling for ClojureScript are certainly good enough to just jump in and use. Many ClojureScript libraries require no JS interop.

nonrecursive17:11:04

ClojureScript might make you more hireable? It seems like companies have a harder time hiring ClojureScript devs than Clojure

Rupert (All Street)17:11:18

At the last 3 companies I have worked at we have had a strong preference for full stack developers. Which I think is reasonable request given how similar Clojure and ClojureScript are. Full stack cuts down a huge amount of inter-role communication when a single developer can build/test/debug/release a feature all the way from the backend to the frontend.

octahedrion10:11:11

@UJVEQPAKS I don't consider learning Clojure (the core of it) a barrier at all

octahedrion10:11:12

e.g. type clj , visit https://clojurescript.io/ or https://www.maria.cloud/ and start experimenting

Rupert (All Street)10:11:17

Your second two links both appear to be powered by ClojureScript instead of Clojure, so I think I misunderstood you. I thought you were suggesting that if a user wants to get a taster/experience for ClojureScript in a browser, they first should go on "side quest" to learn Clojure on JVM first rather than just diving into ClojureScript (which is their actual goal). I agree that learning the core language can help in the long term, so I think we're on a similar page to each other.