How to start as a developer

Congratulations!

Somehow you made it to APEX. Finding the right development tool in the IT world is difficult. When it comes to Web applications with a database connection, APEX is the best tool out there. Let me tell you why.

There are two basic Web development approaches:

1. Code based approaches like Java and Javascript frameworks (I have experience with Sencha Ext-JS and SAP UI5).

2. Component-based code generators like QlikView. (I have experience with that too.)

For the code-based frameworks approach (1), you have to code the User Interface (UI) and the Controller logic (what happens when you click a button, a link, submit a page, etc.) in the Application Program Interface (API) of the respective language.

This requires knowing Java or JavaScript very well as a start. After that you have to deal with often very complex APIs. These APIs are like a separate language. Using these APIs, you code your front-end and determine what should happen when a user interacts with the page. In my last Ext-JS project, we coded 4,000 lines of API code for a single Web page.

The benefit of this approach is that once you’ve managed to get these 4,000 lines of code per page error free, and the API components do what you expect them to do, you’ll have lots of out of the box and AJAX functionality. AJAX is short for Asynchronous JavaScript and XML. AJAX ensures only changed data on a Web page is reloaded from the server and updated in the browser. That’s very fast and the way how you achieve the Desktop Application or Web 2.0 look and feel that’s so desirable for a modern Web page. You want an immediate response without waiting for the whole page to reload.

There is another drawback to this approach beyond the steep learning curve and the heavyweight coding. Framework components have few adjustment capabilities for the User Interface. Maybe you can change a color here and there, or show and hide certain functions, but that’s about it. Overall, the UI stays more or less the same. But customers want custom adjustments to the UI and functionality, so this can cause problems.

Then we have component-based code generators (2). With this approach you don’t really code anything, you just drag and drop ready-to-use front-end components in your development tool. Then you configure these components and bind them with data. When you click finish, the corresponding code and logic are generated for you. The entire process is very quick and provides instant out of the box functionality. There's a lesser known part of APEX called Websheets that does something similar.

With this approach there’s a very short learning curve, but also very little influence of the User Interface. Even the logic is more or less predefined. It’s like taking a train: You don’t have to do or learn much. The train always looks the same, travels the same way, and makes the same stops.

In my over 20 years of experience in custom development consulting, I’ve found that customers always want individual changes in the User Interface and for the logic. These small changes are the difference between a customer loving and identifying with the application and a customer resigning themselves to a given User Experience (UX). On the other hand, the software should also be state of the art, fast to develop, and easy to change.

So how does APEX fit into these categories?

It’s very important to understand the architecture and the basic concepts of APEX. After that, it’s much easier to learn and you can answer a lot of questions for yourself.

If you don't know the architecture, you'll never understand why you have to fill out specific fields in the APEX Application Builder. You'll just learn it by heart because you know it works. But if something changes in the Application Builder, or if you face a bug, you'll be lost. That can be very frustrating because you know the solution is just a click away, but you have no idea where to look for it.

My girlfriend has no idea how to set up our Home Entertainment System. She knows which color cable goes in which color port, but she doesn't understand there's an audio stream and a video stream and the sequence these components go through to get sound out of the speakers and video to the TV. When she cleans the console, she often pulls out the cables by accident. It's always difficult to set it up correctly again because she doesn't understand the basic architecture and ends up connecting the video signal to an audio plug. Don't make this mistake with APEX.

I cannot emphasize enough how important it is to understand what you do and what effect your settings in the Application Builder have in a browser's resulting HTML page. I know it's hard to do right from the beginning. It's easy to be overwhelmed with the hundreds of places you can change your Application in the Application Builder.

But if you don't learn right from the start, it's unlikely that you'll ever learn. You'll quickly reach a comfortable level and you'll achieve lots of remarkable results. If you do this, you'll never become a professional developer. You have to understand the what and the why, otherwise you'll get stuck leveraging APEX to just 75% of its potential.

The fun really begins in that final 25%, when you can achieve every result your customer can think of. You'll even look forward to the bugs you'll face in your Application because they're so easy to fix or it's so easy to find simple, elegant workarounds.

With APEX you are building Web applications, so it's a good idea to understand the basic principles of Web development, such as:

  • How does a browser work?
  • What’s the DOM? What does it do? How can you manipulate it?
  • Where can you use JavaScript and when do you need it?
  • How do you deal with CSS?
  • What is a POST and what is a GET in HTTP?
  • What’s a Web server good for?
  • How does a Request go from the Browser to the Web server to the Database and back, the so called roundtrip?
Don’t get me wrong. I’m talking about a few hours to answer the above questions in a basic way. Enough for you to understand what’s happening behind the scenes and answer the questions for yourself what happens when you change a certain setting in the APEX Application Builder. This is a prerequisite to becoming a professional and happy APEX developer :-)

You should have the same basic level of understanding for the Oracle Database as well:

  • What’s a User? A Schema? A Workspace?
  • When do you use SQL? When do you use PL/SQL?
  • How do SQL and PL/SQL work?
  • What are Tables, Views, and Indexes?
I always start my beginner trainings with these principles. This often surprises audiences expecting APEX only, but time and again I receive very good feedback from students who are thankful that I "forced" them to understand what they're doing rather than just where to do it.

Maybe you need a POST instead of a GET to run through the Page Processing Phase in the Application Builder. You've learned certain settings by heart without actually understanding them, so you input your usual setting (which creates a redirect) despite not really knowing the difference between a POST and a GET. Suddenly your validations aren't working and you wonder why your debugging output in the Browser isn't showing even though the corresponding page process ran through. You've picked the wrong setting because you don't know the basics. You only know how things are done "most of the time”. Learning "most of the time" APEX is a terrible approach. Remember the Home Entertainment System example ;-)

Don’t get frustrated. You'll have a much harder go of it at the beginning, but it's worth it in the future. The additional knowledge you gain can also be used for every Web development approach and every Database Application. And don’t forget it’s still ten times easier and faster than learning a complex JavaScript API. ;-)

In my 11 years of APEX development, I've often heard questions that begin with “Can APEX…”. I always laugh and interrupt the customer and answer “Yes it can!” without knowing the rest of their question. I always say “If you've ever seen it in a Web browser, APEX can do it.” That was true for the first version 15 years ago, and it's true now. It will never change. It’s simply the result of Mike Hichwa's (link to the Podcast) brilliant architecture.

In a database you not only store data and query it with SQL (Structured Query Language), you also program the code that processes the data. In the Oracle Database (the market leader), this programming language is called "PL/SQL" for “Programming Language on top of SQL." PL/SQL builds on skills learned in SQL. It’s a very simple 3G language, meaning it’s not object oriented or event driven. Even if there is an add-on where you can also create objects and methods, you'll rarely use it. Chances are you'll never encounter it in your whole life. PL/SQL is very fast and optimized for running in a database and processing huge amounts of data.

There is also an add-on called “Web Toolkit” _xxx? for PL/SQL where you can create HTML and JavaScript. Now you can retrieve data from a database, wrap it into nice HTML and JavaScript, and display it in a Browser. This is possible because the database can communicate to a Web server and therefore with a Browser.

This is how the APEX Team (_xxx link to YouTube) created the so-called “Application Builder,” a Web application that creates Web applications. This Application Builder is comprised of numerous packages which are logical groupings of PL/SQL programs. The Application Builder is itself an APEX Application comprised of more than a 1,000 Web pages. That’s one of the main reasons APEX is so stable and relatively bug free compared to other software. The development team uses the old APEX version to build the new APEX version :-)

Now that you have this huge Web Application Builder, what do you do with it? You describe how your new Web application should look like, what data should be shown, how to navigate between pages, and basic functionality like inserting, updating, and deleting data. This process is called “declarative development," because you describe how something should look and work, but you don’t actually code it, you just describe it.

How does APEX generate your application from everything you've entered in the Application Builder?

All your entries in the Application Builder where you describe your Application are stored in numerous tables in the Database. You will often hear these tables referred to as the “APEX Repository." You can leverage these Repository entries and read them through “Views”, a stored SQL Query. These entries are read only. You can't write on them and you're not supposed to. Even if you technically could somehow, for example if you were a Database Administrator, you wouldn't want to. Changing Repository entries will cause you to lose your APEX support.

APEX also has a lot of other Packages (stored programs) in the database that read your data from the Repository. APEX interprets this Repository data, gets the data from the SQL queries you have stored there, and wraps it in nice HTML code for the Browser to display. These Packages are called the “APEX Engine."

The whole APEX concept is therefore declarative. A repository-based approach to generate any Web application without creating a single line of code for the User Interface, the Controller Logic, or the basic functionality. In other Declarative Development Tools you have a button at the end of this process that generates tons of source code that you have to deal with afterwards. APEX never creates this source code. It only reads your declarative entries. It creates an HTML result on the fly every time you request a Web page in your application.

APEX is also very fast. If you don’t have personal SQL queries, that can take seconds to retrieve and process the data out of billions of records. APEX itself needs around 0.03 seconds to create a complete, feature-rich Web page in the Database.

By now I hope you understand how this brilliant concept distinguishes APEX from all other Web Development approaches and why it makes APEX so successful.

The APEX architecture has been the same for 15 years, that's practically a century in Web development time. In the Web world you see development frameworks rise and fall every year. It’s hard to keep up when need to learn a new framework every couple of years. With APEX you can leverage your knowledge for decades because the architecture stays the same. Plus you enjoy more and more additional features every year.

Other key advantages of using APEX are:

  • APEX takes care of complicated Web development stuff for you like Session Management, Authentication, Authorization, and Debugging.

  • With Dynamic Actions you can create Web 2.0, Desktop-like Web applications with only a few lines of JavaScript code, achieving similar results to bigger, more complicated Frameworks. I once replaced an Ext-JS Application with more than 20,000 lines of complex JavaScript API code with 200 lines of easy and well-structured Dynamic Actions in APEX. I achieved even more dynamic AJAX functionality with 19,800 fewer lines of code! Remember that every line of code costs you money every month for maintenance and change requests. ;-)
  • You only need to know simple technologies like HTML, JavaScript, and PL/SQL. This will never change because APEX itself was created with these technologies.
  • Even if you can use 90% out of the box from APEX without coding anything, and you only have to code your business logic in the simple and fast Database language PL/SQL, you can interfere anywhere at anytime and integrate your custom solutions without losing the APEX context. That means that even if you code your own Report in PL/SQL and HTML, it's still an APEX component and you can still use all the APEX features in it. That’s why I always say “Yes you can do everything in APEX.” This differs from Framework approaches where it's extremely hard to create a custom component.
  • If you've created a custom component and you want to share it with your colleagues, you can create a Plug-in. With this approach, you can enhance the APEX Application Builder itself! You can put yourself in the role of an Oracle APEX development team member and enhance the Application Builder. You use the same technology the development team is using to create a new version of the Application Builder. So if APEX does not support your Web-component out of the box, you will probably find it in one of these hundreds of free Plug-ins available on the Internet. If not, feel free to code whatever you can think of and make another APEX component out of it for every APEX developer using Plug-ins. All you need is good old PL/SQL, HTML, and JavaScript.
  • There is a very vibrant online APEX community that can help with any problems you may encounter. The development team itself is found on every Oracle conference. You can talk to them and learn from them. They really listen to what you need as a developer. The whole development team are all high quality people. It's no wonder that this is reflected in the product itself ;-) There's also a Web page where you can ask for Change Requests: apex.oralce.com/vote
  • There are a lot of Sample Applications and ready to use Business Applications out there. Just look through “Packaged Applications.” You can unlock these Applications and play around with them as if they were your own. This is a good way to copy functionality you like into your own application. Once you understand the basic principles of APEX, anything else you'd want to know is covered in the thousands of blogs and forums descriptions dedicated to APEX. Whatever answer you need should be out there and easy to adapt to your own project in no time.
  • Oh and did I mention that it’s free? Yes, there's a no cost option to the database. But you have to license the Database, right? Nope! There is even a free version of the Database called XE. So you can build a 1000-page Web application and deploy it to your customer without paying a single penny to Oracle. (Guess how we created apex.world?) If you need more database power, just upgrade to a more powerful Oracle version without changing a bit of your APEX application. And because it's Cloud based, you can easily develop in the Cloud and then keep it there or move it wherever else you'd like. There are a lot of Hosting providers for APEX. Even Oracle itself is offering a professionally hosted APEX Cloud Service for your productive APEX applications.
Now you understand why so many APEX developers are so enthusiastic, putting stickers on their computers or smartphones, wearing t-shirts, and doing all sorts of other fancy stuff with our ā’pěks logo. APEX developers are brilliant, love their work, and have extensive experience with lots of other developing approaches. That’s why they love APEX and why you see it everywhere.

So how do you learn APEX?

I assume you want to become a professional APEX developer with the ability to generate any Web application you can think of.

Because APEX is Cloud-based, all you need to develop, administrate, and test an APEX application is a Browser. So go to apex.oracle.com and get yourself a free Workspace (a small part of a Database). You should be up and running in five minutes.

Now it’s up to you how you'd like to learn. There are books out there, Video Trainings and Live Webinars with teachers you can talk to, or the official Oracle training with onsite classes. Classes, books, and video trainings are available in a wide variety of countries and languages. I only refer here to the popular English tutorials. You can also find an experienced APEX developer you know and respect and ask him or her for one-on-one Web training. It shouldn’t be more expensive then a live Web training, and since you'll be the only student your trainer can customize lessons to your needs. This is how I became an APEX professional. I just booked one-on-one trainings with professionals.

All these materials give you a feeling of how to develop APEX Web applications. After that you can decide if you like it or not.

But this was just the first step, because you want to become a professional developer, right? I would say you're at 30% now.

The next step to becoming a 100% professional is to learn the languages and technologies around APEX. They're not complicated, but it takes a while to cover them all. In the mean time, you can still develop APEX applications successfully with what you've learned so far. Every little step you do now in learning the surrounding technologies will help you produce even more amazing results. It’s a lot of fun and very rewarding, because you can use your new knowledge right away in APEX.

Technologies to learn:

  • Start with the Oracle Database. APEX lives and breathes inside the Database. Every functionality the Database provides, and there are hundreds you can’t even think of, can be used in APEX right away! Larry Ellison, the founder and former CEO of Oracle, once said "Using APEX in the Database is like checking into a 5-star hotel. You get all the service for free." You should also use the free SQL Developer from Oracle to learn and program the Oracle Database.
  • Learn the basic principles of the Oracle Database, SQL, and PL/SQL. After that you are at 60%. By the way, you are now an Oracle Developer! You can program this very famous Database and develop business logic in the backend without APEX too.
  • The next step is to learn the front-end technologies: HTML, CSS, and JavaScript. This is also totally independent from APEX. You need this knowledge for every Web development. You can go a very long way without knowing these languages in APEX, but you'll discover a whole new world after learning the front-end technologies. You can manipulate your User Interface any way you'd like and it's just a lot of fun. After that you are at 80%.
  • The final step is to learn jQuery and Dynamic Actions. jQuery is a JavaScript Framework to manipulate the User Interface in a Browser without retrieving the whole page from the server again. jQuery is very popular and used in more than 50% of all Web sites. Dynamic Actions is the declarative layer on top of jQuery to achieve interactive AJAX calls and UI manipulations. Refer to Explanations / Dynamic Actions for more information. Once you've done all this, you have reached 100%.
Your learning doesn't stop there though. Like learning any spoken language, it takes time. It may take a while to form your thoughts, but soon you'll start saying meaningful things and every year you'll become more and more poetic. :-)

How long will it take?

Let’s say you start at 0%. You have no idea of programming, databases, or Web development. If you can invest just two hours every day and you are serious about it, you should achieve the 100% within a year! With every percentage point you gain, you become a better APEX developer. You can use this knowledge in all related database and Web development approaches. The best part is, you won’t lose this knowledge for a very long time. The architecture and the technologies around APEX have stayed the same for 15 years and will probably remain unchanged for another 15 years.

There's currently a shortage of professional APEX developers. That's the feedback I hear from all the companies offering jobs. It's a great time to become an APEX developer.

You can contact me at any time if you have any further questions. Start now by requesting your personal Workspace on apex.oracle.com!

By Juergen Schuster