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.
Adobe ColdFusion Learn & Support
CFML on Slack
CFDocs.org
Charlie Arehart’s Frequently Referenced Resources
& an open door to my office.
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.
Grae, I believe you were a guide for CF2019 Certification?
Because you did such a fantastic job, here are my two cents:
EDITOR
Stepping through one’s code via a Line-Stepper, was a revelation to me when I first started. And quite a helpful (time-saver) in debugging, especially when stuck. So, I’d recommend spinning up the CF Builder for your developer with RDS enabled.
GUIDEPOSTS
Writing code doesn’t take much effort. Writing gobbs of code is easy. Maintaining & scaling gobs of spaghetti code is hard and expensive.
LAYERING
Impress upon your Padawan that the business rules matter-most. Business requirements change at a rapid pace in any life cycle. It’s best the business of the code is at the surface. Press all the technical stuff down.
OOP
Continuing on this track:
Perhaps impress upong them the value of wrapper functions; classes (Components), pattern recognition, and in general OOP modeling up front and you’ll get better results without having to re-write everything they touch.
HUMAN FACTORS – A PILOTS PERSPECTIVE
I no longer discount how frail we are and on the other hand how much we can accomplish when we are energized and ready.
Obtaining a pilots (Airplane) license requires serious lessons in Human Factors and Decision Making. I spent twenty years programming and then I got my pilots license. I approach coding somewhat differentlty since then. The value of procedures and human factors hit a new bar with me.
I think about how faitgued I am when choosing my next project and how much energy I have to devote to a task. Make them take breaks. Especially, when they get stuck or struggle.
OWNERSHIP
Give them solid direction on the business policies and make them own-the-code, own the application & ultimately own the system is my best advice.
PRINCIPLES
You will likely start your padawan on small scopable projects up to bigger tasks including systems management. When they move up the chain:
The physicists and rocket-builders are big on first principles and boiling all things away before construction. Psuedo-code and the occaisional code review will go a long way to getting principled code.
I am a huge fan of these principles in building big projects:
1.known to unknown;
2.simple to complex;
3.concrete to abstract;
4.easy to difficult;
5.familiar to unfamiliar.
Thanks for the comment. I wish i were good enough to have been one of the certification teachers. I was in there though getting my certification so we may have been in the same room.
I neglected to mention that I definitely would make sure to familiarize the new developer with a MVC framework. I currently use FW/1 but am planning on trying Coldbox again soon. Any existing project he touches will be in a framework so he will be picking that up as well. So spaghetti code will definitely be a no go and would advise the same to anyone else getting a new developer started.
I like your list of principles and advice on ownership. As it is a grad student who will be going out in the wide world I am planning on giving him his own projects to own and let him present to me as the client to help him learn to take a project from start to finish.
You must be logged in to post a comment.