Greetings TDWTF! I've been reading your stories for a very long time, and I wanted to share some of my own.
I work in a tiny webdev agency in Eastern Europe (yes, among other things that includes PHP every day, cue all the witty remarks). We often have more work than we can handle, so we tend to hand some of it off to contractors. This is the story of the contractor we dealt with this week.
His CV included:
Perfect experience In:
PHP (OOP) 3 years
JavaScript (OOP) 4 years
CSS3 7 years
Frameworks (ZF2, YII, Symfony 2, Angular, Node, React, Bootstrap ...) 7 years
LAMP (XAMPP) 5 years
Linux Mint, Windows >10 years
(For those unfamiliar, LAMP/XAMPP is a package to get started with PHP. An equivalent for the Microsoft stack would be a tool that downloads and installs IIS, SQL Server Express, and a C# compiler, without Visual Studio or anything else, and then lets you start/stop/configure them. It's the recommended way to get started with PHP, but you're supposed to grow out of it...)
Despite the red flags of "what does perfect experience even mean?", "most of those frameworks weren't even out 7 years ago!", and "how can he have more framework experience than language experience?", the management decided to give him a try, because we were in a tight spot and (sadly!) there were no other candidates.
When we gave him a task, step 1 was of course to get the project running locally on his Linux Mint laptop. This did not go well:
- I had to tell him how to switch to another git branch (he claimed to be familiar with git during the interview);
- despite his "5 years of LAMP experience", I had to set up a vhost for the project, so that Apache would show it;
- when it generated errors instead of displaying the project, I had to look at his error logs to figure out that, despite his claim to be using PHP 5.x, his XAMPP was running PHP 7;
- his approach to switch to PHP 5.x was to uninstall XAMPP and install an older version that includes PHP 5.x;
- during the reinstall process, MySQL user accounts were reset, so the username/password that he swore was working, in fact, wasn't;
The process above took him a whole day, as well as half of my day, and he left promising to fix his MySQL and get it running the next day (he was going to work remotely). I explained the actual task to him, which he seemed to understand okay and said he'd deliver a solution by the end of next day. I had my doubts because I did not think it was such a simple task, given his competence so far...
In the morning, he called my boss and said "I ran into a permission problem, I'm switching my laptop to Windows".
During lunch, he called me and asked how he should deliver the solution. My answer of "make a new git branch, make your changes there, and push them" was the same as the day before, but this time it brought up a counter-question "how do I do that, and do I do it in <the task management system> or <the version control system>?". He still said he would deliver it by the end of the day.
At around 1 AM, he sent us an email saying "I don't know how you want me to deliver the changes, but I'm attaching them to this email". With one attached file.
In the morning, I looked at his changes. And I lost any faith I had left. He had added 7 lines of code, and in those lines he managed to make 3 syntax errors and call two non-existent functions.
When I said that his result was unacceptable, he insisted his IDE did not show any errors. Turned out his entire process for testing was to run the IDE's static code analysis and see if it reported any problems. I have no clue what he misconfigured to make it not show the errors, but when I pointed the actual errors out, he acknowledged them and promised to fix them by the end of the day.
Later he called again and said, quote, "I made the changes, but when I try to view them in the browser, my IDE says it can't save the project".
Fortunately, my boss (who, since this is a tiny company, is also the CEO) has decided to terminate this guy's contract on Monday.
Unfortunately, the client is insistent that this functionality must be ready in production by Wednesday. Fun times ahead!