My hardcore coding life

Having spent most my career working with low-level languages like C and C++, I was resistant to Java. What do you mean, garbage collection? No man, I manage my own memory. No hidden magic for me, I like to be in control!

I was also resistant to .NET for pretty much the same reasons. I felt like “anyone could do this” and it wasn’t special anymore.

At the time, I thought I would miss the technical challenge that comes with hardcore low-level coding. However, on later reflection I realized I was just worried that my hard-earned skills as a “real coder” were becoming less valuable. In fact, I feared that pretty soon everyone would be able to code and I’d become obsolete.

My life “dragging circles”

Before I started working with OutSystems Platform, I was still coding in C++ for a major video game company. When I was presented with the opportunity to work at OutSystems, I was exhilarated by the challenge of doing something completely different, but I was really worried about the technology. After all, my fears had come true. Here’s a technology that allows pretty much everyone to write solid applications much faster than I would ever be able to and without writing almost any code.

Not only did I feel obsolete but I also feared that being bored without the technological challenge of writing code, managing memory, interfacing closely with the machine – all those things that made me feel special, hardcore, an expert and a “real coder.”

Regardless, I embraced the challenge and three years down the road, oh man, I’m so glad I did it!

A fruitful journey delivering business value

The biggest change for me was the change in focus. Nowadays, most of my time I’m thinking at the business level, I’m not slowed down by technical details, and came to realize just how valuable that is for business. In fact, my fear of becoming obsolete was justified, but I had it all wrong. I would have become obsolete if I hadn’t made this switch, if I had stuck with some technology just because I was good at using it, or that it’s cool, or that it gives my brain the extra challenge.

And for the technical challenge, I haven’t lost it, it just changed. The challenge is no longer the technology, it’s on a higher level. Not focusing on the intricate details of an application has opened my mind to the possibilities of the higher levels.

Saying yes

I don’t mean to make this sound abstract, but the general feeling I get when developing on the Platform is that anything is possible. Integrations are suddenly easy – almost trivial – prototyping / scaffolding is insanely simple, and getting sample data in there is a breeze. All of these things that shouldn’t consume much development effort, actually don’t.

Of course I still miss coding from time to time, and I tend to jump at the opportunity to create extensions in Java or C#. It’s fun for me and I think it will always be, there’s no way around that. But I still find many of the same mental challenges I know and love while dragging circles in OutSystems Service Studio.

The good and the bad

I still can’t turn off my architectural mindset. The Platform makes it easier to do things, but it can’t do ALL the work for you. There’s still good coding and bad coding in the OutSystems world. There’s still good and bad architecture; there are still good and bad algorithms; there’s still fast code and slow code.

Just because everyone can write a C++ class doesn’t mean that everyone does it well, and the same applies to any programming technology. So don’t worry, you won’t be bored and you’ll be a more valuable resource to any company that actually cares about getting value for money.