In honor of my recent job hunt, I thought I might relate my worst interviewing experience as a job candidate. It’s not that entertaining a story, but it was definitely painful to go through.

It was around 2005 when I applied for a job at Macromedia’s office out in Newton. As it happened, this was just before the company was swallowed by Adobe.

The job was really cool (for that time): lead designer for a new product that would revolutionize the web by giving developers the ability to programmatically create and script dynamic forms and interfaces. The web had begun to evolve beyond static pages, toward more dynamic behavior and interactivity, and the question was whether that would be based on dynamic HTML or something like Macromedia’s successful Flash animation suite.

Naturally, Macromedia wanted to push Flash, but its authoring interface had been designed specifically for the workflow of an animator; they needed to create a new tool that would allow engineers to write programs that could build forms and dynamic pages on the fly. And that’s where this new product—called Flex—would come in. And they were hiring for the lead designer on an ambitious second version after a promising but not very useful proof of concept.

So I showed up at the Macromedia office at about 8:40am. Due to my own conservatism, I was about 20 minutes early for the scheduled 9am interview. Unfortunately, the office was still dark and locked up; no one had arrived yet. No biggie, I’ll wait.

And wait.

And wait.

The first person to show up—a secretary—didn’t come in until 10am, an hour after my presumed interview. She spent some time trying to track down the manager I was supposed to see, and eventually told me that he was “running late”. How helpful! At least she let me into the office to wait.

And wait.

When he finally arrived around 11, he told me that he had a meeting to run to, and asked if I would mind interviewing with two programmers on the team. It was immediately clear that neither of the developers had any idea what the position was about, nor did they have any questions to ask. We managed to kill an hour, achieving absolutely nothing. With the manager still unable to meet with me, they sent me home with apologies.

Despite the fact that the hiring manager had scheduled my 9am interview time, after over four hours on site I went home, having gotten less than 30 seconds of his time.

Needless to say, that made an indelible impression on me! Definitely not the best way to show a candidate that they’d be a valued member of the team.

And now, just to be a complete contrarian, I present some frontend-tech-oriented “your mama” jokes. We assure you that no mamas were hurt while composing this entry.

HTML-oriented:

  • Your mama’s got a really big <body>.
  • Your mama’s got no <head>!
  • Your mama’s just an <object>.
  • Your mama’s a <sub>.
  • Your mama’s got no parent element.
  • Your mama’s value attribute is set to zero.

CSS-oriented:

  • Your mama’s got no style.
  • Your mama’s got no class!
  • Your mama’s width is 110%!
  • Your mama exceeds her max-width!
  • Your mama’s got too much bottom-padding...
  • Your mama’s got her overflow: visible.
  • Your mama’s so easy she’s got a negative z-index!

Other tech-oriented:

  • Your mama’s got such a regular expression.
  • Your mama’s got an out of date plugin.
  • Your mama’s a vector shape, and she looks like somebody’s been draggin’ her handles…

And yes, your mama floats right, too!

There really needs to be a corollary to Newton’s Second Law of Thermodynamics, stating that website maintenance is a constant (and un-winnable) battle against the Stupid introduced by other people.

Usually this involves a lot of quiet fuming while cleaning up the garbage left behind by the incompetent agents of entropy. But sometimes the Stupid is just so ludicrously headdeskingly perfect that there’s nothing you can do but laugh until you gag on your own puke. All the while, marveling at the “mysteries of the universe”.

For example, consider the following. While working on something, I once came across the following block of code on a production website:

$rss_feeds = "";
echo $rss_feeds;

Now, even if you’re code-illiterate, you can probably figure out what this does. It sets a variable to nothing and then prints… nothing.

Why? No reason. The only thing I can figure is that someone hired a contractor and paid them based on the sheer number of lines of code they produced.

Now, before I lose all the non-coders in the audience, here are a couple examples where people chose to demonstrate their mastery of their native language. For example, take this headline that appeared in a second-level heading on one page:

Private vs. Gevernment

Or this major announcement:

Without further adieu [...]

Or this favorite job listing of mine:

[...] is currently seeking a Senior FrontEnd Web Developer with 710 years of professional experience

Working our way into the code doesn’t have to be painful, though. How about this one: Need to name a file? Why not name it after your own awesome self?

$fileExt = 'markrules';

Another one that is easy for non-coders is this one:

<div id="left_content" class="right">

Yup. In the Stupid Universe, left is right and right is left.

Now how much would you pay? But wait: there’s more!

<?php //    include('ad_med_rectangle.inc.php'); ?>
<?php include('ad_med_rectangle.inc.php'); ?>

In PHP, two slashes are used to comment something out. So here we have a line of code carefully commented out. And then the exact same line, not commented out. Um… huh?

Speaking of comments, try figuring out what this one does:

$form->addElement('hidden', 'xzdf', 'A3104', array('id' => 'xzdf'));

Using names or key values with self-evident meanings is really overrated. The Law of Stupid instructs us to use completely nonsensical names, and make sure you don’t leave any comments in the code that might explain to the people maintaining your code what those random numbers and strings of characters actually mean!

And then there’s this mystery of the universe, a perennial favorite:

$term = ereg_replace("hero", "elongated sandwich", $term);

I can’t tell you why this site has such a strong aversion to heroes, but it’s clear that any time we find the word “hero”, we replace it with our preferred term “elongated sandwich”. No reason; we just do. No hero worship allowed here!

Here’s a fun one!

.blue_button {
    background: none repeat scroll 0 0 #ED8D1E;
}

Blue_button, huh? You might be forgiven if you thought that might actually show a button that was blue. But that background color of #ED8D1E? That’s dark orange. OF COURSE!

For some reason, “switch” statements seem beyond the grasp of many well-compensated “engineering professionals”. I’m not sure why it’s so difficult to do different things depending on whether a variable has a value of 1 or 2 or 3, etc. Is that so hard? Apparently it is. Here’s a nice example:

case 1:
     $url = 'http://www.awebsite.com/';
     break;
case 1:
     $url = 'http://www.awebsite.com/';
     break;
case 1:
     $url = 'http://www.awebsite.com/';
     break;
case 1:
     $url = 'http://www.awebsite.com/';
     break;
case 1:
     $url = 'http://www.awebsite.com/';
     break;

That’s a double dose of Stupid! Here, all the cases do exactly the same thing! But that’s okay, because they all test against the same value, too!

In plain English, it translates thus: if it’s a 1 you do this; but if it’s a 1 you still do this; or if it’s actually a 1 you would also do this; and if 1 you do the same thing too; and so on. That’s seventeen lines of code to do what requires only one. See what I mean about someone being paid per line of code?

Of course, that only works if you want to do something. Truly masterful Stupid code does nothing, like this switch statement:

switch($page[subnav]) {
}

Huh. Only outside of the Stupid Universe is it customary to write code to actually *do something*.

Of course, junior developers often aren’t wise enough yet to disguise the fact that they’re doing nothing. Consider this:

 

Yes, that’s nothing. That’s the whole contents of a file I found called small.css. Small, indeed! Perhaps they thought they weren’t leaving any evidence of their stupidity behind.

Here’s some additional CSS-flavored fun:

<div style="clear: left;"> </div>
<div style="clear: right;"> </div>

More from the Planet of the Confused: why not just do “clear:both”? Oh yeah, it’s because YOU HAVE NO IDEA WHAT YOU’RE DOING!!!

ttable tr td.odd {
     border-left: 0;
     border-right: 1px solid #fff;
}

Did the W3C create a new HTML tag (ttable) and I missed the news?

p.margin-left {margin-left: 15px; padding-right: 15px;}

So let me get this right: a paragraph called “margin-left” actually has equal margin on both sides? But on the left it’s a margin, and on the right it’s padding? That makes perfect sense, especially if you don’t understand basic HTML page layout!

Here’s an exemplary 12 lines of masterful coding:

if (isset($page_close)) {
$page_close .= <<<EOD
</body>
</html>
EOD;
} else {
$page_close = <<<EOD2
</body>
</html>
EOD2;
}
echo $page_close;

That’s just another example of how these guys clearly were getting paid per line of code. No matter what $page_close is set to, what those 12 lines of code really do is this:

</body>
</html>

No need for complex logic or any dynamic behavior. Good thing they inserted an extraneous IF/ELSE block, two “here quotes”, and echoing a variable, because how else would one know they were such masters of PHP syntax?

if (test_it_counter == 0) {
   computeForm(entry.form);
}
computeForm(entry.form);
test_it_counter++;

So the first time through this program, computeForm() get run twice in a row, just for kicks. I’m sure that works just great! I wonder why they didn’t run it twice every time?

<div id="nav" onmouseover="Tip('#nav { <br /> <var>float:</var> left; <br /> <var>width:</var> 788px; <br /> <var>height:</var> 36px; <br /> <var>margin:</var> 0; <br /> <var>padding:</var> 0; <br /> <var>background:</var> #fff url(images/navbg3.gif) no-repeat; <br /> <var>text-align:</var> center; <br /> } <br /><br /><cite>Note the hover action. </cite>')">

I have absolutely no idea what the coder was thinking here. If you hover over a nav, it displays a tooltip with a bunch of CSS code (which actually doesn’t get used and doesn’t appear anywhere in the page) and the message “note the hover action”. Glad that has been running out on the production web site for four or five years

My final example is a solve-it-yourself problem. Are you ready for a developer challenge? How long does it take you to spot the Stupid in this statement?

<?php if ($isForm = false) {

This one’s an all-time classic and a personal favorite. When comparing a variable to a literal, professional software engineers always put the literal first. Do you know why? Well, the above is a perfect illustration why. The reason why will be left as an exercise for the reader.

Frequent topics