David Tannersyn commented on my blog post about MFG.com taking three years to overhaul their web site. He’s interested in a balanced argument as to why anyone would choose CFML over Java in this day and age.
Here’s David’s comment, with my answers interspersed.
I spotted your comment on the Tech Crunch, MFG.com article (among many other CF advocates), found your blog, and had a look around.
The TechCrunch article received a lot of commentary from CFers, much of which bordered on fanboi-ism – which we as a community do tend to slip into because of our passion for CFML. Some of the comments were downright insulting (to TechCrunch and to MFG.com) which might be a whole bunch of fun but doesn’t do our image much good when viewed from outside our community. Given some of the heat in the comments, I’m glad David still took the time to come here and ask questions – many folks reading those comments probably just wrote us off!
It is clear that you have a much more solid programming and architecture background than I have in diverse development languages. I feel compelled to ask you a question after reading the some-what over the top comments from the CF community. I hope you do publish this post as it would be great to get more feedback from the type of people that would read your blog.
Well, I know many of the same people who commented on the TechCrunch article also read this blog so if folks comment on this post, try to be more balanced and level-headed than what we saw on TechCrunch, OK? If we want other folks to take CFML seriously, we need to respond pragmatically and calmly to questions and criticism rather than just piling in…
I have worked in a number of software houses, and also have some experience in asp.Net, Java, and a good number of years in CF. In the past there was no doubt that CF was the avenue for a quick time to market, scalable and fast site .
So, before anyone tears into David in the comments here, note that he is a CFML developer and he recognizes the benefits that led to the rise of ColdFusion…
In Nov 2009 why recommend Coldfusion in good conscience for a new project or a career when Job postings for ColdFusion developers are remarkably low compared to Java and .net, it will unlikely be found on a university syllabus (is it taught anywhere?) while Java and .net are ubiquitous, and has even a lower take up outside of the USA (about zero take up in non-English speaking countries) where Java is thriving. This all seems to be the symptoms of a dying technology. The job postings are very, very key for those starting new projects or careers. Also, the frameworks and capabilities of CF are getting so similar to Java why not use Java, and ensure you have resources to work on your project in the years to come?
If you look at the job postings in isolation, it doesn’t paint a very good picture of ColdFusion’s health, but the reality is that a lot of CF jobs are filled by networking, personal recommendations and word-of-mouth. CF jobs are also filled internally with “non-programmers” slowly transitioning into CF developer roles – because CF is so easy to pick up and has been designed to make even non-technical people productive in a short amount of time.
Evans Data – an independent research company that analyzes IT trends by surveying a very broad range of people in the industry – has estimated the number of CF developers has grown steadily to nearly 800,000 which includes a huge leap in numbers since Adobe acquired Macromedia. That’s based on developers who self-identify as CFers – not download numbers, not something Adobe cooked up.
I know independent CF contractors who are fully booked for months ahead and referring leads left, right and center. I get contacted by recruiters all the time asking for referrals for CFers (for positions that often aren’t posted publicly). I refer them to user groups in their area (so if you are looking for work and you are not a member of your local user group, you may well be missing out on job opportunities!).
Adobe are also working hard on the educational sector. ColdFusion is free for students and faculty for use in education. Adobe’s curriculum is freely available for anyone to teach. There are universities and colleges teaching CFML – not too many right now, admittedly, but it is a steadily growing number.
As for Java and .NET being ubiquitous, dynamic scripting languages (and other specialized languages) are on the rise with some high profile companies basing their entire infrastructure on Ruby, Python, Scala and so on. Increasingly, these “new” languages are targeting Java and .NET to leverage the platform ubiquity (I say “new” since many of these currently ‘hot’ languages are actually as old as CFML!). CFML also targets the Java platform so CFML runs wherever Java can be found (and, with New Atlanta’s BlueDragon.NET, also natively wherever .NET can be found). CFML is no longer just a niche, proprietary application server but a rapid application development language and framework that runs on top of ubiquitous technology. CFML is also no longer limited to one vendor, with two free open source engines available that are bringing new developers into the CF community from the PHP, Java and .NET communities. Don’t believe me? Railo surveys folks downloading the server and we’ve published numbers supporting this expansion on the Railo mailing list.
So, for me, it’s easy to recommend CFML for new projects because it’s a powerful, dynamic scripting language that allows people to rapidly build complex web applications.
Recommending CFML (alone) as a career path is definitely a little trickier. I never recommend anyone be wedded to a single language and I’ve been urging CFers to become polyglots for years. Even Java has a shelf life and is slowly becoming the next C++ (a language still thriving but subject to questioning within its own community about its long-term survival). Microsoft has a history of changing technology out from under its developer community and forcing them to learn new languages to survive – so C# is not a safe bet for a long-term career either. CFML is over ten years old and the community is still growing and the language itself is still evolving and each engine is adding innovative new features. The bottom line is that the more languages you “speak”, the more employable you are likely to be. As an adjunct to that, the more your experience includes a variety of approaches – including OO, design patterns and so on – the more employable you are likely to be.
Back to David:
- I am focusing on very dynamic, constantly changing websites that are there for the long haul, and development teams greater than 2 resources that will have rotating over time – the site will need a framework, coding standards, releases processes, and scheduled refactoring i.e. real, maintainable websites (the goal of any website regardless of its start).
- The level of experience of the CF developers and, say, the Java developers are at an intermediate to senior level. They know their stuff and have a good solid background in the type of website above i.e. real, experienced programmers who are concerned about processes and standards that will see the site through a number of years (the goal of any developer regardless of their language).
For the first bullet – “dynamic, constantly changing websites” – you definitely need a language that supports that speed of change. Java is not that language. That’s why dynamic scripting languages are on the rise and becoming so much more sophisticated. Because of CFML’s ease of use, the sole developer, operating without decent processes has historically been the way sites have been built but that is changing (and the same criticisms can be leveled at PHP and Perl and…). Fortunately that is changing. CFML has a broad range of frameworks available now. CFers are recognizing that version control, testing, release processes and so on are very important these days. As Joe Rinehart observed in a Fusion Authority article, when web development became popular, developers seemed to forget everything they’d learned about structured client / server development! I think we saw a huge intake of new developers who actually didn’t have any of that experience and the two worlds – web on one hand and enterprise software development on the other – tended to stay separate for a long time until learning web development became inevitable for many enterprise developers. Those “new” enterprise developers coming to web development brought all of their traditional process and control with them and it’s taken a while for that to spread to all the other (web-only) developers…
That shift in the web development community at large is also going to support your second bullet. Web development has grown up in the last five years (and a lot of CFers – and PHPers – are finding things have changed around them).
My team at Macromedia – that rebuilt macromedia.com with ColdFusion MX 6.0 – were Java and C++ developers. They were used to standards, version control, formal bug tracking and release processes, with dedicated QA teams, multiple staging server environments and all the trappings that go with enterprise development. They adopted a CFML framework eagerly (Mach-II because that was really the only choice for OO developers at the time). It took me a few years to realize just how atypical my team was!
Finally, I think one of the key things we need to bear in mind is that when CFML got started, there were very choices for easy ways to rapidly build dynamic web sites. These days, there are a lot of choices. That alone makes it less of a slam dunk to recommend any particular technology over the others. We, as CF developers, know how powerful CFML is and we’re a steadily growing community that survives on the back of that technology. At the same time, the web market has exploded and no single technology is dominant (despite the apparent ubiquity of Java and .NET – which are both platforms on which multiple languages run).