I am looking for a job abroad (senior Java developer). There are companies that hire from abroad, and have a practice of assigning homeworks.
The problem is that the assignment is typically extremely vague. There are just 3 to 5 sentences about the requirements regarding level of abstraction, coding style, usage of newest language features and APIs, precompilers, expected quality level and such. And these are as vague as:
Whilst we encourage you to use the new Java 8 Stream APIs and lambdas try to avoid code that is more functional than object oriented.
Make things as simple as possible and as complicated as needed
The goal is not to cover every potential level of abstraction you may need in the next 5 years but the levels you think make sense today given the current scope of the application.
When I asked for the scope, they told me (towards the end of a good and friendly Skype interview) that "It should be under 8 hours, 4 hours if you're experienced".
No mentions of whether, how and to what extent the code should be tested; no coding style, no formatting. Some companies don't even tell target language/platform version preference. When you ask, the person from (I assume) HR tells you that would be "telling you the solution".
When I'm done with the projects, the response is, for some companies, "You're a rock star, we want you", and for others, "we expected more" and end of communication. And I followed roughly the same standards. Once when I asked for some more explanation, I only get an email with bullets:
- the project is not well structured
- code is not clean
- Spring usage
- API design
When I asked again what they mean, since other companies take my code style as good one, I get:
In my opinion it always makes sense to write proper code. You were asked to provide a decent project to show you coding skills which we then can review. This is about style, structure, data structures, api design. This was all taken into account when reviewing your project assuming you did your best.
Again, just general terms, no explanation. I gave up. (Let's put aside the fact that they wanted quality level matching "current scope of the application", which is - a 4 hour project to be trashed right after the hiring process - and now, they want "my best".)
I assume this site is visited by some recruiters, too.
How can I make these people to give me more specific assignments, where they would actually write what they want?
When I try to ask for them, they resist, and asking repeatedly feels like I am complicating things even at the start. But not asking puts me to a wheel of fortune that I will use the style that the reviewer likes. Such like:
- What version of Java should it be coded for?
- Should I use functional style?
- Should I use immutable style?
- Should I optimize rather for performance or for readability?
- Should I prefer classes for all domain models or are Java collections enough where practical?
- Should I use Optional<...> or is it okay to stick with null's?
- Should I write getters/setters explicitely or is it ok to use Lombok?
- Should I have an interface for each service if I write services? ditionally:
- Should I write unit tests and integration tests? (Not mentioned in the PDF.)
Edit: I forgot to mention here that I worked for Red Hat for 9 years and most of my real-world code is on public GitHub repositories of JBoss, mentioned in my CV. I wonder why don't they just go there.