Over the past few years, my company has hired some questionable employees. People who have cracked under the pressure and quite, or more unfortunately, people who just didn't realize that they couldn't hack it and had to be fired. Firing someone is never fun and I am glad I am not the person who has to fire someone. After many rounds of this, I can't believe that we haven't developed a better screening process.
Now, we can't judge character, willingness to learn, ability to learn, etc. so well in an interview. But, I see no reason why we can't give interviewees a ColdFusion mini-test. Give them half an hour or something to tackle a problem so that we can gain some insight into where they are as a programmer and problem solver. In interviews, I always hated theoretical questions about pills and digital scales or programming with out conditional statements. Those are nice, in theory, but are useless when it comes to reaching client deadlines in a real-world scenario. We need something practical, something that will demonstrate the ability for a potential employee to program, reach goals, and solve problems with very real parameters.
So, what is important as a ColdFusion programmer? It's going to be different for all work environments, but this is a list of "programming activities" that I have to deal with quite often:
- File Read/Write/Parse
- Query Creation/Outputting
- Persisting Data
- Add/Modify/Delete Existing Data
- Text Manipulation
Looking at that list above, I have come up with a test case that touches all of the scenarios.
The program takes a tab-delimited text file (with no header row), reads it in, parses it into a query object. The query object is then cached so that the file does not have to constantly be read from with each page call. The query object is then outputted (not CFDump'd) on the page. For each row that is outputted, there is a "Delete" link which allows the user to delete a row from the data query. For each row that is deleted, the text file and the data cache must be updated. At the top of the page, there is a simple form (a field for each column in the text file) where the user can add a new row to the data. For each row that is added, the text file and data cache must be updated. Furthermore, the application should initialize itself anytime there is no data cache, or is manually re-initialized (aspect of the programming).
I think this example is small enough that it will not be overwhelming enough or take too much time. It is, however, broad enough to touch upon many important aspects of ColdFusion programming.