One of the things I love most about APEX is that it is equally at home in the
Citizen Developer) world as in the
Professional Developer) world.
This post will cover my understanding of these terms (please note the use of the word my) and why I think Citizen Developers are so important to APEX. In some ways, this is a tribute to Citizen Developers 🏆.
Wait a minute; you never said anything about
No-Code! Well, that's because I do not think APEX is a No-Code solution. In fact, I am not sure there is such a thing, but if I continue down this path, it's possible no one will read the rest of this post!
To me, a Low Code platform is a development tool that significantly improves developer productivity and/or makes it easy for people with limited development experience to build useful applications.
By limited experience, I mean that they have spent time with the documentation for the low code tool, run through the tutorials, and developed two or three 'ToDo' style Apps. They also need to understand what a table is. There are no free lunches 🥪; I don't believe you can go from knowing nothing about any tool to Citizen Developer without putting in some effort to learn the tool.
To be honest, I am not sure this is even a recognized industry term. For me, a High-Code development platform is one that can be built upon to handle just about any requirement. It is a tool that can grow with you as your knowledge expands and your requirements become more complex. It is a tool where you can solve just about any problem if you throw enough code at it.
With APEX, you can build an Application from a spreadsheet by following a Wizard (dare I say No-Code). You can also create an enterprise Order Capture system with thousands of lines of code that can handle thousands of orders daily and integrates with other corporate systems and Cloud Solutions.
You can build a responsive mobile App and tweak the already beautiful UI with Theme Roller, or you can build a completely custom theme with thousands of lines of custom CSS.
To me, a Citizen Developer is someone with limited development experience who needs to build an Application to solve a problem. They may be the owner of a startup who can't afford a 'Professional APEX Developer' or just someone who wants to build an App for their recreational soccer team.
Citizen developers are focused on solving a problem and not the technology.
Ah, finally, an easy one. To me, a Professional APEX Developer is anyone that gets paid to build APEX Applications.
Why Does it Matter
The short answer is that if you are a Citizen Developer, then none of these terms matter (nor should they). All you want to do is build something useful; if the tool makes it so that you have to know the 'best way' to do something to be productive, then it has failed as a Low Code tool. But there is more to the story...
Most Complexity Starts Simple
So, you (Citizen Developer) 🤹♂️ build a spreadsheet replacement App for your department. You spend nights and weekends on your own time building an APEX application that is making your department more productive. The App has been such a big success that the CEO 👩🏿 wants to roll it out to the whole company.
Not so fast, says the IT Director. We need to use the corporate Office 365 Single Sign On, and you should be pulling the list of employees from ERP Cloud. That's after he recovers from the shock of seeing that the App was running on apex.oracle.com 😊
As a citizen developer, you might feel a bit lost 😕 as to what to do next. Never fear, you are part of the APEX community, so you find a 'Professional' APEX developer 👩🔧 to help you. As well as helping you with the SSO and ERP Cloud integrations, they may advise you on other aspects of your Application. Put your PL/SQL code into PL/SQL packages, set Authorization Schemes for all your pages, protect pages and items using Session State Protection, and use primary keys for your tables, etc.
Now you may be feeling embarrassed; why did I not know this? Should I have known better 🤷♂️. I am here to tell you that you should not feel embarrassed. Let's face it; if you, as a Citizen Developer 🤹♂️ hadn't built the solution and proven it out in your department, then it probably would have never happened.
Also, the Professional Developer 👩🔧 probably didn't have to change how your users experience the App (i.e., you did not lose the essence of your App). Last but not least, the business benefit of the App you created has been scaled 10x 🚀. None of this would have happened if you had not poured your hard work and creativity into it (along with doing your day job). Bravo 👏
APEX's ability to scale from Low Code to High-Code is one of the many reasons why I rate APEX so highly. People new to APEX can go from no knowledge to building useful applications in a few weeks. As these new Apps become successful and need more advanced features, APEX grows with them. They can either continue on their learning path and develop these advanced features themselves or bring in Professional Developers 👩🔧 to help them.
As someone who gets paid to develop APEX applications, I feel it is my responsibility to build Apps using the most efficient, secure, and easy-to-maintain methods. As an advocate for APEX, however, I think it is my responsibility to get as many people using APEX to solve their problems as possible.
So rise up, Citizen Developers, build your APEX Apps, solve problems, and make things better. I am really interested to know what you all think, please feel free to comment.