My answer on Quora to “Which is the best career path to choose, Oracle ADF, or Java?”
Concentrate on Oracle ADF. ADF skills are in high demand and pay better than pure Java skills.
Because Oracle ADF is a Java-based framework, you will need to learn some basic Java as you build you ADF skills. Once you land an ADF job, you will learn more Java as you work with ADF. This allows you to continue to pure Java or other frameworks if you are not happy with ADF.
Which is the best career path to choose, Oracle ADF, or Java?
My answer on Quora to “Who should create Oracle ADF skins: Developers or designers”
If you are on the latest ADF version (12.2.1.x.x), you have access to the web-based Theme Editor. In this case, your designer should use this user-friendly tool to create the skin. It has some limitations, but the designer is best placed to work around these.
In earlier ADF versions, a CSS developer is needed to develop the skin, and the designer just produces a graphic in photoshop or similar. If you don’t have a specialized CSS developer, somebody will have to learn CSS, because ADF skinning uses all normal and some uncommon CSS features.
Who should override and apply Oracle ADF skin into pages developer or designer?
My kitchen has a very nice range hood over the cooktop. It has a powerful fan and beautiful brushed steel finish. And it has a user experience like most IT systems: Lousy.
Let’s think about what a range hood does. It has two main functions:
- Start the fan to extract grease and fumes
- Turn on the light over the cooktop
Because of the shape of a range hood, the buttons to operate it are typically placed in a row. A row of buttons has two good, easily found positions:
- To the far left
- To the far right
Two primary functions, two good button locations. It would not take five minutes of thought to allocate functions to buttons. Unfortunately, the engineers at ATAG did not spend those five minutes. Instead, they placed the button for the light 5th from left, 3rd from right. And what did the use the good right-hand position for? The rarely-used feature of resetting the filter cleaning warning. A button I press every three months at most.
Most IT project do not spend these five minutes of thought either. Large, professional organizations have a team of UX professionals, like the people I work with at Oracle. But even if you don’t have professional UX designers, every developer can spend five minutes thinking about the task the user wants to achieve.
Most IT systems are like my range hood: Just inconvenient enough to make users slightly annoyed every time they have to concentrate on an operation that should have been easy and obvious.
Next time you build a system, spend a little while thinking about your users before you code. They’ll love you for it.
Maybe I shouldn’t have written about flexible security, because I immediately starting hitting inflexible security, locking me out.
Today’s fail is courtesy of MailChimp.com, which I use for my newsletters. It’s OK that they decided they want a confirmation when I log on to my account from India, but it is not OK that they require a text message passcode with no other option.
I have my phone in flight mode, because I don’t want to pay extortionate India roaming charges. But the Millennials in Atlanta running MailChimp have decided that everybody always have their phone on. We don’t, and they don’t know their users.
Do you know your users? Are you offering appropriate security options?
One of the under-utilized killer features of Oracle ADF is the Data Visualization (DVT) compontents.
It is easy to build bad visualizations as Oracle themselves show in the documentation:
However, the commercial application that Oracle build with ADF (Fusion Applications, Enterprise Manager) obviously have benefited from the skills of professional visualization designers. These products use of visualizations well.
You application could probably benefit from some visualizations, too. Check out Status Meter and LED gauges as well as Spark charts. All of these are very compact and can fit into table rows, making a lot more information available to your users.
I covered ADF Visualizations in the latest issue of the ADF Mastery Newsletter. Sign up here for regular tips on how to learn and make the most of Oracle ADF: http://eepurl.com/0J1a1
Mainly: You do not want to pick the tool that’s hot this year.
(picture from blog above)
The reason is that choosing this year’s hot framework is an unnecessary leap of faith that places your project at risk. What happens if you choose wrong? You’ll watch your application fall behind the times, or worse still, completely fail.
You want a framework that has
- Been around for a few years
- Still being used and improved
That might not be what your developers are dreaming of, but it is the prudent way of deciding. If you are a development manager, you are being paid to provide successful software to the organization, not to boost your developers’ CVs with the latest buzzwords.
I’ve just been troubleshooting an ADF application that ran fine on one environment and not on another. After some searching, I discovered that a script had not been run on one of the environments so the database was different.
That reminded me of a simple database check that I often include in my applications: I simply calculate a hash value of all tables and views with an SQL statement like this:
where table_name != 'PS_TXN';
I’m explicitly exclusing the PS_TXN table, because ADF might create this table to store application module passivations.
Every time the database changes, I calculate this simple checksum and store it in a constant in my application. At a central place in my application, I can then run the SQL and compare to the constant. If they don’t match, I’ll write a warning to the log. I don’t want the application to fail if my database does not match, but I do want to get a hint to check the database structure.
I place this check in the prepareSession() method in the Impl class for my root application module(s).
If you are working with ADF Development, I encourage you to sign up for my free ADF Mastery newsletter.
Oracle has just updated their ADF Statement of Direction, announcing that ADF 12.2.1 will be out in 2015. Here is what they are promising for this release:
The Next Version of Oracle ADF
Oracle is planning to deliver the next version of Oracle ADF – 12.2.1 – as part of the next release of Oracle Fusion Middleware 12.2.1 in 2015. Some of the focus areas for this version include:
- REST and JSON Support – including enhancement to the REST data control as well as the ability to publish business logic developed with Oracle ADF Business Components through REST interfaces.
- Responsive UI Support – further enhancements to Oracle ADF to simplify and enhance support for responsive UI design and implementation.
- Additional Oracle ADF Faces Components – new components, as well as enhancements to existing components, that further enrich the set of JSF components provided with Oracle ADF
- JDK 8 support – aligning with the latest version of Java to support new language capabilities
I look forward to better support for REST & JSON – it will be a nice improvement if we can publish our business components as REST web services to consume in e.g. Mobile Application Framework.
I often train experienced developers in new tools, and I’ve found that most underestimate what they can do – their actual skill level is higher than their own perceived skill level.
This is different from new developers, who tend to overestimate their skills.
The reason this happens to most experienced people is the “loss of control” feeling overcomes the feeling of accomplishment. If you are very skilled with one tool, you are acutely aware that you are not an expert in the new tool – yet you feel that you should be. Cut yourself some slack – you are cleverer than you think.
(The graphic is from my newsletter “Technology That Fits” – for a regular dose of fresh IT thinking every week or two, sign up here)
When advising customers on ADF projects, I often find development environments where many or all developers are working against the same database. That introduces a hard dependency between different parts of the project – if one developer deploys a defective PL/SQL package to the database, nobody else can run the application.
This approach made sense back when hardware was expensive and databases had to be managed by high priests in glass-walled, climate-controlled rooms. Today, you can buy a development machine with a quad-core i7, 16GB of RAM and a 256GB SSD disk for $1,200. This machine can easily run an enterprise-class database, application server and IDE. Additionally, virtualization software allows you to build, distribute, and reset environments easily.
It doesn’t make sense to have expensive developers work on old hardware. As soon as they have lost a day due to an inflexible development environment, you have lost more than the cost of a proper development laptop.
Don’t waste expensive developer time because you’re too cheap to buy proper hardware.