1

On Friday I was given a project, creating an app and deploying it, to work on for a position that I applied for. I have now completed it but it is missing one aspect of it because I am not familiar with this layer of technology(TDD). What would be my best course of action? In my last email I told the hiring manager I'd shoot them an update on Monday. I have a few questions:

Should I email them and tell them I have deployed the app with no tests and will attempt to finish that within the next two days(approx.)?

Should I admit to not knowing testing?

Would it help if I sent my deployed app or should I wait to present everything altogether?

Thanks.

  • 6
    In TDD, the tests are generally written first before starting on the code. If they truly use that process, I suspect they would not be happy to hear you skipped the tests. – HLGEM Jul 13 '15 at 17:33
  • 1
    HLGEM is spot on, in this case. The very definition of TDD (test driven development) is that the tests are all written first, and you start slowly passing tests as you create more working code. Submitting the project without tests says "I don't know a key aspect of the job". You either need to learn TDD, or accept that submitting the project without the tests will likely cost you the job. If they didn't want you to do all of the work, they wouldn't have given it to you. – 404usernotfound Jul 13 '15 at 17:48
  • This is a junior position and TDD wasn't in the job add. So "better late than never" doesn't apply here? – user37719 Jul 13 '15 at 17:53
  • 1
    I would at least make some sort of attempt. Fake it till you make it. – crh225 Jul 13 '15 at 18:36
  • In my experience, communication added after the coding test is already over is worthless. – Robert Harvey Jul 13 '15 at 18:58
1

TDD = write tests first, then write code/functionality.

So it isn't a good situation if you submit your code with no tests at all.

Someone reviewing your project code as it currently is will see it as if you were asked "In English, write a 500 word essay about why you like development" and then wrote it in French.

If this was an assignment where they expected a TDD process for development, this is difficult to do in "reverse" and likely moreso if you are unfamiliar with it. It sounds like TDD was an integral part of this coding assignment that you knew about but put off until later (??).

I have now completed it but it is missing one aspect of it because I am not familiar with this layer of technology(TDD).

What you should have done (and still could do) was:

  1. Identify your lack of understanding (TDD)
  2. Researched this to better understand it
  3. Then begun development using a TDD methodology

Should I email them and tell them I have deployed the app with no tests and will attempt to finish that within the next two days(approx.)?

No, this will likely cost you the job. Think of the above English/French example for why.

Should I admit to not knowing testing?

If the job requires knowledge and understanding of testing, you should admit this now rather than later. You don't want to pretend you know something and then find out in the first few weeks of the job that you don't know what you made them think you knew.

Alternatively you could and should research testing and practice this.

Would it help if I sent my deployed app or should I wait to present everything altogether?

You probably should review what was being requested of you. If you have questions, make sure you first research those questions and understand what it is you don't know. Then, if you still have questions, you should ask for clarification or mention "I'm not familiar with this technology/approach but am more than willing to learn and have done X, Y, Z to research it so far."

  • Eh, not necessarily. TDD is also used to refer to automated-tests. Few people write the tests first, as especially in front-end development, it can be unclear what needs to be tested until you start laying elements down and setting behavior. – ngDeveloper Jul 13 '15 at 22:58
0

I'm going to go "outside the box" on my answer...your project is to do unpaid work for an employer for a job you don't have yet? Really?

I hope this is not the new normal in job application. Yes, I see the benefit to displaying your knowledge to a prospective employer. And if this is a test and not actual production work, then OK I guess. But if it's real work they are using to make a profit, this seems not only wrong but illegal to me.

  • 2
    A lot of job applications now require some sort of "take home" or code samples. – enderland Jul 13 '15 at 18:58
  • 1
    I found this to be more in entry level positions. and positions that have a way to high level of expectation for less pay. – crh225 Jul 13 '15 at 19:27
  • This is a test to show my ability. The will own the project after the interview. – user37719 Jul 13 '15 at 20:35
  • @user37719 - Did you sign any agreement that they take ownership of your work while not under their employment? – user8365 Jul 13 '15 at 21:02
  • No, just instructions on the project. – user37719 Jul 13 '15 at 21:18
0

Given some of the information in comments, I'd like to change my stance.

This is a junior position and TDD wasn't in the job add. So "better late than never" doesn't apply here?

I would say that it does apply here. If it wasn't in the job advertisement, it's not an automatic deal breaker for you to not know TDD. That being said, it is a deal breaker when a programmer doesn't test their own code. Check for accuracy somewhere, even if it's not explicitly TDD. This will help showcase your creativity and problem solving, and show that you can work around your gaps of knowledge. (Seriously, even a bunch of comments with hand calculations saying "Program spec says y = a + b, so for a = 1 and b = 2, y = 3. Program output matches.") Put something in the program to show you tested it, even if you didn't test it their way.

THEN offer to test it their way. Approach it from a "I did this to the best of my ability, however if you gave me greater detail about your TDD methodologies, I would be more than willing to incorporate them." This shows you're eager to learn and assimilate to their culture.

Basically, yes, you need some tests... but it isn't because of the employer. It's because every programmer should be testing their code in some way; if you aren't testing it at all, there's a much, MUCH bigger issue at play. If you can't test it with TDD, admit that, tell them what tests you did as a workaround, and offer to do it their way, if they want you to.

0

You didn't do TDD.

  1. Did you do any kind of testing at all? How does the boss - and in fact, anyone else - know that your code is doing what it is supposed to do? Hint: you staking your life on your code being right is not good enough, we can make you die only once and after that, any problems with your code are ours :)

  2. TDD is not hard, it's the way that TDD is taught that stinks. How does you know any function you designed is doing what it is supposed to do? Hint: design tests for the extreme cases, a common cases and corner cases - corners cases occur whenever you have branching e.g. "if" or "while" statements in your code.

Anybody who reviews you code has to have something more tangible than "I have faith", "I wish", "I pray" or "I hope" Hope is not a strategy and prayer is not a method.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.