I am a project manager and I have worked with both ColdFusion and Java development teams. I have often wondered why it is that ColdFusion developers get about 60% of the rate of the comparably skilled Java developer.
ColdFusion is a high level language. The built-in features including authentication, search, clustering, image processing etc means that one ColdFusion developer can deploy applications that would require two Java developers. Assuming a comparable market, ColdFusion developers should be able to capture some of that value and earn more than Java developers.
I think that the answer may lie in the commoditization of the software stack over the past 10 years. Most problems are now solved and the solutions are free. Applications servers work, object relation mapping – use hibernate (it works). Need an IDE? use Eclipse.
The competitive advantage of the out-of-the box system with integrated tools, quality control and documentation that (Adobe) ColdFusion provides have been eroded by the ready availability of Java systems that actually work and are well supported by the open source community.
The software eco-system is continuously evolving and this will affect your product. The rise of ReST over the last couple of years is a good example of this. The Java community rapidly solves such challenges and delivers functional well supported free software such as Jersey.
Therefore a software team will be more productive over the lifetime of a product using Java than ColdFusion. I emphasise the word team because to use Java effectively requires division of labour and specialisation of function and lifetime because over a short period of time ColdFusion will deliver more features quicker. It is this greater productivity over time which contributes to the higher rate of Java developers.
So where should we use ColdFusion and how can we make money from it? From my analysis above I think that ColdFusion is ideal for rapid prototyping and small stable production systems.
At the moment I am developing Keyapt. This will let a mobile phone user control his phone from his PC. I am prototyping in Railo on Tomcat and will deliver in Java on Tomcat. The development path is very straight forward and I get the best from both technologies.
So what would my advice be to ColdFusion developers who want to learn Java and increase their rate and job security?
It’s not the language – it’s the frameworks. Most development nowadays is about configuration not coding. As a developer ensure that you understand the frameworks that you are using and the Java analogues. A few hobby projects will then position you well for Java development work.
Replace ‘ColdFusion’ with ‘hammer’
Replace ‘Java’ with ‘screwdriver’
Use the relevant tool. Hire the person who knows which one to pick up.
Hint : if you’re a hammer person, don’t think that a screwdriver is just a hammer with the handle on differently. It can work, but you’re missing the point
After all, it’s understanding the job that’s the most important bit.
Languages and framework are lovely, but if you want to go beyond the hammer man you should look at why
In conversation with Chris we discussed the different sorts of tasks that languages are used for. Chris put forward that Java can and is used for more difficult and complex tasks than ColdFusion. These tasks are likely to be in communications intensive areas like banking and telecoms where the costs of failure are high and smart people are paid well.
This could well be an answer to my question. If a smart person is working in Java on a banking application he is likely to earn more than if he is working in ColdFusion on an intranet application.
Let’s go back to the first line, and what you emphasised.
How do you measure “comparably skilled”?
Clearly not by “paid the same per day”, so is it “doing it for the same number of years”?
If you’ve been using framework AAA for 3 years, or been using a general-purpose programming language for 3 years, I’ll go for the second UNLESS I have an AAA site and no other thing will do.
Anyway, ColdFusion is a minor player in that space. It’s OK, has gone through many warps, and is encumbered by proprietary stuff – Adobe is not the most open of companies.
So imagine I need to hire someone to do a new webapp. ColdFusion could do it, perhaps, but it locks me in. I’d rather go after someone with more depth and breadth of experience. They could always learn how to use ColdFusion if that was the way to go.
At root, the reason ColdFusion people don’t get paid as much is that the demand isn’t high. It is probably not much to do with how smart you are (an unfortunate fact of the software business) but more to do with how many hirers are prepared to go for ColdFusion without the option. Not a lot, it appears.
Try ‘I’m a Java developer, and I know how to use ColdFusion’ and you might get a premium.