For tech tests longer than 1 hour, would it be okay to send an invoice (VAT exempt; personal)?

For questions read from sheet of paper e.g. what is an abstract class, I think I've only used it a couple of times in actual work previously, so would probably have to Google it. Actually, I tend to Google most things. Would it be okay to have Google open during these types of interview questions?

I'm not good at white boarding type exercises either. I can do FizzBuzz though, but I reckon that's because I memorised it some time ago (after Googling it). Happy to do these but will need internet access and no time limits.

I've worked on quite a few actual commercial real-life projects which I can talk about instead - I think it might be more relevant. Open to senior back-end roles (APIs, PHP, Laravel, CI/CD deployments and cloud infrastructure etc) - cheers.

Will there be any issues applying for such roles? I have done this work for nearly 10 years, but I am a bit confused by some of the recruitment processes because they are asking things I don't remember or it does not fit the job description or takes too long. Am I being unreasonable to raise above concerns? I have full-time work and family and difficult allocating more than 1 hour to each application's technical tests.

EDIT: To clarify, I am the one applying to roles and getting interviewed by clients. These are contracts and sometimes perm roles. But recently many roles are doing graduate scheme type assessments and I don't understand them?

  • 36
    I hate to be that guy, but... if you can't write even FizzBuzz without looking it up and memorizing it, are you sure programming is the right line of work for you?
    – ojs
    Feb 5, 2021 at 9:58
  • 14
    @Tinlozara take a Coursera or similar course. Or start hacking away at Project Euler puzzles. Or buy an algorithm textbook and do the exercises after reading each chapter. The point is that fizzbuzz and similar questions are not intended to be serious algorithm questions but the simplest possible question to determine if the applicant can program at all.
    – ojs
    Feb 5, 2021 at 10:58
  • 8
    These onerous time-wasting tests endemic to coding jobs are a social problem that can only be fought with worker organisation (unions, strikes etc). There's nothing we can do as an individual besides a) join || radicalise || form a union and b) telling employers who demand you waste your time to get ****ed.
    – iono
    Feb 5, 2021 at 12:50
  • 6
    If you take the test and get the interview and the interview with one person from HR and two other engineers does not go as well and the company decides not to hire you do you then want the company to bill you for the wasted time of 3 employees + preparation and discussion time?
    – luk2302
    Feb 5, 2021 at 17:36
  • 6
    I'll be honest: If you've been programming professionally for 10 years and only used an abstract class twice, you're not a very good developer. That, amongst other very very VERY red flags in this question leads me to say: Find another line of work, this one is not for you.
    – Ertai87
    Feb 5, 2021 at 19:10

7 Answers 7


I think I understand now based on your comments.

You are taking tech tests and it's taking you a very long time and you're wondering if you should bill them for your time. My thoughts: skip interviews that require you to take a very long test. Especially if you haven't even spoken to the person yet.

There was this one time I was given a task before the interview and I estimated it would take me about 8 hours to do. I simply wrote back that it would take me too long to do and I'm not even promised an interview.

Also in some rare cases, smaller shops will use this as a way to get labor. They would ask you to do a small task, and then they would plug it into their systems. It's free work.

So I recommend not doing the work if it is taking you a very long time. Or if they are giving you a very large source code and asking you to change it around obviously trying to get free labor.

  • 1
    Many thanks for your advice, it is better for me to skip 1-week technical tests? Problem is I work full-time and have family, unfortunately all my projects are commercial projects. I am sorry not able to allocate 3 hour or 1 week to tests, but I'm happy 1 hour tests unpaid if possible. Should I say 'no' refuse to all applications if test 3 hours / 1 week?
    – Tinlozara
    Feb 4, 2021 at 21:06
  • 1
    Yes I have not spoken to the clients either, they say they are HR department and would like to test my ability to make a MVC framework with API and front-end to consume it, but this is taking me too long.
    – Tinlozara
    Feb 4, 2021 at 21:07
  • 3
    If you don't have enough time available to do the task then you'll have to refuse. 3 hours is a bit long for a task depending on a few factors, but not ridiculous. 1 week is ridiculous and nobody could fault you for refusing to do a task that long!
    – JDL
    Feb 5, 2021 at 11:08
  • 8
    @Tinlozara Companies will usually adjust their tests so they don't take more than an afternoon for a developer of the quality they are looking for. If it takes longer for you, then you are probably not at the technical level that they are looking for. If they are giving you a test that even a good developer will need more than an afternoon for, either you misunderstood the requirements or they are unreasonable and you might as well decline anyways, because unreasonable recruiting is rarely followed up by reasonable business practices. MVC, API and JS frontend would be ok for a senior though
    – user90896
    Feb 5, 2021 at 12:45
  • 2
    @Tinlozara Yeah, if you're being asked to do an entire week to something, and you're not in any particular stage of the interview process, I would just skip it and go elsewhere. I mean if you're going to google, microsoft, or Amazon, I might understand the high level of tests. But if you're just going to some random place and they require you to do a full 40 hours of work before they even talk to you, then yeah, I would just skip it.
    – Dan
    Feb 5, 2021 at 14:32

As someone else has already pointed out, unless you've agreed up front that you will be paid, you should not submit an invoice. I doubt anyone would pay it and I suspect it would put you out of the running for any role no matter how well you did on the test.

I wanted to pick up on some of the other things you've written though...

You say that you want to apply for senior back-end roles, but you would have to google most things including what an abstract class is. Whenever I interview someone I always let them have access to Google - we all use it day in and day out so removing it isn't seeing how you'd perform on the job. What I will do though is watch what you're Googling, and if it's something as basic as an abstract class, you're not senior. Whereas using Google is part of the job, part of being a senior is having a decent base level of knowledge.

You also say you're no good at whiteboard exercises. Being able to scribble down ideas and clearly and concisely explain them to other people is something I fully expect of a senior developer.

I can totally understand not wanting to spend 3 hours on a technical test after a draining day at work, but given what you're written in your question and some of your comments, I can't help but think you're applying for the wrong level of position

  • 22
    Not being able to write FizzBuzz as a senior also sets off alarm bells for me. FizzBuzz is meant to filter out people who can't code at all. A junior should be able to write a simple FizzBuzz...
    – MrZarq
    Feb 5, 2021 at 10:00
  • 2
    Agreed.  I wouldn't expect people to know obscure bits of API without Googling.  But not knowing what something as fundamental as an abstract class is (let alone being able to explain it simply) would be a big red flag!  Similarly, I wouldn't penalise someone for failing to write perfect, compilable code on a whiteboard (though a good developer would often get fairly close), but inability to explain rough ideas in simple pseudocode would be a warning that their ability, knowledge, and/or experience just doesn't match up.
    – gidds
    Feb 5, 2021 at 12:45
  • 8
    Let he who never forgot how to get current date in SQL cast the first stone... Feb 5, 2021 at 14:02
  • 3
    @Davor unless they code in assembly and C, of course ;)
    – Mołot
    Feb 5, 2021 at 17:13
  • 2
    @Mołot Long ago, I was working on a large software project where, eventually, we discovered that we had designed and written the whole thing using OOP principles, about 20 years before the term OOP was even invented - and the code was in Fortran (and this was before even Fortran 77 was a standard, let alone Fortran 90 or 95.).
    – alephzero
    Feb 5, 2021 at 19:07

Interviews are a two-way street so you are free to ask an employer to make accommodations for you. But that also means that you're going to have to be willing to jump through at least most of the hoops that an employer wants you to jump through. If either side thinks the probable reward isn't worth the effort, they're free to stop the process at any time.

Sending an invoice without discussing it with the employer first is unlikely to go over well (and unlikely to get you paid). You probably wouldn't appreciate getting an unexpected bill from the company for the time they spent preparing for an interview or reviewing your submission. If you look at a technical test and want to negotiate an agreement with the company to do it on a contract basis, you are absolutely free to do so. I doubt you'll find many employers willing to agree to your terms but you are free to negotiate if that is your requirement. If you have public examples of code you've written, you can ask the company to review your GitHub repository in lieu of doing a their technical test.

Having Google open and doing searches during a phone screen (I assume) would also be unlikely to go over well. We all Google things from time to time. And no one expects a candidate to have a perfect answer to every question. But most employers would expect a senior developer to have at least a basic understanding of features of their primary development language. You may not use an abstract class particularly often and you may not know every last intricacy of how they work but a senior developer probably ought to have heard of it and have at least a vague understanding of where they might be useful.

If you're going to go to an interview that involves whiteboarding discussions, you can certainly ask about getting internet access. That's not something I've personally ever seen done but interviews are a two-way street and you can certainly ask. The intent of a whiteboarding session, though, isn't to get syntactically perfect code, it's to allow the interviewer to see how you think through a problem like you would if you and a colleague were trying to work through how to make something work. I'd assume that if you were trying to explain to a junior developer how to implement something that they were struggling with that you'd be able to sit at a whiteboard with them and walk them through the algorithm rather than just sitting down and Googling the solution every time. Do realize, though, that if an employer gives you internet access, they're likely to ask much more difficult questions than they would normally (and be much less tolerant of mistakes).


Multi-hour tests are ridiculous and should simply be refused - but are you sure they're multi-hour tests for everyone? I don't wish to discourage you, but have you attempted to evaluate your knowledge/skills/experience objectively? Needing to memorize fizzbuzz does not really go with someone who is looking for a senior back-end role, as you claim to be. In fact, if I may be blunt, tests like fizzbuzz - and so on up to about an hour - are assigned precisely to weed out people who claim to be senior-level but, in fact, aren't.

A problem with asking for unlimited time and unlimited Googling for whiteboard problems is that whiteboard problems are designed to let you demonstrate your own thinking processes. They work best when they're offered to a person who hasn't seen the problem before so that it is clear to the interviewer that the thinking process they've watching the interviewee perform is their own, and not simply a demonstration of search prowess + cut/paste. It is true that some people perform badly under that kind of pressure and therefore are penalized by many interviewers - I had a good friend who was a very capable engineer who suffered from that - but if that specifically is your problem then you should work to overcome it rather than ask for exemptions - because that's the way it's done and you are unlikely to convince anyone to change their behaviors to accommodate you when it works for them so well with so many other people.

Finally, the problem with offering to discuss projects you've worked on instead of doing a technical test is that it is time-consuming for the interviewer (and their time is extremely limited when you consider how many applicants there are for each position) to drill down sufficiently to figure out precisely how much of what you're talking about was your own work and reflects your own ability as opposed to that of the team you were on. These discussions are important to the interviewer to learn more about you, but as they're expensive they'd prefer to spend their limited time on those candidates who have already cleared a technical bar.


Are homework tests longer than 1 hour common/acceptable?

For certain companies / roles, Yes.

If you are applying to an agency that works on mostly small projects, than 1-hour tasks are more than enough to test you, but for product companies that have complexity, it is often the case that they need to test multiple aspects of your abilities.

Can you invoice companies?

Yes, as long as you communicate that from the beginning, or simply applying only to companies that pay for homework tasks such as Hotjar

Most companies do not agree to pay for my time, what should I do to still get a good job?

Instead of applying to 20 companies you barely know, and be willing to invest 1-hour/company, apply to two companies you are truely interested in, and invest 10-hours in each (whether in homework task, customizing your CV to the job post, reaching out to their engineers on LinkedIn, calling the recruiter and asking for advise on what they are seeking in a ideal candidate)

Final notes

Getting a new job is alot of work, focus your efforts on the companies you are truly interested in, put in the effort to study for the interviews (through books, practicing your coding skills, and reading about others' experiences), and do know that luck is a factor because humans are terrible at judging other humans.


Are you being unreasonable? Maybe not.

But are you making a smart decision? Unlikely.

By all means ask the company, at an appropriate point in the process, how long their technical tests take and whether they compensate people for the time.

But the vast majority of companies do not. And any company that doesn't already do it is highly unlikely to change their policy for you. So unless you're willing to walk away from 90%+ of interview processes, it's best not to ask in the first place.

It would definitely not be ok to send an invoice unless you had agreed it in advance with the company.

  • 1
    Many thanks for your advice. Is it okay that I can ask the clients to look at my commercial projects or reduce tech tests from instead of 3 hours or 1 week, but just 1 hour instead? Because I have full-time work and family also, it is not possible for me to spend 3 hours or 1 week unfortunately.
    – Tinlozara
    Feb 4, 2021 at 21:04
  • @Tinlozara I would definitely push back at any test more than an hour or 2, unless you've already gone through several interviews and this is more of a 'final sign off' test than a screening test.
    – Kaz
    Feb 4, 2021 at 21:07
  • 1
    Thank you friend, these are happening to me before I talk to anyone in the engineering team. They say it is HR first stage, and so some confusion. Problem is I also apply for many roles, so it is not always practical unfortunately because maybe 3 tests would be about 2 days of unpaid work
    – Tinlozara
    Feb 4, 2021 at 21:13
  • Paying someone like that can be extremely complicated, in fact. In my part of the world, a company can't hire as a part time contractor (so basically someone who does X for 2 hours and they pay you $100) someone who performs the same primary business, they have to hire you as an employee. This was done to close loopholes where companies weren't paying benefits to people. And since OP is a programmer and applying in programming companies... this would get complicated fast.
    – Davor
    Feb 5, 2021 at 14:43
  • @Davor Can it not be billed as expenses, the same as offering to pay someone's travel costs or hotel bill?
    – Kaz
    Feb 5, 2021 at 15:04

Heh ... I very-recently had a most interesting personal experience with this one. The prospect presented me with "a test" that actually consisted of creating a PHP website with a login page and a very elaborate landing page that was supposed to very closely match an existing page from the company's own site.

And ... "wanna know where things started to get really strange?" When I did "my usual obligatory search of github.com", I actually found there a complete solution! And it happened to consist of more than 4,000(!) lines of PHP code!

(I idly wonder how many of the people that they did hire, thought to do the same thing. Also... "why in the heck was it on github(!) in the first place?") I have no idea.

Of course I said: "No thanks."

"I wish them the very best of success in whatever-it-is that they do," but at that moment I lost all interest in actually working for them.

Well, I've been (koff, koff ...) "around this crazy business" for (koff, koff ...) more than 30(!) years, but – "this one was a first." 🤡

  • In what way does this answer the question? This is just an anecdote without any actual info the OP can base their decision on.
    – luk2302
    Feb 7, 2021 at 12:20

Not the answer you're looking for? Browse other questions tagged .