How Does it Happen?
Complexity can come from many sources, including:
- Designers over engineering the solution or not considering the development platform in their designs.
- The lack of a clear approach and design at the start of development.
- A lack of development standards and best practices.
- Developers showcasing APEX and using un-necessary features.
- Developers showcasing their own knowledge and using un-necessary features.
- A lack of frank discussion between designers, developers and the customers. The customer should be made aware of what they are signing themselves up for when certain approaches are taken.
Where Does Complexity Usually Occur in APEX?
- Dynamic HTML
The APEX development team seems to be particularly conscientious in making sure the APEX upgrade experience is as painless as possible. Declarative code breaking during an upgrade is a rare thing. The more you stray from declarative code, therefore, the greater the cost you bear when upgrading APEX as opposed to Oracle bearing the cost. To illustrate its resilience to upgrade, I have heard tales of APEX 3 applications on apex.oracle.com being upgraded all the way to APEX 5.1 without needing any changes. What are the chances of the REACT code you are developing today working on whatever version of REACT is current 6 years from now?
- Is there a Dynamic Action that could achieve the same thing?
- Would it be the end of the world if the user had to submit the page and have it refresh?
Dynamic HTML (htp.p)
I am not at all saying you should not use CSS, just use it judiciously.
How to Avoid Complexity?
You cannot design in a technology vacuum, you must design with the development platform in mind. Given that APEX was chosen to build the solution you should make considerations for it when designing the solution. If you build a design that you know will require the developer to jump through hoops, then you are just as culpable as they are in adding to the complexity debt.
Your organization chose APEX as its development platform. It is Oracle’s problem if APEX does not provide the features that your users need. If that should ever happen then your organization should switch to a different development platform instead of making APEX do unnatural things.
The End User
As much as we would like to say the end user is king, it is not always the case. I bring you back to the reason for building software which is to get a return for your investment. If that ROI can be achieved and the user must make an extra click, then so be it. Now that is not an excuse to deliver any old garbage. There is never an excuse for not delivering an enjoyable and productive user experience. Just don’t do it at the expense of the real prize.