← Back

2006-2016: A Retrospective

A look back at ten years of professional change: demanding projects, technologies, entrepreneurship, leadership, writing, and personal lessons in the software industry.

Reflections
Haruki Murakami - Hard-Boiled Wonderland and the End of the World

Phew… At the beginning of the year, almost everyone makes a list of resolutions and goals for the next twelve months. To some extent, I do that too, but above all, I like to look back and become more aware of where I came from (so I can better understand where I’m going).

And I can certainly say that I haven’t had a routine job since I graduated, nor have I stayed in the same kind of role. Could things have been different? I have no idea; probably, since I’ve been responsible for my own actions and decisions. Who else?

Looking back, I hope the next ten years will be just as intense and productive.

I like Haruki Murakami, and he’s been with me ever since one of his books happened to fall into my hands sometime in the nineties.

By way of a summary…

I completed my degree in Computer Engineering around 2001, after submitting a final-year project that took me almost a year. It was an application built with Visual C++ and MFC/ATL libraries to create user interfaces for a SCADA product we were developing at the company I worked for at the time. I was then part of what was called the Software Development Group (not exactly an original name).

Visual C++

One result of that project (which I think is still in production at some railway operations center) was an article I published on CodeProject, titled Improving ATL-ActiveX Serialization, along with a great deal of profiling and optimized coding. Now that I think about it, that article was the first thing I ever thought to publish! By the way, I see I need to update the information I used to register with CodeProject, a site that’s still a reference for me today.

The most interesting thing about that work was integrating VBA (Visual Basic for Applications) into the application—a real novelty at the time and a significant technical challenge.

Having been used to C++, nearly everyone in the department was excited from the start about the new .NET Framework and C# environment. I still have a book I was given at an event about that new technology, which I think was one of the first books published about it.

I’ve always been closely associated with Microsoft technologies, and I’ve also always found the comparisons and silly either-or dilemmas so common in our industry childish and unprofessional. Every technology has its strengths and weaknesses. Period.

However, for several years now I’ve worked closely with Azure, Microsoft’s fast-growing cloud computing platform, and have followed the company’s moves toward a more open vision of software. .NET Core and the release of some traditional Microsoft products for Linux (including SQL Server, no less) are further evidence of that broader outlook. And I’m not mentioning Azure just for the sake of it: I have clients running on that platform with outstanding success.

By 2006, I was already working in Sweden on a project worth many millions of euros—or rather, the project was worth one hundred million euros, and although the software portion was relatively small, it was critical. Without that pillar, the entire project would collapse, and the financial penalties imposed by the client could threaten the project’s very viability. There was a lot of pressure: we had to work fast and meet milestones by the skin of our teeth, on top of the pressure that comes with moving with your family to a country very different from Spain.

But I learned a tremendous amount. Despite the crises my colleagues and I went through, it was one of the most formative periods of my career. I remember staying up all night to carry out an update to one of the systems the project depended on.

There was no methodology; we just pushed forward however we could. Interestingly, none of my colleagues from that project for the Swedish utility company Vattenfall still work at the same company—not even me. One by one, we moved on, finding (or seeking) better career and professional opportunities.

That project made the extraordinary importance of maintaining at least a basic methodology and order in development very clear to me (there was no order down below because the executive level neither had nor encouraged it). It also showed me how important a clean, efficient database design is, since the application was highly data-centric. The database grew by millions of records every day, so we were constantly running into new bottlenecks, both in software and hardware. It was quite a challenge, and we eventually stabilized it (which took us over a year).

After that I returned to Spain and became interested in agile methods and clean code. It was a period of frenzied reading: I devoured all the related literature I found interesting (books by Martin Fowler, Robert C. Martin, and others, of course), gradually confirming some of my intuitions about the foundations of good software.

As a natural consequence, I soon began to realize that not everyone had the same understanding of good software, and that very little attention was paid to issues as important as team organization, group dynamics, and the idea of a manager as someone who facilitates other people’s work—all of which ultimately determine whether a product is good or terrible.

I kept writing software one way or another, sometimes in good conditions and more often in very poor ones (too many imposed meetings, tasks that hadn’t been planned but were due today, and so on).

Between 2008 and 2009, I made my first attempt at entrepreneurship. It was a complete failure, but it allowed me to dive headfirst into Drupal. The idea was good, but as the saying goes, execution is everything. Around that time, I started reading a lot about entrepreneurship and intrapreneurship. I always say I left that company, where I had a permanent contract and a good salary, because I’d spent years mentally preparing to try other things. We focus too much on action and forget a fundamental truth: real change comes not from doing but from being (from who we are). Anyway, I’m getting carried away with personal-development topics…

Between small R&D projects and maintaining the system we had built in Sweden, I had time to explore technologies outside the Microsoft ecosystem. I started building my first web projects and reading everything I could about Drupal. And, of course, I embraced Node.js from the very beginning. Among other things.

I was so enthusiastic about Drupal that I ended up speaking at two sessions (this one and this other one) at the 2011 Drupalcamp in my city. I discovered that ecosystem and a very engaged, stimulating community.

Drupal

I started managing teams around 2009. I had no idea what I was doing, so I read a lot about it and tried to do the best job I could.

The company I worked for at the time, the engineering firm Telvent Energía, now owned by Schneider Electric, wasn’t one of those body shops, but naturally there was a lot of pressure to deliver projects. As with everything, there were good times and bad, but everything I remember from that period (I worked there from 2000 to 2012) is good, even exceptional. I don’t think everyone is lucky enough to join a company and have the national and international experiences I had at Telvent, attending important events and so on. I traveled to the U.S. several times (I spent a week attending Microsoft’s TAP program in Seattle—an amazing experience, seeing, listening to, and talking with genuine gurus), as well as traveling to various cities in Sweden, the Netherlands, Slovenia, and even spending a week in Beirut.

But that chapter was coming to an end, and I began to take an interest in other things and other career possibilities. Let’s say I could no longer picture myself working for the same company in the distant future.

By then, concepts such as IaaS, PaaS, and SaaS were also being discussed, tentatively but with growing frequency, along with the cloud world that was on its way and is now a reality—and the foundation of my current professional activity in a completely different work environment.

With the growing popularity of CMS platforms such as WordPress and Drupal, people often talked about killing the webmaster, and companies were looking to stop depending on a webmaster dedicated full-time to that work. Some alarmists also applied the same idea to IT managers as the cloud gained momentum. I can see that the industry is moving in that direction, simply because the numbers work for most projects, if not all. In case you hadn’t noticed, our profession is highly volatile, and unless you maintain software running on some prehistoric AS/400 for a bank, everything else keeps changing.

SOLID Stack

I’ve held a management role since my time at Telvent. In 2012, I set up an office and a development team for another national company, Telecontrol STM, to focus entirely on creating products for the electricity market. That was five years ago, and although we’ve had our highs and not-so-high moments, as everyone does, we start this year in a very different position: more established and about to start working under a different brand, SOLID Stack—or, how should I put it, a more software-oriented name.

For some reason, I’ve found myself working on relatively large software projects that have to manage large volumes of information (first Titanium and now the IRIS Remote Management Platform), as well as taking part in an R&D project involving Hadoop.

Working with Node.js got me interested in another way of building projects using npm and designing microservices. That led to this fun project, which I haven’t been able to continue for now: Green Kiwi Games, written entirely with Node.js and Angular. Registering the brand was an experience in itself, too. Event-driven programming… fantastic.

Managing, becoming more involved with the company’s executive and business-development sides, and working more closely with clients all have one downside: they take you further away from the technical work. But they also show you that business development has its own language, different from the one developers use in their day-to-day work when they’re fully focused on development. You also realize how important it is to lead and retain competent people, while identifying toxic individuals who need to be removed as soon as possible to prevent worse problems. Yes, sometimes I’ve had to fire people, and it’s a difficult experience to go through (one that literally keeps you awake when you have to make those kinds of decisions).

And, of course, I’ve made many, many mistakes. But as my great friend Raimón Samsó says, “we need to double our failure rate” because we learn more from failure than from success. The subtle point is that success comes after several failures, so I’m proud of both.

After a great deal of reflection on why so many software projects go off the rails, I published The Programmer’s Black Book, which opened the door to independent publishing and everything that comes with it. If you want to explore a subject deeply, try writing a book about it; there’s no better teacher, believe me.

For me, that book was another project (and I’m currently revising it for a second edition), and I’ve received quite a few reviews on Amazon (both on the Spanish .es and American .com stores). I’ve also learned—one has little choice—to put criticism in perspective. Most comments are very positive, but in my opinion, a few are excessively harsh. Come on, you spent €2.99 (the price of two and a half coffees); surely you learned something, right? Fortunately, those reviews are isolated. But if you have the courage to publish your opinions, you also need to develop a thick skin and put criticism in perspective. Again, we should see every criticism as an opportunity to improve.

Writing a book is, in a way, talking a lot about yourself, and that takes courage.

I’ve also had—and still have—my share of personal and professional successes, including publishing my first novel, Patricia. Our projects are consolidating and growing, and soon, in 2017, we’ll be doing so under a brand name we really like.

I like software. I like creating things that solve a client’s problem (and getting paid for it, of course). And above all, I like passive income (but that’s another story).

During this time, I’ve also heard about some of my university classmates who simply left the profession and now do completely different things. I’m not surprised. I still think software developers, at least in my country, aren’t valued enough. On top of that, the profession sees a tremendous influx of people from other fields—not that they shouldn’t earn a living, of course, but this doesn’t happen in other sectors. What I mean is that this profession takes a lot of passion and patience to thrive and stay in it for years.

You don’t wear one mask at work and another in your personal life. I’ve also grown a lot personally over these years through yoga and meditation, which naturally influences the way I approach everything.

I’ve also learned that the best professionals I’ve met (some still work at Microsoft) have something in common that often goes unnoticed: they’re extraordinarily humble. A statement of principles in itself.

What comes next?

Keep enjoying a thriving industry that genuinely contributes value to the economy and can change the world (that’s what I believe), celebrating the successes and processing as best we can whatever doesn’t work so well.

For me, this is the year I’m going to dive into Docker, blockchain through Ethereum, Xamarin, microservices-based software, and everything related to cloud services. And, of course, SOLID Stack.