We all know and love the Joel Test
Joel Spolsky's quick quiz to determine the quality of a software team.
If you're searching for a job, it's a great idea to run potential
employers through the Joel Test.
problem with it, though. Well, there are multiple problems. First, who
the hell cares about hallway usability testing? Second, you're only
checking for the good qualities of a team. What about the horrendously
bad qualities that will eventually drive you towards both insanity and a
crippling dependency on cough syrup?
need something like the Joel Test to measure the potential crappiness
of a job, or else each of us might stumble into becoming Milton Waddams.
and gentlemen, I present to you the Codypo Test, aka 8 Questions To
Identify A Lame Programming Job. If you are in an interview, you give
the company the Codypo test, and the job scores more than a 1 or 2, you
need to pull the fire alarm and get the hell out of there.
1. Would I be paid below market rates?
they're looking for 10 years of hardcore, multithreaded C++ experience
and they're offering 48k, these people have lost their minds. Expect
this sort of delusional thinking to appear in everything they do.
2. Would I always be on call?
one likes being on call, because as soon as you're on call, someone is
going to page you at 3 AM on a Sunday because the Reset button on the
support portal is a different shade of blue than they're expecting.
Occasional on call stints are both understandable and tolerable, but
24/7 is for doctors and exorcists.
3. Am I the IT staff?
You are a programmer. You make software. You are happy to support your software.
does not, however, mean you are a computational master of the universe,
and just the guy to ask why the receptionist's laptop got all weird
after she installed that Garfield screensaver.
4. Would I work with a single monitor?
no longer 1998. We don't have to stare at a single 17" boat anchor all
day while rocking out to Smashmouth. You can buy huge, thin LCDs for
$100 each. If doubling your productivity isn't worth $200 to this
company, then this company may just be a really elaborate practical joke
played by an eccentric billionaire.
5. Will I be maintaining any ancient system, and what's it written in?
you dig deep, you may hear, "Yeah, we're going to get into Ruby on
Rails, but first, we'll need you to bust out some VB 4." It is never,
ever that easy.
That VB 4 system will refuse to die, just like Rasputin.
6. Would my internet usage filtered or monitored?
solve problems, and to solve problems effectively, you need resources.
The internet is the single greatest usage available. Any company that
refuses to accept that and blocks you from Usenet/ Google/Stack
Overflow/whatever is treating like you a child/deranged porn fiend.
7. Would I be the only programmer?
than anything else, I have grown as a programmer thanks to my peers.
We answer each others' questions, we review each others' code, we
whiteboard together, and we come up with creative insults when somebody
breaks the build. If it's just you, you're not going to get any
technical feedback and you're not going to get any better. Also, you'll
only be able to insult yourself when you break the build, which might
get you reported to HR.
8. Am I expected to travel every week?
bit of travel is necessary from time to time, particularly for face to
face meetings with customers or offsite colleagues. However, expecting
you to leave your home every farging week is absurd. We have the
internet now; it allows us to communicate virtually. Let's use that instead of me becoming BFF with the night receptionist at the Best Western.
think those 8 questions constitute a good sanity test for a potential
job. Sure, there are valid reasons for a job to score a 1 (eg, you
might be the IT Staff or on call all the time at a startup). However,
once you get past one Yes to these questions, it's time to leave the
interview through any means necessary, including faking a heart attack.
matter how great the potential projects and teammates might be, I don't
think you can do truly meaningful work in an environment where you, the
developer, aren't empowered to succeed. If a company doesn't get that,
then they don't get software.