
Welcome (Again)
Plans for 2016
I wrote the last post on my blog (the Spanish version). It’s been a long time. I think it’s been more than two years, and in two years, a lot has happened.
I decided it’s time to start writing again. I love writing, and it’s something that comes easily to me. So, what has changed in the last few years? What are my plans for the future?
There is nothing more constant than change
I believe it’s important to keep our skills sharp. Several years ago, when I started programming with Java, I was amazed by the things I could achieve with just a computer, some logic, and 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 learning Java on my own (I didn’t like the related classes I received in my first years at university). I soon realized the complexity that real-world applications can have, and above all, I realized that one of the main challenges in development is handling constant changes while maintaining team productivity, and the maintainability, extensibility, and performance of your code.
I started looking for new approaches to software development and researching how large 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 started learning 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 went even further and introduced me to Ruby on Rails and some good practices that accompany that amazing web framework. I started learning Rails. I was so motivated that I created a small application every weekend for a couple of months.
I started using 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 wish someone had told me about Ruby/Rails many years earlier. I love the entire ecosystem around it. I can focus on business problems instead of dealing with excessive configurations, verbosity, lack of conventions, some bad practices, etc.
As time has changed, my journey in software development has faced 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 today.
So, having reached this point, in the coming 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 coming years, there will always be great challenges out there. Progress in this area moves at lightning speed, so to speak. Maybe right now, somewhere, someone 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 coming years. The things I really want to learn and use, all aligned with my personal goals for the coming years. I’m working on that, but I want to share a small summary of a plan that I’ll be publishing here for the next year.
2016
-
Web Applications: Real-time everywhere
Real-time has ceased to be the elegant feature of interactive dashboards and has become a new requirement for web and mobile applications.
To focus on: Elixir/Phoenix, Rails/ActionCable
-
FrontEnd: Virtual DOM and Components are eating the world
Large companies have started writing reusable front-end components. And since the release of ReactJs, many other JS frameworks like Ember.js have started implementing their own version of Virtual DOM, an abstraction of the DOM that brings great performance and a simpler programming model to the table of JS frameworks.
To focus on: ReactJs
-
Mobile: Look mom, it’s native and uses JS! -Wooot!
React Native was a game changer. Before its release, you couldn’t achieve 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 application. You have to choose between a good user experience or better productivity using HTML5 (and including your entire team that, in the worst case, knows basic HTML).
To focus on: React Native, ReactJs.
-
Backend: Scalability first and no downtime.
Scalability is in demand. We have clients in browsers, but we also have to handle mobile devices, hybrid desktop applications, the internet of things, etc. So, the traditional way of building applications is over; we need to consider applications with scalability and reliability in mind.
To focus on: Elixir
-
SysAdmin: Containers, the new way of doing SysAdmin
To focus on: Docker / CoreOS
-
DataScience: Data ate the world
To focus on: R and Spark.
Share this post:

About Gerardo Ortega
Software craftsman with a focus on scaling, polyglot programmer, coffee enthusiast, and lifelong learner. Passionate about machine learning, data science, and building great products.