Tuesday, January 23, 2018

It's not you, it was me – Low-code

If your development is skeptical about Low-code, keep reading. I've been there, I understand them.

I was skeptical too. Yes, it's the truth. I was in my mid 20's and I didn't like Low-code. Everytime someone tried to convince me (sorry Hugo Almeida) that Low-code was the way to go I would reply with all reasons to prove Low-code platforms were not exciting enough. Today, I can't live without a Low-code platform. I can't imagine a world where you have to build an application from scratch writing all the code. If I could recover all the hours and hours of life I spent writing Database Access Layers and WCF integrations and zipping packages to deploy to production and... argh!

But this is today. Now I'm older (wiser?). I have over 10 years experience. I don't see things the same way. Today, I can look back and understand why I didn't like Low-code and why I was fooling myself into thinking I was right. But I was so wrong. So, below are my thoughts back then and my own reply today. It's César-Mid-Twenties in an epic battle against César-From-Today.

1. "I like code."
I still love to write code today. I'm that guy that can get all excited developing a personal project. Back then, I would stay up all night just because I had an idea and, well, it was fun to be all alone in front of Visual Studio developing my own stuff. I have so many episodes of this, but I have two favourites: I love cars and I had a VW which can be programmed in all possible ways you can think of (for those that know VAG cars, it wasn't just using VAGCom). Well, I spent an entire weekend closed in my father's garage playing around with the car . Yes, nights too. My father would open the garage in the morning and I was there, without any sleep. Hours and hours. Lucky me, Portugal is not that cold at night in Spring.

Car VW VagCom

Left of the image, my car's first dashbord. On the right, the garage and the car.

The other episode was on Christmas eve. Well, my bank in Portugal required coordinates from a matrix card to validate every online transfer. Argh, I got so upset I told my parents I was sick and stayed alone at home understanding how could I develop an OCR (free versions were bad apart from tesseract), how and if I could mess up the browser's memory to inject values and so on (no browser extensions back then or any smooth options). It was so simple (never actually finished, today would be much easier, but the idea is there - MVP):

So, you get the point: I like to mess around with things. All this was fun. However, Low-code is also fun. And today, I have a different mindset. I want my ideas to come to life more than ever! My brain is tattooed with "Technology is just a means to an end". Low-code is the best balance between fun and results. And that feeling when you see your apps being used by others... priceless!

2. "I don't like Low-code."
It's different from the above statement. One thing is to like code, the other is to not like Low-code. This was mainly because i didn't fully understand what Low-code meant and I was resisting. Like any new technology, you won't like it at the beginning. It's like beer or red wine: did you enjoyed red wine the first time you tasted it? Well, I was all about white wine when I was young. Now I love red wine. I learned to appreciate the good things in life (sorry white wine drinkers, I still drink white wine but... there's a new trend in my town). Give it a shot, you'll love it too (not the wine, the Low-code).

Red wine

Got to love red wine.

3. "The entire team is used to other technologies."
Yep, it's disruptive. Like in the previous myth, you won't get the buy-in from everyone in a heartbeat. And you can't force Low-code down to everyone's throat. It doesn't work when it's imposed, we are humans and we must understand why we're doing things (Ellen Langer's experiement). And it takes time for teams to get productive with Low-code. Different tools, different way of thinking, different working methodologies. Nevertheless, it will take much less time to get to full speed than other technologies or crazy languages, say, I don't know, Objective-C... The learning curve is much faster than tradicional development.

4. "I don't want to learn this new tech as it might not add value to me"
There are literally thousands of programming languages out there (Subset is listed in Wikipedia). Some are more used than others, some are more specific than others, some seem to be in high demand others don't. The point is: it's not about the language. A good place to work will want to know if you can think rather than how many languages you know. It's about how you structure ideas, creativity, innovation, engineering. A person can speak English, Spanish, Portuguese, French and German and still not be able to articulate thoughts in either one.

5. "I have less control."
Remember that movie with Tom Cruise, Days of Thunder? Nicole Kidman said that "control is an illusion". This somehow applies here too. Are you concerned about machine code running in your CPU? How Windows uses paging? How the .NET framework abstracts you from dealing with memory management? So, why should you be concerned about how a Low-code platform abstracts an if statement to a visual element? But I was skeptical too. After all, César-mid-twenties was a super engineer able to write awesome code (yep, I was). How I got this myth out of the way? One day I was using an OutSystems action called TextToDecimal. As the name suggests, it basically converts a string to a decimal number. However, in some countries the decimal separator is a comma and in others it's a dot. And this depends on the culture info you have on your machine. If OutSystems engineers didn't implement the action using the right underlying method, making the conversion CultureInvariant, it could be a mess. Worse than that, a mess only when the code reached production! You can read the full story here, it's worth it. That day I was sold: I won't care about the underlying quality. These guys have this covered. Proper implementation, properly tested through years. Really read it, it's simple and cool: A good example.

6. "Development is not faster."
Metrics. Give me numbers César-mid-twenties. The truth is that for the same project, two proficient teams, the Low-code choice will be faster. Of course, it depends on the project. I can't imagine that VW messed up with a Low-code platform... hum, wait, idea. No, seriously, there are lots of projects that might benefit from not using Low-code for all sorts of reasons, let's be honest (e.g.: airbag systems, airplane sensors, etc). Even more "non-critical" projects, like high graphical mobile games. But it's "some projects"... a mobile app is not the case. Developing Android and iOS versus a Low-code mobile app? Objective-C? When I saw that "alloc" word, in 2017...

Red wine

Copyright(C) Dilbert

7. "These Low-code platforms have limited use cases."
They always have "the way out", the "dark bag", the escape: Extensibility. Of course the platform narrows the use cases, it's the 80/20, otherwise it would be almost impossible to have anything usable in an IDE. But if the platform is good, it will have a way for the user to extend functionality: some JSON, a .NET extension, writing a cordova plugin yourself, whatever, it should have a way to do it. Just dig in like you would have to do if you weren't using Low-code. Just remember it's for edge cases or you'll end up not taking advantage of the platform and doing everything aside. And also keep in mind that Low-code is not No-code.

That's it. I've now killed my twenties self.

Summing up all this: as time goes by you quickly get to a point in your life, as a tech person, where you need a balance between fun and speed. Your focus will shift to "Technology is just a means to an end" and you'll take it seriously. You'll realize life is too short to iron clothes, insert numbers from a matrix card to validate a transfer, dry dishes or code a full app from scratch. I know can't afford spending a full weekend in a garage writing code.

Life's too short to write too much code. Low-code.

Red wine


Yep. All big car maintenance would end with a great picture. I loved that car, what a toy...