I wrote the last post on my blog (the Spanish version). It has been a long time. I think over two years have passed, and in two years, many things have happened.

I decided it’s time to start writing again. I love writing, and it is something that comes easily to me. So, what has changed in the last years? What are my plans for the future?

There is nothing more constant than change

I think it’s important to keep our skills sharp. Several years ago, when I started programming with Java, I was amazed at the things I could achieve with just a computer, some logic, and the knowledge of a programming language. At that time, I didn’t consider some aspects of the software development process, like maintainability or scalability. I just wanted to create things. I just needed the tools to bring my ideas to life. I started to learn Java independently (I wouldn’t say I liked the related classes I received in the first years in college). Soon I realized the complexity that real-world applications can have, and above all, I realized that one of the main challenges in development is to handle constant changes while maintaining the productivity of the team - and the maintainability, extensibility, and performance of your code.

I started to look for new approaches to software development and investigate how big companies handle constant change and maintain the agility of their teams. That search led me to Agile Development practices and versatile programming languages like Python.

I began to learn Python, and at that time, I shared my new findings with a good friend, only to realize that he was on the same path. But he took it even further and introduced me to Ruby on Rails and some good practices that accompany that amazing web framework. I began to learn Rails. I was so motivated that I created a small application every weekend for a couple of months.

I started to use Ruby and Ruby on Rails for more serious projects, and I’m still using them, but now professionally. This year (2015), I started my first job using Ruby. I would have liked someone to have told me about Ruby/Rails many years before. I love the entire ecosystem around them. I can focus on the business problems instead of dealing with excessive configurations, verbosity, lack of conventions, some bad practices, etc.

As time has changed, my journey into software development has met different challenges. Ruby and many other languages have limits when solving concurrency, real-time, fault tolerance, productivity, performance, big data, etc. The problem has been that many technologies offer good solutions to some challenges but lack the features to face others. We need to explore new alternatives to some technologies we’re using nowadays.

So, as we get to this point, in the next years, I want to focus on learning and applying new technologies that help me face and solve some problems of the “new web.” This blog will be part of that journey. But no matter how much I can learn in the next years, there will always be great challenges out there. Progress in this area moves at lightning speed, so to speak. Maybe at this moment, somewhere, somebody is working on ‘The Next Big Thing.’

The more I learn, the more I realize how much I don’t know.

Therefore, I need to think carefully about what to focus on for the next years. The things I really want to learn and use, all aligned with my personal goals for the next years. I’m working on that, but I want to share a little summary of a plan that I will be publishing here for the next year.

2016

  • Web applications: Real-time everywhere

    Real-time has stopped being the fancy feature of interactive dashboards and has become a new web and mobile applications requirement.

    To focus: Elixir/Phoenix, Rails/ActionCable

  • FrontEnd: Virtual DOM and Components are eating the world

    Big companies have started to write reusable front-end components. And since the release of ReactJs, many other JS frameworks like Ember.js have started to implement their own version of Virtual DOM, a DOM abstraction that brings great performance and a simpler programming model to the table of JS frameworks.

    To focus: ReactJs

  • Mobile: Look, mom, it is native and uses JS! -Wooot!

    React Native was a game-changer. Before it was launched, you couldn’t achieve a native-like behavior using JS/HTML frameworks. But, with React Native, you need to learn React and some native components to start developing your next mobile app. You have to choose between a good user experience or better productivity using HTML5 (and including all your team that, in the worst case, knows basic HTML).

    To focus: React Native, ReactJs.

  • Backend: Scalability first and no downtimes.

    Scalability is in demand. We have clients on browsers, but we also have to handle mobile devices, hybrid desktop apps, the internet of things, etc. So, the traditional way to build apps is over; we need to consider apps with scalability and reliability in mind.

    To focus: Elixir

  • SysAdmin: Containers, the new way of doing SysAdmin

    To focus: Docker / CoreOS

  • DataScience: Data ate the world

    To focus: R and Spark.