Fork me on GitHub
#community-development
<
2019-03-31
>
ackerleytng00:03:36

I'm thinking of teaching clojure at my workplace - gathered some initial feedback and the big question was "Why should I learn clojure?". What would make a good 1 hour demo to convince people to learn clojure?

Eccentric J02:03:43

It very much depends on the people’s experience and expectations there. Try to think about problems you are experiencing with what you currently use and how Clojure is better suited to address them. Also think about their likely objections and how those can be addressed with Clojure. For instance at my day job, I would show a comparison of an over-engineered python class and show how it can be made simpler by composing Clojure core functions that are very easy to test.

Eccentric J02:03:53

Additionally demonstrating the live REPL & editor integration is interesting.

Eccentric J02:03:26

I feel Clojure as a language has only trade-offs compared to other languages so it may be more effective to demonstrate the value of functional programming and how Clojure leverages those ideas to make better systems faster, that are easier to scale.

orestis06:03:02

I like to pitch Clojure as a pragmatic, get things done language. Do your prototype quickly in Clojure, and it’s also production ready.

orestis06:03:50

Also, once traditional “frameworks” like Django/Rails might start to fail you, because your problem domain moved past their sweet spot, then Clojure was an extremely good fit.

orestis06:03:14

So to answer the original question, doing an one hour demo is tricky, precisely because Clojure is more suited for harder problems (I think). However, showcasing the REPL, perhaps for data exploration or developing some tricky algorithm would be interesting.

orestis06:03:51

Solving an actual problem is always interesting. Bonus points for asking for the audience for a problem :D

orestis06:03:19

Or another angle: showcase how nice libraries interoperate, without the need of frameworks. E.g. start with raw jdbc, add clojure.jdbc, then add honey sql, change it to hug sql, then add a web layer on top. Should be doable if rehearsed...

ackerleytng06:03:46

Thanks guys! I think I think I could try the SQL one. You're right about practicing first!

orestis07:03:49

Word of caution: live coding can go really really wrong. Consider having the code on slides, with diagrams showing the “architecture” so that people can follow along with the essence, instead of the trivialities.

orestis07:03:10

Out of curiosity, which languages are you using now in your company?

ackerleytng11:03:41

We're using python and react, some others are using Java and kotlin

cvic12:03:28

and what type of products are you building?

ackerleytng12:03:36

enterprise web applications! for internal use

cvic20:03:15

Interesting!

ackerleytng23:03:52

Has anyone else successfully evangelized clojure at work?

orestis03:04:30

I’m in the process of doing that. Currently developing a new feature for our SaaS with it.

ackerleytng12:04:37

Is the rest of your SaaS in java?

orestis14:04:16

Nope, 100% node. We’re actually trying to split the system (not in microservices, but some better integration points and define API).

hipster coder14:04:39

Node is good for 1 off api type projects. It does have really low network latency. But they are trying to make node handle multi core. But if I need to scale an API, I put it on the JVM. Node is as fast as JVM until you hit around 20k messages per core.

timgilbert20:04:01

A long time back I came up with this little slide deck for a "super-fast intro to clojure" talk I gave at work, please feel free to use any of it if it looks useful... https://github.com/timgilbert/cljs-intro-slides

ackerleytng13:04:14

cool, thanks!

danielcompton20:03:47

What do the admins think about deleting #spec? It's archived, but is the first autocompletion for typing "spec" in the command switcher. AFAICT it wasn't really used, and the description says "this channel will be removed eventually"

4
seancorfield20:03:09

I'd forgotten it was still around.