Saturday, July 24, 2021

A bad job with a very good description

Today I received a job invitation for a C++ developer position. My C++ skills are not up to date, so I initially doubted whether to apply. Nevertheless, I clicked a link with a more detailed job description. And this was the best job description that I have seen so far. No long list of desired skills. Clear view of the job duties.

Let me translate and quote the relevant parts:

Our product is <link removed>. You can download and try it on your PC.

Well, this is why I refused. I do not want to be involved in "black SEO" (which is obvious from the link that I removed). But let's continue with the description:

Our mission is to allow users to create separate browser instances, with their own cookies, local storage, etc. And with their own substitutions of values such as navigator.platform, navigator.language and so on.

For these tasks, we use currently a stock Google Chrome browser, and embed the needed property replacements using its API (Devtools Protocol) as JavaScript code. But this approach has certain drawbacks that do not allow bringing the browser operation to the desired "perfect" state. Therefore, we start development of our own browser build based on Chromium sources, so that all the needed property substitutions and modifications would come from the core and not from the injected JavaScript code.

A perfectly clear  and logical description of what they are trying to achieve, and, importantly, why. It is obvious that the person who wrote this has a coherent product vision.

Let me snip the part regarding work conditions, as that's irrelevant for the purpose of this blog post, and continue with the best part of the job post:

And here is a benchmark that allows you to see if you fit this role. Create a Chromium build for Windows with a replaced icon. Just any icon, but make sure that it shows up both as an icon of the executable and in the taskbar. Also, modify the browser so that the navigator.platform property is always MacIntel.

This benchmark allows candidates to self-judge themselves much better than long lists of required skills. What if I don't have this one skill from the list - is it really important, or can I just learn it on the fly? With the candidate self-test approach, as demonstrated above, such question cannot arise, and there is less need to conduct in-person coding interviews.

Another good aspect of this benchmark is that it involves modification of an existing code base, and not coding something from scratch. The ability to read and understand existing code in real-world projects is what really matters, and traditional coding interviews do not measure that.

I wish all IT job descriptions were written like that. It's unfortunate that this position comes from the bad guys - otherwise I would have definitely applied.

P.S. If you need a remote Linux sysadmin, DevOps engineer, or a C, Python, or PHP developer, feel free to contact me via email.

1 comment:

Alexander E. Patrakov said...

This post has made it on Reddit.

Unfortunately it highlighted the fact that the post is not clear enough why this is a bad job. So here is the clarification: I disapprove the product on the ethical grounds, that's the only reason. It is a tool for artificially inflating SEO metrics by means of simulating user activity on search engines and other sites (and that's what I mean by "bad SEO").

Still, the post is not about that. It is about a novel technique of presenting the job requirements, and this technique could be applicable for good jobs as well. A somewhat similar technique (challenge with the objective to modify an existing codebase) has also been used during an engineering interview by MemSQL, but the novel thing here was to post the challenge directly in the job description.