Thursday, October 05, 2017

A Great APEX Developer is.....a Full Stack Developer!



I've heard these phrases from customers:

  • Where can I find Oracle APEX developers?  
  • I'm having a tough time filling a vacancy for an APEX developer.  
  • I'm getting pushback from my own management because they say Java developers are much easier to find than APEX developers.

The last comment was from Peter, a potential customer, who recently posted this on Twitter.

Make no mistake about it.  If you go to indeed.com or dice.com or monster.com, you're going to find far more openings for .NET or Java developers than Oracle APEX developers.  But I would like to take a step back and ask - what makes a really great Oracle APEX developer?  Well, a great APEX developer is competent in:

  1. The Oracle Database (installation, setup, tuning, monitoring)
  2. Data modeling
  3. SQL (and SQL tuning)
  4. PL/SQL
  5. User Interface Design
  6. Responsive Design
  7. HTML
  8. CSS
  9. JavaScript
  10. Web applications
  11. Web servers
  12. Web security
  13. Network security
  14. Server administration
  15. Continuous integration
  16. Unit testing
  17. Application Express (APEX) development

...and probably a few more not even listed here.  It's an amazing list of very specific and relatively complicated technologies.  Don't be alarmed if you consider yourself a rockstar developer with APEX and you are competent in less than half of these areas.  I can't really think of anyone on our own Oracle APEX Development team who is intimately familiar with all of these technologies.  A few experts in the APEX community can truly claim to be proficient in all of these areas, but they're finite in number.  If you look at this list of technology areas, you will quickly conclude:

If you're looking for a great APEX developer, you're really looking for a full-stack developer

...and those are pretty rare in the industry.  Let's look at a couple examples.

It's easier to find Java developers than it is APEX developers.  Sure, I agree.  But it's a common misconception that because someone knows .NET or Java (or PHP or Python or Ruby or JavaScript or whatever) that they are competent in elegant and attractive user interface design.  Just because you know a programming language that is commonly used in Web applications has no correlation to you having the ability to create rich and elegant UI.  This is a very rare skill, and one I see even some experienced APEX developers wrestle with.

As another example, I heard a manager say that he was going to pursue building an application with Oracle JET because it's easier to find JavaScript developers.  We on the APEX team love Oracle JET and want Oracle JET to succeed (so much so, that we've integrated Oracle JET to produce the data visualizations in APEX 5.1!).  But this manager's statement was a bit misguided, because 1) your knowledge of JavaScript doesn't mean you'll immediately know how to use Oracle JET, you'll need to learn it, and 2) what about the rest of the stack?  Is a JavaScript developer good at data modeling?  Are they competent in authoring and tuning SQL?  Do they know when it's preferable to use PL/SQL in their SQL and when not to?  Or is that someone else's job?

My advice when you're looking for APEX developers - determine what is most important to you, and what skills and technologies you need the most assistance with.  APEX development is ultimately Oracle Database development (Smart DB development, as some would say), and experience with SQL and PL/SQL and data modeling is always relevant.  If you have a subpar data model and poor SQL, your application will suffer regardless of front-end technology.  If you have no knowledge of Web applications and you are rich in Oracle Database development talent, then focus instead on those who bring Web application development experience to the table.  I've found that the customers who "get it" the most are those who have done large-scale Web app development in another language or technology.  They are the ones who can appreciate the framework of APEX and how it enables them to focus on the business problem at hand, instead of focusing on all of the necessary minutiae typically associated with modern Web app development.

When reviewing potential candidates, don't focus exclusively on APEX experience.  APEX can be on the wish list of skills, but someone adept at database development or Web development can usually pick up APEX relatively quickly.

Oracle Database application development with APEX and Oracle REST Data Services (ORDS) continues to grow, for both on-premises applications and the cloud.  Industry analysts are responding to more and more inquiries about APEX than ever before.  Countless colleges and universities are taking advantage of the free Oracle APEX curriculum and the free offering by Oracle Academy, helping to familiarize thousands of students on appdev with the Oracle Database & APEX.  The Oracle APEX community is vibrant and growing.  There's a reason why APEX skills are in high demand.

P.S.  If you've stumbled upon this blog post and have no idea what Oracle APEX even is, I suggest you review the Simple Guide to Oracle Application Express.

4 comments:

Juergen Schuster said...

I would say if you are into Business Applications look for great DB-Developers with very good SQL and PL/SQL Skill. They should be open to Web-Development in general. Sent them to a APEX class or let them do one of the curriculums out there. Then get the guys a good APEX coach and they will be productive in 2 weeks with the coach and do Business Applications by themselves in 4 weeks. I did this approach now for more than 10 years successfully.

You can do amazing Web-Applications in APEX without proper knowledge of Web-Technology for many years. BUT it pays off a lot if your developers start to learn the Web-Stuff and Design Principles on the side. And its very rewarding because you always need just a wee bit of JavaScript, CSS to accomplish what you want. It takes years to become then the so called "Full Stack Developer". But you can start building full functional Web-Applications in 4 weeks with APEX (when you have good knowledge of the Database stuff).

So the gist of it is: If you don't find an APEX developer, make your own, they will love it!

Unknown said...

Hi Joel,

I agree with much of what you have said in this insightful blog post.

However, I would change the title to "A Great APEX Developer is.....a Full Stack Development Team!"

One single individual developer cannot build a high quality large enterprise or cloud suite of APEX applications on top of a very large and complicated database environment all by him or herself. There is simply not enough time.

To build high quality large APEX application suites, you need a full stack team that is comprised of individuals who have a great deal of technical and emotional maturity. These folks know how to play their positions well and how to integrate their individual skills and strengths into a high quality team culture. Some trite sayings come to mind here, "two (or more heads) are better than one" and "the whole is more than the sum of its parts".

Yes, for us APEX nerds, chasing the dream of becoming a heroic "full stack APEX developer" is an important goal that motivates us to study and work hard.

But we must never lose sight of the other extremely important things in our lives like mental and physical health, family, friends, community, morality, ethics. Without these, APEX is useless.

Playing the game of APEX is a team sport, get used to it.

Fraz said...

Love this blog.... Superb

Omar Sawalhah said...

Hi Joel,
I do agree with this, and I do agree with Juergen, if you can't find an APEX developer it is very easy to create a good one, I did this with my fresh graduate team, they started building APEX apps in less than 2 months. I managed the database part with them and they built the applications, white if you want to look for a java developer, you will have to look for an experienced one with more than 2 years of development, just to make sure he can code very well with best practices coding principles, without error-pone applications, you can't create a good java developer in less than 6 months.
APEX will lift most of the heavy weight for you, while in other languages or frameworks you have to build everything by your self.

Regards,
Omar