Sunday, March 16, 2014

9 reasons to use Genexus for cross-platform development

I recently came across an article talking about the best 5 reasons to use some particular product for cross-platform development, but when I read the article all I saw was smart devices development. I know we’re using the word platform for many things nowadays, but if you ask me, smart device technology is just one platform. Desktop apps and web apps are two more platforms that need to be added to the mix.

So, I thought I would write a post, from my own point of view and list the reasons why anyone considering writing cross-platform apps, should take a look at Genexus.

Disclaimer: I currently work for Genexus, but prior to joining them, I used their toolset in my previous job. And even though it will be difficult for me to be objective, I’ll try to stick to facts and leave my subjective opinions aside. These are my own thoughts.

If you’re not familiar with Genexus, let me give you a little background. Genexus is a 4GL development tool which represents your entities (or classes) in a a structure called Transaction. You define your structures (Transactions) and do not have to worry about the physical representation of the data, because Genexus is smart enough to create a 3NF normalization of your data in the database engine of your choice.

With that knowledge, Genexus will create the necessary programs to access the data, but you always have complete control of the program. You can define rules and access control. It’s everything you’re used to, but easier.

With that introduction, here’s my list of reasons why Genexus is THE TOOL to start paying attention to.

1. One Language to rule them all

If you’re a Genexus developer you can skip this one. If not, I know what you’re probably thinking: “do I have to learn another programming language?”. I’ll be honest with you.. yes, you do! But there are two primary benefits of learning the Genexus programming language.

  1. If you know English, you’re 50% closer. The Genexus language is really simple. Of course you have control flow statements, variable assignations, and basic native functions to perform every task you do, as with every other programming language.
  2. The Genexus programming language has been around for more than 25 years. It has evolved and improved over time. Can you imagine yourself using one single programming language for more than 25 years? Can you imagine your level of expertise in that language? You don’t have to move on, Genexus does it for you.

2. Real cross-platform

As I mentioned earlier, Genexus has been around for over 25 years. We didn’t generate native iOS apps back in 1989, we had COBOL and XBase. Then RPG came along. Then there was FoxPro for Windows, Visual Basic and Visual FoxPro, then Java, C# and Ruby for the web, plus HTML and Javascript, and recently Objective-C, Java (for Android and BlackBerry) and Javascript for WinJS and the new Microsoft stack.

So, we know what cross-platform is all about.

3. Native apps

We always thought of Genexus as a platform agnostic tool, so no matter what your target is, your same Genexus programs will execute in every platform. But that does not mean “platform ignorant”. We know where you what to run your programs. And we know what the best practices, or ways to execute programs, depends on the specific target platform. For that reason, we generate native target platform code. Take our Android-generated apps, for instance: you could open the generated sources with Eclipse, or use XCode for our Objective-C iOS generated code.

Let me be clear. You don’t have to -- there’s actually no need to do that -- I’m just saying you could if you wanted to.

4. Faster development

Well, of course is faster. But I’m not going to give you some marketing/sales pitch – but I can share my personal experience with you. I created Find My Plane for Android, iOS (iPhone) and Windows 8 (Modern UI) in a month using Genexus Smart Device toolset.

Do you think you can do better than that? Let me remind you that every app has specific layouts for its platform. I did reuse some of them, but most of them are exclusive for its target platform.

5. Practically no bugs

Of course we have bugs. But when you generate your code, most of the time you will generate the bug over and over again, so it’s easier to find. You could write an event and, if there’s a bug, it will depend on our event-firing mechanism or on our generated version of your code. What I’m saying is, our event-firing mechanism is the same for every event no matter what the developer wrote, so it’s really well tested (and used).

6. Model based

Since I started talking about architecture, let me tell you that Genexus is model based, which is a great feature.I won’t take up space to here to explain why that’s a great thing. Gaston created a list 8 reasons supporting the superiority of model driven development and you can find it here: 8 reasons why Model Driven Development is great.

7. Real world scenarios

We have all seen a cool demo about a new development tool, language, or technology where, with just a few key strokes you get a “Hello World!” kind of example up & running. Genexus is more robust than that. Of course, I could show you the “Hello World!” text on an iPhone in less than 5 minutes, but that’s not what Genexus is all about. Genexus is about real world stuff… from a little flight tracker app, to a huge world class ERP, and believe me, there are tons of great examples in between.  

8. Future Proof

There’s no much to say here. We told our RPG/Cobol users we were future proof; we also told that to our VB/Visual FoxPro users -- so now we are telling you we are future proof. But what does that mean? It means that no matter what the big players are going and no matter they are doing, we will take you there. And what if new players show up? We will be there too. In fact, right now we are working on our Windows Phone generator, and adding iBeacon support to our apps.

9. Free DB reorganizations

This item should get a whole post by itself. If you know Entity Framework, think of Genexus as Entity Framework on steroids. What happens when you need to move an attribute from a table to another or remove a whole table because you managed to merge its data into other tables? Genexus takes care of that. I know it sounds like black magic, but don’t just take my word for it -- give it a try yourself.

I didn’t want to write a marketing post, but I know I failed. The thing is I do believe Genexus is a great tool for agile software development. I know what some people is thinking because I’ve been there too: “I like to program my own code”, “I don’t want a generator” (and yet you use a compiler). I thought the same way. It’s a whole new world, and a whole new way of approaching a software development problem. It requires you to get out of your comfort zone, learn something new. But I guaranteed, you will never look back once you create your first app in half the time you would have using traditional tools.


Anonymous said...

Escribiría 9 razones por las cuales NO hay que usar genexus, pero me vas a censurar :)

Anonymous said...

After using Genexus for some work I have to simply state that you must be a paid shill (which you actually are since you actually work for Genexus). I will use my time now to provide users with a counter to your post, coming from someone who is NOT in any way affiliated with Genexus.

1. One Language to rule them all
Ah, no wonder it is highly inefficient. I made an application on Genexus, a pretty simple one, nothing that should work the devices too much.
- Android & Iphone took a total of 2 weeks to finish while Genexus took 2/3 days.
- Android & Iphone took each about 5 minutes to compile. Genexus took about 1.5 hours to finish compiling.
- Android & Iphone was really fluid and quick. The Genexus version of the software had problems running and when it finally did it was slow.

2. Real cross-platform
Check the above argument.
When making a website on Genexus I noticed that the it makes it so the website loads everything from javascript. I normally block javascript for security reasons and because I believe that good websites shouldn't rely on "shiny shiny" to get views so I could not see my website. I couldn't even see the main Genexus website.

3. Native apps
See point #1. I don't consider something to be "native" when it works as bad as that.

4. Faster development
It is faster, this is true... except when you have compiler bugs that shouldn't actually be there and in such case the only solution is to keep compiling until it works (I couldn't believe my eyes when I found out that it was actually THE solution!).

5. Practically no bugs
Thanks for the laugh buddy ^^
Nice job ignoring all the compiler bugs, database bugs and I could not, for the life of me, get android working in the first few weeks.

6. Model based
I will be commenting on your link soon enough, don't you worry about that ^^

7. Real world scenarios
So, basically, what you're telling me right now is that C, C++, Java, Rust... aren't real world scenarios? They're paying you pretty well apparently. Your #7 argument poses no actual argument, you say nothing, all you do is insult the other languages and the people you use them. I could do the exact same with Genexus but instead I have chosen to give full, unbiased and unpaid arguments so that people can think about what's actually better for them.

8. Future Proof
"There’s no much to say here."... You're right, there isn't much to say here. It's better to have 8 good arguments than to have 9 arguments with a few rushed ones.

9. Free DB reorganizations
"This item should get a whole post by itself." Yes! You're right, this item should get a whole post by itself... but not for the reasons you think... you have no idea how many bugs this system has, my colleagues and I had to restart several projects several times because your system did not allow us to organize the database ourselves (I mean, it did but only to a certain extent since at a certain point Genexus would start ignoring our input and just change everything back to how it was).

Readers, please be aware, I am not unbiased, my post is not 100% objective, I had a terrible experience with Genexus, it wasted my time and created half dead clones of what I actually intended to make. After all my years in software engineering I have never seen something as broken as this... but hey, if you want to try it out, you're always welcome to do so.

sebastian gomez said...

Hello my anonymous friend. Let me tell you I really doubted about publishing your comment, at first it looked like a comment from troll who wants attention, why can I know who you are?, you know who I am :)

But then I thought you're maybe frustrated, you obviously had a very bad experience and I respect you coming out to tell about those problems even though you do it anonymously.

As mentioned above, these are my own thoughts, they don't pay me to write this kind of articles, as you may have noticed from previous posts.

I won't be commenting on your comment cause it would have us going back and forth for years. I would really like to get an email from you if you'd like to discuss whatever you want about that post. You can reach out at sgomez at genexus.

harini said...

I like your collection, thanks for sharing this wonderful collection of themes with us.i am working in Erp Software Development Company In India