I’ve been a part of a team consisting mostly of ClojureScript engineers for a year now. I’d like to point to one positive piece of feedback from my side.
By using ClojureScript, our team gets an opportunity to talk less about the language and more about the problem.
Perhaps it’s because the syntax is very minimal, the amount of abstractions one can use is just right, and there is usually a single way how to express an idea in the constructs of the language.
I used to work with Apple’s Swift before, so I’ll give you an example for it. When using Swift, one can often express the same idea using classes, structs, plain functions, protocol extensions or even enums. That’s a lot of things to take into account, and different people can have preferences for one or the other. When a member of a team opens a pull request, reviewers start to not only look at the algorithm or the approach of the solution, but at the usage of the language constructs, because they in fact are part of the approach. Then an argument regarding the usage of a language construct might rise, and if something needs to be solved it would require refactoring many lines of code.
I’m not saying these kind of discussions are useless. Also, Swift has its advantages. It always depends on the context. For a young company like ours, I think it’s great that the programming language gets out of the way and we can skip (perhaps postpone?) discussion about the use of the language.
To solve a problem using ClojureScript one can choose between a function or a data structure (which there are only a handful). Yes, I’ve naively simplified the statement, and so did I with the Swift example.
Of course, technical discussions are always present. However, more often than not we talk about browser’s behavior and APIs, performance characteristics of the code, function composition etc. Most of the time, these topics are not about how a particular problem is expressed using the language.
That’s the number one thing I like about ClojureScript. It simplifies communication and removes distractions.
P.S. I still consider myself a newbie in ClojureScript. Most likely the language is more complex than I even imagine. That’s not the point. I observe how our team operates, listen to the conversations, and this post is my conclusion.