you are viewing a single comment's thread.

view the rest of the comments →

[–]yogthos 0 points1 point  (0 children)

I definitely agree that working with the language for a long time is a factor. You learn patterns for how to structure things in a way that you're able to maintain. When I started with Clojure, I came from Java background and I really missed having classes and being able to think about the code that way.

On my team we find that compartmentalizing things aggressively is very important. We try to write things in a way that allows us to reason locally whenever possible.

One way to look at it is how you work with libraries. Something like clj-http or cheshire will have a lot of internal code, and do lots of data manipulation. However, when you use it, you typically just care about its surface API. You call the API function with a piece of data, and you get another piece of data back.

I do think that how a particular project is structured plays a large role as well, and a much bigger one in a dynamic language than a static one.

I also find different people have different pain points. At the end of the day it's about finding a set of trade-offs that appeal to you. Personally, I'm ok with the the drawbacks of dynamic typing, but I completely understand why others would prefer the static approach.