One of the things I'm constantly telling people is that I love it when I get questions. Sometimes they aren't things I can help with and sometimes they are a bit too complex to handle over email, but every now and then I get a great one that leads to a good discussion. Yesterday I got one of those emails and I want to share it with my readers.
I'm about to start a season of building some new web sites, web applications and mobile applications, and I want to build with modern practices and not what I learned 10 years ago.
What do you think I should invest in learning and using?
As I have researched, here are a few things I’ve been seeing and considering...
Foundation CSS Framework
It seems like you're a fan of Node and Ionic.
The applications I built with CF all used CFCs for the data interactions and for APIs for our mobile apps. I really liked how clean all that worked. I really liked how easy it was for CFOUTPUT to loop over a query. Most apps I created used CF Mail to send mail and occasionally used cfpop to get mails. I also use the Scheduled Tasks and Application.cfc.
So another question is, can Node do all these types of things as well? Or are there technologies you recommend for doing them?
I want to split his question into two main discussions. First, let's focus on "What do you think I should invest in learning and using?"
What do you learn and when? #
If you don't have a particular problem, you don't need to worry about it.
Just remember - you can keep it simple. You don't have to learn it all today. Baby steps are completely ok and take it one task at a time.
About that Node thing... #
So now let's address his later point about Node and how it compares to ColdFusion. When I first started using Node, it was definitely a bit harder to get into than ColdFusion. With ColdFusion, if I wanted to try out some random feature, like HTTP calls for example, I'd add a test.cfm file and write up a quick test. For Node, that was a bit harder to do.
Part of the issue is that I was 'stuck' in ColdFusion mindset where I felt like I needed my test script under a web server. That's because for a vast majority of ColdFusion's lifetime, there was no way to run scripts from the command line. With Node, that isn't an issue. You may forget that when learning. If you want to test HTTP with Node, don't worry about setting up a proper "web app" with Express, just write a simple script and test it from the command line.
Everything you mentioned (looping over a query, using mail, scheduled tasks), all have multiple different solutions in Node. Yes you will need to look them up. While CF just gives you them, using Node forces you to actually find a solution and add it. But you will quickly learn to appreciate not being locked down to one solution and having the freedom to pick a library that works best for you.
At the end of the day, the shear size of the Node community is one of the biggest benefits. I'm not going to say ColdFusion is dying, but the fact is that there is a lot more activity within the Node community than CF.
I'd recommend all ColdFusion developers learn Node. You don't have to abandon ColdFusion, but it is a great skill to add to your toolset and improve your hirability going forward.
Final Thoughts #
It can be scary for someone who has been focused on one small world (like ColdFusion) who is now looking to become a better web developer. I definitely understand that. But it is an absolutely awesome time to be a web developer as well. Our tools and options have never been better. The Web, as a platform, has never been better.