67 comments

[ 3.3 ms ] story [ 126 ms ] thread
It's cute but it's probably not going to result in a job.
Well, as is pointed out, it will only result in a job if all the tests pass
The tests passing is apparently necessary, but by no means sufficient.
Maybe I'm being a little picky, but I don't find this very compelling. There are plenty of spelling and consistency errors. "Colaboration" is misspelled. The names "can_use_editor" and "is_acceptable_workstation" are inconsistent. It would be better to use "is_acceptable_editor" (or "can_use_workstation") for consistency. Actually, since those are calls on a company object, a name like, "allows_editor" would make a lot more sense. Coding style doesn't follow Python conventions (spaces around equals sign and after commas). The test "DynamicLanguagesAreInUse" doesn't clearly test what it says it's going to test. Also, the line numbers and lines don't match up in my browser.
not to mention his assertTrue's in testSystemsUpAndRunning are completely invalid. never in my life would i hire this person.

this should be a lesson: if you're going to do a "hacker" resume, it should be perfect and actually parse/compile and run. otherwise it looks like some lame gag.

and is putting things in "code" ever cute, clever, or funny? i submit it is not.

My big issue is that he comes across as an ideologue... I want flexibility from developers, not someone who makes very specific demands of our methodology.
Wait, he comes across as an ideologue for asking for an internal bug tracker and a source control system? Or that code be reviewed?

Wow...

"Windows? shudders", on the other hand...
Do you think you could elaborate? Coming off as inflexible or dictatorial was something I actually worried about.

The point I am trying to make is that there are certain minimum requirements I have of any employer, just as almost every job ad I've seen has a list of expected minimum skills. Would you work on software for a company that doesn't use version control? Being on HN is enough to convince me that you're smart enough not to.

On the other hand I wouldn't hire anyone who wasn't inflexible about having source control, defect tracking, CI, or code reviews.

What is important to me, however, is that you demonstrate a little pragmatism about us using Mercurial over Git, Hudson over CC, Jira over Bugzilla, <insert tool we use> vs. <your favourite tool this week>.

Although it would reflect better on you if your unit test were valid given an appropriate companies module, I really don't think you should be to worried.

> this should be a lesson: if you're going to do a "hacker" resume, it should be perfect and actually parse/compile and run.

It does parse/compile and run. Try it.

  Traceback (most recent call last):
    File "/tmp/resume.py", line 2, in <module>
      from companies import YourCompany
  ImportError: No module named companies
Am I missing something?
Yeah, you're so completely missing the point of his code that I have to question the intelligence of both yourself and everyone who's upvoted your message. Is this stupid night on Hacker News, or what's going on here?

(And yes, I'm 100% serious. Your reply is the dumbest thing I've ever seen on this site.)

Yup, the companies namespace is theoretical (containing presumably every company in existence) and contains a class YourCompany - that represents the interviewer's company.

Because companies doesn't actually exist there is an import error. If you were to create a class to substitute in you'd need something like:

  class YourCompany:
      def unit_tests_code():
          return True
      ...
And he should stick to one font in his real CV, it looks very amateur.
Yeah, in general I find the code not all that readable, despite that being the point.. This is a pretty bold, maybe even snarky, bit to pull.. and if you're going to pull it off it better be Beautiful Code.
The linked resume is even worse. That would be straight in the rejected pile, sadly.
Yes, this is quite embarrassing, especially the typos. I sent this to my buddy without expressing that it was still a work in progress, and he overzealously posted it here.

I've noticed the line number issue with certain browsers myself. I haven't determined if it is the css/html from pygments (the library I used to generate the html) or something I'm doing. Needless to say since I am still trying to flush out the idea, matching line numbers was low on my list, but if you can give me your browser/os I can see if it can test it out and possibly drop a patch to pygments.

I can appreciate that. I think we've all accidentally made something public at least once. I'm running Firefox 3.6.6 on Windows XP.
Shouldn't the

  company = YourCompany()
boilerplate at the top of each test method be factored out into

  def setUp():
      self.company = YourCompany()
mos def! it's a small thing, but maybe it says something about what he thinks about and values. seems like abstraction and code maintability and extensibility are not as high on the list as testing. tests are super important, of course, but anyway can write tests. quality, IMHO and in all code including tests, comes from good design.
Despite the spelling errors I really think that this is a very creative idea and would definitely result in a job.

Creativity is often the reason one is hired.

I liked it!

This isn't a resume or CV, it's a list of requirements for a potential employer. The actual 'resume' part was poorly formatted and overlong.

It would be much better if the resume was in code, that would be a cute gimmick. (i.e. self.knowsLanguages( ['Python', 'C++', 'Ruby'] ) )

However, tricks like this are great if other programmers are reading it, but can confuse HR people and easily get the resume tossed out.

Totally agree. Having seen a fair share of CV's that would put a flair to it, but also make the HR lady who's screening the CV's at BigCo go huh?.

Im all for redoing the whole CV as commenter suggests here and targeting the right people with it whilst making the "real" CV shorter and easier to read.

Point here is that both CV's should stand out from the stack, but in different ways based on the recipient

(comment deleted)
It's to bad that there is a glaring typo in the first sentence. If you are reading this, fix the spelling!

Or maybe it's a clever filter for people who focus on the wrong thing. ;-)

It's to bad that there is a glaring typo in the first sentence.

If you are reading this, fix the spelling!

(sorry, cheap shot!)

I have horrible grammar, so I was trying to help out my brethren! I hate that word. Its biggest problem is that it's a conjunction without an apostrophe. ;-)
Do programmers need gimmicks? Last time I looked for a job, it took 1 week. Certainly I'm no one special either.
Ugh, he uses Yoda conditions. If two, the value is less than, Jedi you will become.
Oh, I didn't realize that had a name! My boss does that, and it is incredibly irritating.
Until you're system is crippled by a bug as a result of not using them.
This is something that cannot happen in Python. Yoda conditions are entirely pointless in that language.
A good programmer looks both ways before crossing a one-way street.
A better programmer uses -Wall and lets the compiler check for him.
Confidence, n.: The feeling you have before you understand the situation
Not in this case, but Yoda conditions can be useful. The most common case is preventing accidental assignment when you are trying to check for the equality of values.

Say that you mean to do:

    if (something == 2)
If you forget an equal sign, the resulting code can lead to subtile bugs:

    if (something = 2) // Not what we meant
If you are using a Yoda condition and forget an equal sign, you'll get an error right away (so that you can correct it):

    if (2 = something) // Error
There are other use cases, particularly related to nil values, but this should show you the gist of it.
> Not in this case, but Yoda conditions can be useful.

Not in Python. Assignments as anything but stand-alone (potentially chained) statements are syntax errors.

The parser will not let you write

    if something = 2:
in the first place.
That's why I said "not in this case". There are languages affected by this though (typically C-based ones). Ideally, their compiler will give you a warning about it, but that's not always the case.
May be irritating for some but good practice regardless.

Putting the constant left in a conditional means you will never miss an accidental = instead of ==.

> Putting the constant left in a conditional means you will never miss an accidental = instead of ==.

That's only useful for dumb languages

    >>> a = 5
    >>> if a = 3: print 'ok'; else: print 'nok'
      File "<stdin>", line 1
        if a = 3: print 'ok'; else: print 'nok'
             ^
    SyntaxError: invalid syntax
Python simply does not allow assignments in conditional contexts.
Dumb is a strong word, young padawan.

The difference between theory and practice is smaller in theory than in practice.

> Dumb is a strong word, young padawan.

I carefully weighted my words, and I rest my case.

> That's only useful for dumb languages

The compilers/interpreters I know that don't do this are PHP and Perl (C/C++ will do it if you use -Wall, which you should be using anyway).

So yeah, you're pretty much right. /snark

Perl does indeed warn about the use of = instead of == in a conditional.
You're right; I didn't know about the -w setting. I guess that just leaves PHP.
That's like wearing a helmet while walking down the street because you might accidentally fall and hit your head.

Don't be an idiot in the first place and you won't have to do idiotic things to prevent damage from your idiocy.

    Good judgement is the result of experience.
    Experience is the result of bad judgement.  <-- You are here
I didn't know it had a name either. Because of that I read the line wrong the first time. (even though I knew what to expect…)
It's rather presumptuous and obnoxious though isn't it? A CV is a listing of your accomplishments and achievement, really. It's your platform to sell yourself to others.

This page comes of to me more as "Are you good enough for me"? which to be very honest sets the wrong tone to me when I wear my employer hat.

I'm not suggesting that shouldn't be a part of the process, but as an opening line it's a little off-putting even if we do meet the standard.

non PEP8 for mixedCase instead of CapWords for classes.
The class is CapWords. Of course the method names aren't PEP 8 compliant, but neither are the method names in the built in unittest library.
OP is right that this is a true hacker resume, in the sense that it's both technically interesting and ignorant of the social realities of applying for a job.

Also: the downloadable CV is more incomprehensible than the code. Bullets, people. Good employers are looking at hundreds of resumes for good jobs. If that one landed on their pile, they would not read it.

poor guy... having a little fun with his CV only to get mauled by the HN crowd. :-)

On a more serious note, not sure this resume would have made it past our HR person, who is not a programmer and wouldn't have understood this at all.