Today I accepted the challenge of #100DaysOfCode and for the Day 00 I want to resume the current status, the motivation, the next steps and the expectations on this challenge.
Currently I’m working as a Developer Consultant at ThoughtWorks on a project using mostly Java, Spring Boot, Buildkite, GitHub and some Kubernetes magic.
For me, Java has a interesting ecosystem and a very large and mature community, however, Java is not my favorite language, maybe I just have a bias about how Java works, the virtual machine and the Oracle moves to make this language one of the most used for on the traditional corporative world.
For that reason, I spend most of my free time learning or improving my knowledge around languages like Ruby, Elixir and Go. And right now I can say that my favorite is Elixir and I have are some reasons for that:
- The syntax is very similar to Ruby.
- Paradigm change (Functional).
- Distributed concurrency out of the box.
- Pattern matching.
The paradigm change is very interesting, you can feel like you gain new powers when you understand the pure functions and the inmutability, after many years learning (or trying to learn) the OOP Paradigm, the design patters and all the OOP related things, you can feel a relief and liberty using a new paradigm (when I say new, I mean new for me).
Right now I can say that I have the required skills to work on production scale process for applications on Java, Ruby or Elixir including test-driven development, the deployment process, continuous integration and continuous delivery, incluiding some frontend skills.
I take the #100DaysOfCode Challenge to get deeply on my knowledge around Evolutive Architectures, Design Patters, Domain Driven Development and to have more maestry on Elixir.
About the plan, I will start with the OTP, Dynamic Supervisors and distributed concurrency with the most real-world implementations availables for my mind. Also I have some books to read related with the Domain-driven development, so I will be jumping across the books and the Elixir implementations. Also my brother wants to learn Python, so I will start to have some mentoring sessions with him on Saturnday.