We were interviewing tech lead candidates last week, and on a whim I decided to print out the Scientology âWhole Trackâ Security Check as an amusing prop. The check is a list of questions that are supposed to encompass all your past lives, and includes such gems as:
Did you come to Earth for evil purposes?
Have you ever enslaved a population?
Have you ever made a planet, or nation, radioactive?
The idea was that I would leave the printout in a prominent position next to all my other papers in case the candidate got a little too curious. During the course of the interview, though, this question caught my eye:
Have you ever done anything which you hoped would be wiped out by the passage of time?
So I asked it1.
Unfortunately, I think the shock value of the question (and the fact the other interviewers laughed when I asked it) made it less than useful, but for the record here are the answers I gave when later the question was turned around and directed at me.
Donât Try This at Home, Kids
Somewhere deep in Confluence there is a block of code that, through reflection, messes with the private internal state of a core Java library class, amongst other things causing it to disobey an IETF RFC. Above, there is a comment that still gets me in trouble with my co-workers: âThis is a truly egregious hack. Please don't do anything like this in your own code.â
AbstractPage
The initial cut of the blogging code in Confluence was developed in a rush. 1.0 was approaching fast and one of our early adopters had flatly said they weren't buying the final release if it didn't have blogging in it. As a result, I made one of the classic mistakes of object oriented programming and used inheritance where I should have used delegation. The tendrils of this mistake still creep through a large portion of the product's content-handling code, and make it a lot harder to add features in that area than it really should be.
The problems arose from the fact that I was (1) young, (2) underpaid and (3) firmly believed I was getting a new job soon and would thus never have to maintain this script. As a result, I committed some egregious and entirely deliberate crimes against maintainability:
I decided this was a great opportunity to teach myself OO Perl, despite not really understanding OO (or Perl, for that matter)
One method required five local variables, occasionally swapping their values. I called them $binky, $banky, $bonky, $bunky and $benky
Many functions were named after the song I was listening to at the time (see above).