Why Do Some CFML Jobs Require Degrees?
Earlier today in the ColdFusion Programmers forum on Facebook somebody asked (I’m paraphrasing a little) why do some ColdFusion jobs require a Computer Science degree when they don’t teach CFML in college?
I have 2 answers:
Actually, there is (or was?) a ColdFusion curriculum written up and made available for colleges that want to teach ColdFusion in the classroom. I’m unclear on the current status of this, but my guess is someone on the Adobe ColdFusion team would have more info (Mark or Kishore probably).
The longer answer is, because good Computer Science degrees are not language specific. Good degrees (and good software developers) focus on constructs, concepts, and higher level skills. They don’t spend (much) time worrying about the difference between a CFInclude and a Custom Tag...but they do teach you why a programming construct that leaks data (CFInclude) would be less appropriate in most situations than one that promotes better programming practices (CFFunction, CFCs, and even Custom Tags are better than CFInclude in that regard).
And that’s where we commonly see the separation in types of CFML developers out there. It’s not “ones with or without degrees”. But more-so it’s “ones that do or don’t understand programming constructs and software design at a higher level”.
When ColdFusion first came out, it was designed to be really easy to learn, and the target audience was front-end graphic designers, not programmers. So a lot of the things common in other technology were either changed, hidden, simplified, or outright eliminated from the language. And it worked — lots of people learned how to use ColdFusion. But they didn’t learn any proper software engineering practices.
Well now it’s 20-ish years later, and a lot of those CFML apps written by non-programmers are still in use, which is great! But they also suffer from a lot of technical debt, which is bad. Technical debt in old applications is common, but what’s also very common in the CFML community is this phrase:
“Oh, ColdFusion can’t do that....you need to switch to some other tool like C# or Ruby”.
...and 99% of the time that statement is wildly incorrect. ColdFusion can solve the same tech problems any other stack can solve. The part of that problem that is ColdFusion specific is actually ColdFusion community specific — the folks that learned CFML without the benefit of knowing proper software development skills as well.
We have a lot of folks that learned ColdFusion first, and proper software development later, or not at all. So now we have job descriptions (they’ve technically always existed, but that Facebook post was a good conversation starter) for ColdFusion Developers asking for college degrees. The reason is, it’s way easier to teach a Software Developer how to use a CFFunction than it is to teach a “ColdFusion Developer” why proper modularity and Object Oriented Design are wildly important. To lessen the risk of more technical debt, and to do a bit of future-proofing, some companies are looking for folks that do Software Engineering, and not just ColdFusion Development (in the legacy sense of the phrase).
That’s not to say one has to have a degree to be a proper Software Developer; there are lots of great real-world situations for learning great engineering chops (and I know plenty of excellent engineers that don’t have degrees, or have one in something completely unrelated to CompSci). But the college degree thing makes it very easy to check if someone is likely to have those skills.
Additionally, many projects these days involve more than one language. Recently I was on a large web project that used a combination of CFML, Node, and PHP (for basically stupid reasons, but hey that’s how things worked out). Folks that aren’t comfortable switching between tools would have had an incredibly difficult time on such a project.
Should you learn ColdFusion? Yes, absolutely.
Should you learn the new features in the latest version of ColdFusion? You betcha.
Should you also spend an equal (or greater) amount of time focusing on why Adobe felt it prudent to include things like the “abstract” or “final” keywords? And why Object Oriented Programming is still important?
If you can’t answer that last set of questions with a resounding “yes”, then I’m going to guess you may have come into CFML first, before having much of a CompSci background. And that’s okay! John Lennon said it best: “Life is what happens while we’re busy making other plans”. :)
Fear not! We teamed up with the folks at Ortus Solutions last year and wrote a set of video tutorials for people in this very situation. If you need to learn some proper software development practices, there’s a great Object Oriented Programming Series of videos over on CFCasts for solving this very problem.
It is possible to learn better programming practices, and those skills will be transferable to any language you use, not just ColdFusion. The videos mentioned above might be a good place to start.
Thanks for listening and happy coding. I have faith in you.