A brief plan for getting a new developer up to speed in hopefully the quickest method possible and a good solid base to start from.
After being a team of one for, well, 90% of my career, I am getting a junior developer to help me with all of the projects I have going on currently. Originally it was going to be a permanent position and we were going to shoot for a person with hopefully some CFML knowledge coming in. Our office went through some changes and all of that is paused for the time being. Being a university though we were able to work out getting a graduate assistant to help bridge the gap till final decisions are made. We found a good candidate that we hired and after a couple days he is already demonstrating that he is quick and eager. But as expected the chances were slim to get someone still in school with CF knowledge so we settled for finding someone with web experience which in his case was some Angular work. So now it’s time to get him up to speed on ColdFusion. So this is my plan and I’m curious to know what others think or would do in addition. Hopefully this can start a thread that will be a resource for others down the road.
The first step is to address the elephant in the room, that ColdFusion is dead. Our grad student had not even heard of ColdFusion so he did not have a preconception coming in but when he does start Googling he will see those articles out there. They’ve been there for a decade or more so they have to be right don’t they? Nevermind those articles are old and rehash the same things year to year and CFML is still out there and still trucking along in spite of the naysayers. The headline says so and that’s going to plant that thought and I want to rip it out. So we sat down and I gave him the “talk”. I pointed out the almost 25 years of history of the language, the conferences going on, Ortus, Slack channel, that the certification is back, etc. But mainly I pointed out that these kind of articles are out there or going to be out there for every language sooner or later as the next hot thing comes along. The main thing to remember is if you learn to code correctly the knowledge will transfer and be useful. All web languages at the core will do the same things but you’ll find CF will do most of them a heck of a lot faster once you get the hang of it. Maybe that’s simplistic but in the end I think it’s more true than not. I hope that when he moves on he takes CF with him and it becomes a language in his toolkit he will pull out again. At the very least if he hears any disparaging comments he’ll set the record straight. Also, I like the idea of sprinkling some new CFML blood out there in the world.
For an IDE I am letting it be dealers choice between Sublime Text, VS Code, or something else. If someone is used to coding in a particular IDE I don’t see an inherent advantage in changing that up on top of asking them to pick up a new language. I was Sublime Text till late last year and now pretty comfortable in VS code. In this case the new hire was a VS Code person so I’ll sit down with the extensions I think he’ll need moving forward with CF.
For the actual training, I’m starting him on Learn CF In A Week. I think this site is the best introduction out there especially after all of the efforts this past fall to bring the content up to date with current best practices. It covers a ton of ground in a clear and concise way. But I’m not letting him off the hook and giving the keys to the kingdom with just one site. Next I’m planning on having him go through the Ortus’ Learn Modern <CFML> in 100 Minutes by Luis Majano. This one hits those topics Learn CF in a Week does not and adds more depth to those topics that it does. Between these two sites I feel that a new developer gets a pretty comprehensive grasp of the language and starts a person out with some good habits.
The downside is that I’ve been around the block for a long time and they’ll look at my code after these sites and be like WTH? You’re not doing half these things. I’m dragging myself into modernity as fast as I can but there’s a lot of work out there keeping me from refactoring and keeps dropping me into my old habits to get things out the door more quickly. I realize it’s an excuse to say “I got to get this done” a lot of times to go back to the old ways but each time I put a bit more of the new in there than i did before. I’m hoping this new help will give me the time to stop relapsing as I can tend to do. Also if they do continue in ColdFusion they’ll run into legacy code so having some experience on converting it to newer best practices can only help.
Giving up a week or so dedicated to learning rather than working will have the “new guy” ready to go. I’m hoping it’s not longer than that and the trade off between training and blindly jumping in will be worth it. I think it will. I’m going to find something that exists in isolation that I can hand off as the first CF-centric project. A contact form that exists on one of our sites comes to mind. It’s a simple two page app in FW1 that needs a few tweaks. Giving something small and self contained strikes me as a good first step to dealing with an in production application. I could be being overly cautious but some of our apps do reach the highest levels of our university and a couple also have legal ramifications should something get out or accessed inadvertently. So maybe i’ll be dragging things out a little bit longer but in the end I think it’ll work out for the best.
After that point, the training wheels are off and I’ll be handing off some of the bigger tasks I have out there but have not gotten the chance to hit yet. At this point I see the new guy as being in lookup mode as needed and I’ll be giving these sites as resources that he should know about.
I think it’s a pretty straight forward path to get someone up and running relatively quickly in ColdFusion from a blank slate. I’m expecting, and hoping, for lots of questions from him and in the end there is one more CF developer out there in the world.