You’re Cleverer Than You Think

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.

Skill development

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)

Hardware is Cheap, Developers are Expensive

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.

Do You Know It All?

Last week’s Technology That Fits newsletter (sign up here) stimulated some interesting discussions. I showed the following graphic:

Doomed Projects

Everybody agreed that projects that choose good tools for good reasons are good, and projects that choose bad tools for bad reasons are bad. But some disagreed on Learning and Lucky categories above.

I call projects that choose good tools for bad reasons “lucky”. They are CMMI level 1 – sometimes they succeed, sometimes they fail, and they never get any wiser. I’m not recommending you accept that as a satisfactory state of affairs, but for an individual project, being lucky is enough to pull off a success.

Projects that seem to have good process but make tool choices you disagree on are “Learning” projects. Some people will walk out or loudly complain if their favorite tool is not used. I find that to be a narrow-minded approach. If clever people have chosen a different approach from you, it means you have an opportunity to learn. Don’t think only you have all the answers.

You’re Not Here to Write Code

Too many programmers think that their job is to write code. It isn’t.

The job of the programmer is to help the business solve a problem using appropriate technology for the task at hand. The programmer knows (or should know) the available tools and will hopefully select the right one for the task.

Unfortunately, too many programmers suffer from framework-phobia and don’t trust any code they have not written themselves. That takes more time, causes more bugs and will be harder to maintain down the line. Use good frameworks and solve problems!

use_the_framework

The Future of Oracle ADF

At Oracle OpenWorld, there was a lot of Oracle ADF material. I presented on Oracle ADF Bindings as part of the well-attended ADF track on User Group Sunday, and Oracle also gave some very interesting presentations on new and coming features in ADF. For example there is now an ADF component that you can use to visualize any network of nodes and edges.

But what struck me more was the fact that when Oracle buys a cloud-based offering, they tell them to re-develop the stuff in Oracle ADF. Yes, that’s right – you will be seeing Taleo, RightNow, CPQ and other recent acquisitions move to ADF.

The reason is of course that all of Oracle’s cloud offerings must run on the Oracle cloud in a unified infrastructure, and ADF is part of that. The future of ADF is bright.

Book review: Scrum, The Art of Doing Twice the Work in Half the Time

Scrum: The Art of Doing Twice the Work in Half the TimeScrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland

My rating: 5 of 5 stars

An inspiring book from one of the original creators of Scrum. Full of anecdotes about how Scrum saved projects and can be used outside the software industry. Its main purpose is to motivate you to get started using Scrum, but it does contain enough methodology to actually allow you to use the methodology. It includes a useful 5-page appendix outlining the Scrum basics.

View all my reviews

Dead Code Kills

Your applications contain 20-30% dead code that is never executed. Not just commented-out code that programmers have left in “just in case”, but routines never called, branches never executed and screens never displayed.

The cost of software maintenance depends on the size of the code base, but systems with dead code are more expensive to maintain. This is because every time a developer comes across a dead piece of code, he becomes unsure: “I wonder what this does? Is it executed at all? I better investigate some more.”

Dead code causes simple 1-hour maintenance tasks to ballon into futile multi-day code archeology expeditions. Don’t allow dead code in your systems.

Mastering Oracle ADF Bindings: Advanced Techniques

My Oracle OpenWorld presentation “Mastering Oracle ADF Bindings: Advanced Techniques” is now available for download from the OpenWorld web site. In this presentation, I talk about

  • Reading the Bindings tab
  • Bindings in the ADF lifecycle
  • Working programmatically with bindings
  • Getting the binding from a component
  • Working with dynamic bindings
  • Creating a binding programmatically

If you are interested in creating bindings programmatically, you should read Eugene Fedorenko’s blog post on this. He also makes an example available for download.

Preparing for Oracle OpenWorld

The big annual Oracle event is almost here – starting Sunday 28 Sep with the User Group Sunday followed by four days of presentations in around 50 tracks!

If the agenda seems a bit overwhelming, read the OTech Magazine Special OpenWorld Issue to find some of the highlights and can’t-miss sessions.

My sessions are:

  • Mastering Oracle ADF Bindings: Advanced Techniques (UGF3484). Sunday Sep 28 at 10am in Moscone South room 270
  • Starting Your Oracle Application Development Framework Project Right (CON3407). Wednesday Oct 1 at 2pm in Moscone South room 302

See you in San Francisco!