I’ve been a software developer for about 15 years. Along the way, I’ve been writing software using different tools and technologies (mixing languages and frameworks in my head): .NET, C#, Ruby (On Rails), JavaScript, Scala, Clojure, Go, Swift, TypeScript, Elixir.
It’s hard to describe in one or two sentences what I learned along the way from all these languages and frameworks. I sometimes even felt offended by asking listing the languages, frameworks you’ve been using in the past. Because I think that missed the point.
One day I suddenly realized that maybe, asking who had the most impacted to your engineering career is more meaningful than asking what tools or technologies you’ve been used. Maybe even more important than what you’ve created along the way. Because by creating what, most of the time, is not under our control.
Things that resinated with me, or what actually changed my mind or brain, are always people, or now people always uses another fancy word – community.
I truly understand what design pattern means by learning from Terry Lee back in 2007, I was ignited by DHH’s demo of RubyOnRails in 2008; I was then in the rabbit hole of Ruby programming and Vim by watched all of Gary Bernhardt Destroy All Software. Then all of the sudden, Rich Hickey and David Nolen came from no where and washed my brain about programming completely. While doing Clojure and ClojureScript programming feels quite satisfying and I created some useless tools along the way. I was also greatly influenced by Mike Bostock and started thinking the computation medium through building data visualizations at the company.
At the same time, I somehow feels like my brain is still stuck with Ruby, the simplicity (weirdness) of the syntax just dominant my mind for constructing any programs. So then I re-discovered Elixir. Of course, I’ve watched lots of talks by the creator José Valim behind it. Whenever I am coding with Elixir, I feels like I am playing an art piece José made. The words (highlights are in the comments) of him also got me deeply.
That said, I don’t know from where you got the impression Elixir is mutable. Or got the impression we are trying to make “a better functional language”. Yes, it is a functional language, but we never claim it to be a better one (as it is a shallow goal). – josevalim original
Most recently I started following Rich Harries closely. Especially his talk about Rethinking Reactivity. (I will write more about my takeaways on this talk later on). But in nutshell, he encourage us to see the web development in a much simpler and accessible way.
Ultimately, the tools or languages we are using is made by humans. There are world views implanted into the tools or frameworks, therefore it will eventually “get” us as well. By adopting a tool is more like adopting a new perspective of seeing things.