Most of my career has been spent working with object-oriented languages. Object-oriented languages are a category of programming language that groups data with the operations that act upon that data. It groups them into things called objects, hence the name. It's, by a wide margin, the dominant paradigm for software being developed today. The only problem is I'm not sure that the object-oriented paradigm is all that good.
I've worked as an independent software engineer for over two decades. With almost no exceptions, each object-oriented codebase I encounter is a dumpster fire. It's become disorganized, difficult to reason about, and a challenge to work with. The object pundits would say that the reason is that the object-oriented way wasn't followed consistently or that the code should be even more object-oriented. But why do these codebases degrade so consistently and why is the solution to go "deeper into the crevase"?
There are other paradigms of programming languages. The one I'm most interested in is the functional paradigm. Functional languages' core organizing principle is the function - something that takes data as input and returns data as output. Now, most languages have functions, but the functional languages take it even further. Way further.
I have wanted to dive deep into functional languages for a while. Elixir is a newer language, but it holds a lot of intrigue for me and it's gaining a lot of steam. Let's get good at it.
I have a ton of books on this that I've been working through. I'm up to the point where I'm reasonably facile with the language itself - the syntax and semantics. This is only part of the puzzle though. Learning the dominant frameworks, the ecosystem of tooling, and how to deploy applications is important as well.
My plan is just to write software in Elixir and to dive into various books as I need to address individual topics.
I'm going to call this one done when I earn money for programming in Elixir professionally. This money can be earned from billings as an independent software engineer or from launching a commercial application that I built using Elixir.