Well, It has been a long time since I wrote the last post in my blog (the spanish version). I think over two years have passed, and well, in two years many things happen.
I decided it’s time to start to write again. I love writing and is something that comes easily to me. So, What have 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, by that time, with Java, I was amazed for the things I could achieve with just a computer, some logic and the knowledge of a programming language. In that time I didn’t consider some aspects related to 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. So, I started to learn Java on my own (I hated the related classes I received the first years in college). And with the right attitude I succeed. In parallel I begin to work in a project as intern in college with some classmates. Soon I realize about the complexity that can have a real world application, and about all, I realize that one of the main challenges in development is to handle the constant changes while you keep 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 to investigate how many big companies like Google, handle the change and kept the agility of their teams while they preserved the quality of their code bases. That search leads me to agile development practices and versatiles programming languages like python.
I begin 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 road. But he took it even further, and introduce me Ruby on Rails, and some good practices that accompany that amazing web framework. And then I begin to learn Rails. I was so motivated that I created a little application all the weeks for a couple of months.
I commenced to use Ruby and Ruby on Rails for more serious projects, and I’m still using it. But we are in 2015, and as I said before, many things have changed. I would have liked someone talked me about Rails many years before. I love the entire ecosystem of ruby. I can focus in the solution of my problems instead of dealing with problems related to over configurations, verbosity, lack of conventions, bad practices, etc.
As time have changed, the world of development face different challenges, and I think we need to explore new alternatives to some technologies that we use nowadays. It’s not only ruby, but many other languages that have limits when it comes to solving challenges like concurrency, real time, fault tolerance, productivity, performance, big data, etc. The problem has been that many technologies offer a good solution to some challenges, but lack of the features to face other ones.
So, we get to the point, the next years I want to focus in learning and applying new technologies that help me to 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, It will not be enough. The progress in this area moves at light speed, so to speak. Maybe in this moment, somewhere, a new ones are inventing The Next Big Thing.
The more I learn, the more I realize how much I don’t know.
Therefore I need to think well what to focus 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 just want to share a little summary of a kind of plan for the next year, that I will be publishing here.
Web applications: Real time everywhere
Real time stop being the fancy feature of interactive dashboards to become a requirement of the new web and mobile applications.
To focus: Elixir/Phoenix, Rails/ActionCable
FrontEnd: Virtual DOM and Components are eating the world
Big companies has started to write a reusable front-end through components. And since the release of ReactJs many other Js frameworks like ember.js has started to implement their own version of Virtual DOM, a DOM abstraction that brings to the table of JS frameworks a great performance and a simpler programming model.
To focus: ReactJs
Mobile: Look mom, is native and use JS! -Wooot!
React Native was a game changer. Before it was launched you only could not achieve a native like behavior using Js/HTML frameworks over there. You have to choose between a good user experience or better productivity using HTML5 (and including all you team that in the worst case unless they know basic HTML). But, with React Native you just need to learn React and some native components to start doing your next mobile app.
To focus: React Native, ReactJs
Backend: Scalability first and no downtimes.
Scalability is on demand. Now we have no only clients on simple browsers, but we have to handle mobile devises, hybrid desktop apps, the internet of things, etc etc. So, the traditional way to build apps is over, we need to take to the table apps with scalability and reliability in mind.
To focus: Elixir
SysAdmin: Containers, the new way of sysadmin
To focus: Docker / CoreOS
DataScience: Data is eating the world
To focus: R and Spark.
Subscribe via RSS