Skip to main content


Recently, there has been a lot of buzz about "low code" development platforms.  Even the Oracle APEX team has embraced this term (see for details). This approach allows the "citizen developer" - someone without a traditional IT background - to build basic applications with little to no code. Platforms such as QuickBase, Appian, Mendix and even have popup up, offering the promise to quickly build applications with little to no code.  Users from all walks of life can now build and deploy applications to some sort of cloud in just minutes!

But is it possible to build a truly useful application with little to no code?  Perhaps.  Perhaps not.  I suppose that all depends on what you want the application to do and what data it will use.  It probably also depends on the security of the application, and how easy it will be to integrate into a corporate identity management system behind a firewall.  It also probably depends on what type of availability and reliability you need.  And it will definitely depend on how much any of these solutions cost, especially if your application gets popular and more users need to use it.  While some of these companies are solid and not going anywhere soon, a few of these names are new to me, and if they were to fold, it would not be the first time a startup failed.

While I have not tried any of the products that I mentioned, I do have a bit of experience with Oracle APEX, so I'll speak from that angle. APEX does fit into the "low code" profile, as you can easily build an application that manages data, provides visualizations, and even facilitates some basic workflows.  You can do all of this without writing any code, save for maybe a query or two.  There’s even an “App Store” of sorts - called Packaged Applications - that can get you create a fully functional point-solution application with a single click.  I’ve seen people from skilled developers with multiple IT-related degrees to vice presidents with limited IT experience build and deploy APEX applications.  The "citizen developer" term truly fits in here.

However, there is a limit as to what you can make any application do without writing code.  Over the years, APEX has done a great job of pushing this limit out further and further.  You can create a much better looking, more secure, more functional APEX application with APEX 5.1 in much less time than you could with versions as recent as APEX 4.0.  But even with the latest and greatest release, if you want to add some business rules or put basic conditions on a region, you’re likely going to have to use a little bit of code.

Think about this: if you had a couple of citizen developers build a basic project management tool in APEX, and then as it becomes more popular, more people in the organization start to use it.  Thus, the citizen developers enhance and modify it to support multiple teams, multiple users and roles, etc.  All along, there is no oversight from IT about how the application is enhanced and managed.  No standards are followed, as it’s totally up to the citizen developers to choose how it looks and works.  It’s fairly likely that at some point, bad decisions were made.  Perhaps a few security vulnerabilities were introduced, or a couple of poorly-written SQL statements were created.  It’s not all that different from the MS Access mess, but at least this one is backed up...

Low code is fine when it’s just that: low code.  As soon as applications cross some threshold and become a critical component of an enterprise, it’s time to stop calling them low code and transition their ownership to the professionals. With most of the online tools, I don’t believe that this is an option, or at least not a simple one.  If you exceed the capabilities of the platform which you’re building on, it’s going to be a good amount of work to migrate to another one.
This is where APEX differs. While APEX does seem to fit the low code moniker, it’s so much more capable than that.  Calling APEX low code makes me think of other “low” branded things: low fat, low carb, low T, etc.  It’s perfectly possible to start citizen developers in APEX, and show them how to build basic applications that meet some of their less critical business needs.  Some applications will remain somewhat simple, and that’s just fine.  But for the ones that don’t - it doesn’t take much at all to transition ownership of that application to IT, or perhaps just monitor and manage it a bit while still allowing the citizen developer to own it.

Those who have used APEX for years know this: it’s one of the few development platforms that you can become productive with in just a few days, but it will take your entire career to master all it can do.  It’s an ideal platform that meets the criteria of low code.  But it’s so much more - offering one of the most seamless transition paths from low code to enterprise applications.


Hari said…
Completely agree with your thoughts! With Oracle APEX, even citizen developers can build beautiful applications "with-out" code or with low-code. But it does not mean APEX is only for citizen developers! It conveys wrong notion!

When I say to people that APEX can replace your Excel and/or MS Access applications, people often misunderstand that APEX is comparable to excel or MS Access tools, which is wrong, because we can build enterprise applications as-well with APEX.
John Flack said…
You expressed my concerns well about Oracle's new Oracle Application Builder Cloud Service, which I mentioned to Oracle's Product Manager. I saw a demo, and it looked great, easy to use, lots of capabilities. Perfect for the "citizen-developer". But, I said to the PM, "What happens when the requirements outstrip the capabilities, or when a neat application developed by a non-professional needs to go business-wide?" Can a professional grab the underlying code to maintain and extend it? The underlying code is apparently Oracle Jet, which gives me hope, but is the generated Jet code readable so that a pro has a chance of modifying it? And can we even get to the code?
Scott said…
John - excellent points. Small, citizen-developed systems WILL become mission critical, as there is no translation gap between implementation and requirements. A shoddy-built ABCS application will be more popular than a custom developed solution, as it's more likely to capture what the users need - even though it could be more difficult to use.

I see this more like Designer - you can certainly take the generated PL/SQL and make changes, but the second you add one character, you can no longer generate new changes from the tool. So yes, there is a way to transition an application from citizen to professional developer, but it's not painless, and my fear is that users will do all they can to keep things under the radar, which could be dangerous.

- Scott -

Popular posts from this blog

Logging APEX Report Downloads

A customer recently asked how APEX could track who clicked “download” from an Interactive Grid.  After some quick searching of the logs, I realized that APEX simply does not record this type of activity, aside from a simple page view type of “AJAX” entry.  This was not specific enough, and of course, led to the next question - can we prevent users from downloading data from a grid entirely?

I knew that any Javascript-based solution would fall short of their security requirements, since it is trivial to reconstruct the URL pattern required to initiate a download, even if the Javascript had removed the option from the menu.  Thus, I had to consider a PL/SQL-based approach - one that could not be bypassed by a malicious end user.

To solve this problem, I turned to APEX’s Initialization PL/SQL Code parameter.  Any PL/SQL code entered in this region will be executed before any other APEX-related process.  Thus, it is literally the first place that a developer can interact with an APEX page…

Refreshing PL/SQL Regions in APEX

If you've been using APEX long enough, you've probably used a PL/SQL Region to render some sort of HTML that the APEX built-in components simply can't handle. Perhaps a complex chart or region that has a lot of custom content and/or layout. While best practices may be to use an APEX component, or if not, build a plugin, we all know that sometimes reality doesn't give us that kind of time or flexibility.While the PL/SQL Region is quite powerful, it still lacks a key feature: the ability to be refreshed by a Dynamic Action. This is true even in APEX 5. Fortunately, there's a simple workaround that only requires a small change to your code: change your procedure to a function and call it from a Classic Report region.In changing your procedure to a function, you'll likely only need to make one type of change: converting and htp.prn calls to instead populate and return a variable at the end of the function. Most, if not all of the rest of the code can remain un…

Custom Export to CSV

It's been a while since I've updated my blog. I've been quite busy lately, and just have not had the time that I used to. We're expecting our 1st child in just a few short weeks now, so most of my free time has been spent learning Lamaze breathing, making the weekly run to Babies R Us, and relocating my office from the larger room upstairs to the smaller one downstairs - which I do happen to like MUCH more than I had anticipated. I have everything I need within a short walk - a bathroom, beer fridge, and 52" HD TV. I only need to go upstairs to eat and sleep now, but alas, this will all change soon...

Recently, I was asked if you could change the way Export to CSV in ApEx works. The short answer is, of course, no. But it's not too difficult to "roll your own" CSV export procedure.

Why would you want to do this? Well, the customer's requirement was to manipulate some data when the Export link was clicked, and then export it to CSV in a format…