Loading ...
Sorry, an error occurred while loading the content.

The amazing misunderstanding of XP

Expand Messages
  • Jerred Cook
    Hello everyone, I received this email reply from a candidate that I rejected. I removed all references to the candidate s name. We are an XP shop and I give a
    Message 1 of 49 , Jan 25, 2006
    • 0 Attachment
      Hello everyone,

      I received this email reply from a candidate that I rejected. I removed all references to the candidate's name.

      We are an XP shop and I give a small take home project as part of our interview process. I wrote some feedback to this candidate as I felt it proper given the fact that the candidate took the time to complete the project. Maybe in the future I won't offer feedback!

      I offer this to everyone on this XP list as evidence of the mindset that we are up against. I especially am discouraged by the line "my difficult to be refuted observations" which shows that this particular candidate has done no reading or has processed nothing from the reams of free online documentation about XP. This person really believes what they are saying!

      Here is the candidates' response:

      Thank you for the opportunity that you offered me to write that test program. I'm convinced that you will find another candidate whose skills and style will fit your requirements. I wish you good luck.

      This is where all rejected candidates stop, usually.

      And now, I will do a quick analysis of your initial inquiry and feedback. I will put together some statements of yours.

      "Keep in mind I am looking for 2 things primarily:

      1. OOP - I am looking for excellence in Object Oriented Programming skills.

      2. TDD - An important principle of eXtreme Programming (XP) is Test Driven Development (TDD). I will only hire people committed to these engineering principles and TDD is (in my mind) one of the most important.

      One of the principles we like to follow is to keep things as simple as possible. Your code sample was much more complex than necessary."

      Here is a major contradiction: the Goldbach conjecture plus the unit testing occupy about 255 lines of code. The rest of the lines are just supplementary tests (for the list of numbers: 2, 3, 4, 6, 98, 198, 1098, 5634, 11112 and 123896). So, you pretend the candidates to show their OOP and TDD skills in less than 255 lines of code, from which a lot are empty lines. Perhaps if you saw a compact block of one class, with 60 lines of codes, full of << and >> operators, you would say this is a solid OOP evidence. If you affirm that evidence of excellent OOP programming can be shown in only a C# class with such a small lines of code, that implements this conjecture, I get exactly the size of your OOP horizon. Believe me that, if I wanted to make the code complex, I would add unit tests for multithreading access to Check method in GoldbachConjecture class. A requirements that is mandatory when you go to an interview at a big company like Bloomberg, BoA, UBS, AXA, etc. But your company does not encounter this complexity of software development, of course. What you call "much more complex", I call "proactiveness".

      "It also took over an hour to complete one of the tests."

      If you can make a simple program to verify the Goldbach conjecture, without involving distributing computing, without consulting Knuth's book for the lowest order of complexity, without plagiarizing any technique described on the Internet on this matter and the TDD to take less than an hour for 999992, which you did include in the requirements, you have my applauses. Until then, I have big doubts that you even tried.

      "TDD tests should never take more than a few seconds to run."

      Tell this to Merill Lynch, Goldman Sachs, ITG, etc. when they do Monte Carlo simulations.
      TDD is not something that consumes about 50% of the development time just for the sake of unit testing. The real results are to be shown at Integration, System and Regression. You obviously do a bad job in identifying this.

      "Tests should also be a separate class as a rule."
      There is no such rule in TDD testing. It's just a preference of some groups of developers who don't have a solid knowledge of the VS environment and never heard about #region keyword.

      "Final Note: Please do NOT spend time on a user interface to these problems. You can accomplish everything you need by writing tests for NUnit to run. Create a new C# Class Library project and use NUnit to run all of your code.

      A minor point would be that the PrimeNumbers class does not need to be a singleton."

      I created the singleton just to show you how inappropriate and awkward the NUnit can be for a class with a Microsoft recommended OOP C# design. You did not get it. I exercise the liberty not to tell you which one is the best.

      Not to make my feedback more peculiar than it looks like, but based of my difficult to be refuted observations, you have to admit that your evaluation and feedback are objective and hide other reasons for not being offering me a chance to be interviewed by your company. This is not so concerning, however, as only 4% of out-of-networking interviews have a happy end. Just to make the point that, after such evaluation techniques and "well-founded" feedback, it should not surprise anyone why the software development and QA from this country are massively migrating oversees.

      Frankly, after I realized these facts about your company, I feel relieved that we haven't reached a more advanced stage of discussions.

      Please remove my resume information and the source code from your company's storage, whatever and wherever it is.

      No reply is required (or wanted).

      Jerred Cook
      Director of Technology
      CrossBorder Solutions
      Note: The information transmitted is intended only for the person or entity
      to which it is addressed and may contain confidential and/or privileged
      material. If you are not the addressee indicated in this message (or
      responsible for delivery of the message to such person), you may not copy,
      disseminate, distribute, disclose or deliver this message to anyone. If you
      have received this communication in error, please notify CrossBorder
      Solutions immediately by replying to the message and deleting it from any
    • whojgalt04
      ... could ... candidate ... It wasn t pair programming, but in the last job I had, I later found my interview test code in the production system. I looked at
      Message 49 of 49 , Feb 7, 2006
      • 0 Attachment
        --- In extremeprogramming@yahoogroups.com, Larry Brunelle
        <brunelle@...> wrote:
        > Steven Gordon wrote:
        > > I wonder how much of the code produced by pairing with candidates
        > > actually be leveraged. Would there be an obligation to pay the
        > > for an hour of work if the code developed in the pairing session was
        > > actually used?

        > o Regardless of good faith, who DOES own that code?

        It wasn't pair programming, but in the last job I had, I later found
        my interview test code in the production system. I looked at it as a
        compliment, but it did strike me a little off, and I still joke about
        how they used me...

        I'd say that the upstanding way to do it is that the test code is
        destroyed, except for maybe a printed copy in the employee's file, and
        if he is hired, then he can do it again "for real" once on the job if
        needed. It just avoids any misunderstandings or temptations that way.

        --Kyle Bennett
      Your message has been successfully submitted and would be delivered to recipients shortly.