OutSystemsDev Zone

From Hardcore Coding to Dragging Circles – A Scary but Fruitful Journey

As a software developer, you’re probably the kind of person that loves a mental challenge. You live for the feeling of coming up with that elegant algorithm, describing it to someone, and then smiling as they go silent for a while and then say admiringly “wow yeah, that can work.” You probably also enjoy that exhilarating feeling you get after a painstaking two-hour debug session, where you patiently gathered piece after piece of obscure information, looking for patterns, and finally everything clicks. Or even better, the feeling of power you get when you fix the issue with one line of code – the right line of code. It’s awesome!

My hardcore coding life

Having spent most my R&D 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 toyed a bit with managed C++ code in .NET to see if I could still get the same low-level in-control sort of feeling, but it just wasn’t the same. I felt like “anyone could do this” and it wasn’t special anymore. You probably just smiled a bit because you have shared this same thought one or more times. Maybe you still do!

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 and maintain 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 I would be 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, looking back, is the change in focus. Nowadays, most of my time I’m thinking at the business level, I’m not slowed down by technical implementation 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.

I realized that my value is greater by being able to translate business requirements into working software at a pace that makes sense to business (i.e. super fast) than by simply being the guy that’s “really good at C++.”

If I can try a metaphor here, I found it’s more valuable to be the guy that knows where the nails should go than the one who’s really good at hammering them in. The day someone invents a nail gun the hammer guy is ‘screwed’, the other guy isn’t.

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.

I find myself saying “yes, of course we can do it” almost all the time, whereas before I mostly said “yes, we can do it, BUT…” and the but was anything from we need extra time to develop an integration API, setup additional working environments, learn new languages, etc.

While all these things get me some “street cred” as a coder and beef up my resume with more tool knowledge, I would find myself less attractive to an employer if they can hire someone to do the same things I do but in one fifth of the time.

My guess is I would eventually become niche, still providing some value but to a decreasing number of people.

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. I mean, 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. All the differentiators and challenges are still there.

Just because everyone can write a C++ class doesn’t mean that everyone does it well, and I believe 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.

Try OutSystems Platform for yourself with a free personal environment.

About the author

Daniel Luz

With a passion for C and C++ coding, Daniel has been involved in many projects ranging from call centers to high-end console gaming. He's a coder, architect, API builder, and pixel pusher, as well as an avid gamer and ex-musician. Since joining the OutSystems world, he is also a business thinker and value provider.

Comments

Pedro Domingues

Amazing!! Excellent article Daniel. Congratulations

Daniel Luz

Thank you Pedro. I’m glad to know you liked it!

José Gomes

Nice article Daniel! I felt exactly the same when I move from my “C# world” to this “OS world”.

Basically it’s a mindset change. Instead of being good programming with a fancy language, nowadays we have to be good for what matters to the client: his business.

Daniel Luz

Thanks for your feedback José.

Yes, I think that’s exactly it.
Results is what matters to business, and being really great at using a tool isn’t a guarantee that we’ll deliver those results.

First and foremost we need to understand how we can provide value, help business achieve their goals. Then, we need to use the best tool for the job, without bias.

I think when we can do that, we’re really doing our jobs as engineers.

Thanks again, and good engineering!

Hugo Vilardouro

Very nicely put.
Excellent reading!

Daniel Luz

Thank you very much Hugo. Glad you liked it!

Robert Chanphakeo

Daniel, excellent article!

I came from similar background, I coded in C for embedded systems, and the Motorola micro controller only had 128k of memory.

I always had to remove spaces in my code because it took up too much memory, and wasn’t able to flash on the microcontroller! if my code was not performing efficiently enough, I would optimise my code in assembly code! yes Assembly language (even the compiler wasn’t doing a good enough job!).

When c# and Java came out, I didn’t like the fact that my code was translated into byte code, then interpreted into native code, I don’t like CLR or JVM. it’s slow.. yep definitely it was noticeably slower.
(it didn’t help that prior to Java 1.2, Java had huge performance issues)
Over time the language became more efficient, CPU is now 1000+ times faster than 20 years ago, so no more issues! glad I made the leap forward, but I must say I am still in love with C! it just can’t do everything I want it to do, I still use it for embedded systems 🙂

I love outsystems for many reasons but I wish it was more developer friendly, I still wish for a raw html code editor that converts my raw html code to outsystems widgets! I also wish for outsystems service studio plugins! (and many other features to help develop my app more efficiently in outsystems)

Daniel Luz

Hi Robert!

Indeed, it seems like you and I come from pretty much the same place so I’m really glad to learn you also found the journey worthwhile.

The ideas you mentioned are excellent. As an experienced developer you will have worked with extendible IDEs and I can definitely understand why you would miss having the power to customize and extend Service Studio.
I also hope those kinds of features will make it to the top of the backlog someday.

Thanks again for your feedback, and I hope your engineering life with the OS platform remains long and fruitful.

Leave Your Comment