Avatar image home | reference architectures | about about me |
message send message

My reaction to being asked to complete a TestDome test (.NET C# contractor)

• Blog posts are my own thoughts and opinions

Hero image for My reaction to being asked to complete a TestDome test (.NET C# contractor)

Yesterday after sending a recruiter my resume for a role, I was told I would need to complete a technical test. The role was interesting and the last few technical tests I've done have challenged me and have been fun. The way the test was phrased told me a lot about the company and I could tackle the challenge as a i have nothing to lose, and will have an evening of fun coding I probably would have done anyway.

Later that day i received a reply from the recruiter informing me that the instead of a build-something you can talk about test, it was going to be an automated TestDome test.

This was the email I wrote to the recruiter;

Please find attached my latest resume for your consideration:

Dear

re: testDome

I was expecting a build a sample project that does X or Y that I can show the client and talk through my decision making and problem solving.

Unfortunately I am probably not going to score well on a TestDome test for Javascript and SQL.

I can totally understand why you or your client would want to use a pre-screening test like testdome, (mostly because they claim it's quicker), however for many candidates with very senior and broad skills, like myself, I am concerned if the question just happens to be something I don't use a lot, I wont do well.

Remember on the phone I said a colleague I know works as with a shipping company, well I called him to ask him where he worked, wondering if it was the same company, then I could use him as a reference, well it turns out he's not working there. He said they gave him a TestDome test and he flunked it. And I know he's a damn good engineer. I have worked on his code, and know the team that he managed, and code reviewed their stuff as well.

So now, I'm now very wary about any TestDome test. Mostly because it's an artificial barrier that those that have prepared to pass it will do well in.

If I need to pass the TestDome tests it's going to require that I take a number of trial tests, and then sit with my SQL and javascript books and do a whole bunch of study, that i may never use in production with my clients, just to be able to pass testDome tests.

There's a very good chance I will fail that test and here's why:

My javascript and sql are strong. But not test strong. They are good enough and where my production tests show that we have a bottleneck I will read up on the particular unique requirement and improve the code as-needed to get within performance requirements. So in that niche case I become an expert.

I have the breadth of experience and skills to quickly assimilate a huge amount of data to come up with an approach to asses the problem and address it. That's not something a junior developer can do.

Most of my SQL work is focused on relational design, with a minimalistic approach. I've made extensive use of ORM's (mappers) together with good testing. Where the sql generated by the ORM is sub-optimal, I hand write a stored procedure if needed, or optimise the business logic code with appropriate caching.

The general approach to both scalability as well as maintainability has always been to keep the business logic out of the database, and only use the database as a last resort for transactional work, preferring lock free designs and sagas across micro services. This also supports breaking up a database into separate databases for separate microservices should a system start to grow in complexity.

A lot of my micro-service and enterprise work has used simple SQL together with an ORM (Dapper, Linq 2DB, Entity Framework, NHibernate) together with various NoSQL technologies, eg. ElasticSearch, with a focus on removing complexity from systems and moving logic onto testable components. I've worked extensively with web developers where I have worked with the business requirements and designed the API's for the web designer to consume.

On the front end, I can produce a basic wire frame application for the client in HTML 5 and Javascript and MVC, which wont be pretty, but will be good enough to confirm requirements, and allow the team or myself to focus on delivering working software. The front end can then be handed over to a dedicated web designer to make pretty or use more libraries to improve responsiveness and functionality.

I say this, because I believe using TestDome to filter out candidates is possibly the wrong approach as I will possibly score very poorly on testdome on two of those three categories and you're going to lose out on an excellent candidate for this role.

The technical test that I was expecting, which is the type of test I have done regularly for most of my senior roles, has been build a sample project that does X or Y, that shows each of the following, and solves the following requirement. This allows me to create a demo project that delivers on the test requirement, and will be discussed face to face with their developers, going through the rationale of why I used what I used, and they can see from the code what instinctive practices I use, and how I write my tests.

I'm going to write the test, and I don't know what the outcome is going to be. However I thought I'd share this with you before I wrote the test in case I pass, or in case I fail. That way you know what my reaction was before I wrote the test, and it wasn't a reaction because I was bitter that I had failed the test.

If I fail, then I will know In future to pass on any recruiters that rely on TestDome. Perhaps they will improve their testing over time, I don't know, it's a really difficult thing to get right, getting a robot to assess a human as being a good developer.

Personally I think that what makes a good team lead is much more about management style, interacting with clients, as well as solid coding and engineering skills. The things that break are ALWAYS the things that theres nothing written about in any textbook.

The best skill to test for, is adaptability. How do you handle new challenges you don't have a recipe to solve? How do you communicate with your peers to collaboratively solve the new challenge.

Anyway, I've made enough excuses (grin!) and it's time for me to step into the lions den and try out your TestDome challenge!

wish me well

:D

best regards,

Alan

Comments

Anonymous
We are looking at hiring and have decided to create a custom TestDome to test for specific qualities that we want our people to know. We will then review the results, meaning that there may be no "failing" the test. More knowing where people are at in these skills. We may decide to hire a person regardless. But knowing their skillset in this specific area helps us plan their first weeks for training and getting up to speed. In short, if used right, I maintain that a tool like TestDome can be beneficial.
Anonymous
I am facing the same situation, I hate testdome tests, I am not a high seniority React Developer but I have some knowledge and I think a 0% on any test I try in testdome doesn't represent my level. Also, the IDE literally blows, it takes forever to run your code and the OUTPUT is not really a Website or a the console, is whatever they choose to render, is very limited and hard to debug. wish me luck as well.
Anonymous
I fully agree with you, and knowing over 14 different programming languages that I learned over the last 20 years, I do not get bogged down with technical stuff, until I have to work in that language. I will do a refresher course in the latest that the language offers, the weekend before thew contract starts, and start writing production ready code. then on the next contract, I will be working on another language, weather it is mobile apps, web apps or back end stuff. I have seen it all and done most of it. as for raw coding, I would take you on any day, Jason Payne! Hit me up! And don't talk to me unless you have worked on very large scale enterprises systems that does over a million transactions per day. Great article, Alan!
Anonymous
I had the same experience myself on TestDome
Anonymous
and into the lions den I go. nice writing !!
Anonymous
I’ve been out of school 3 year need a good review for this… any good channels for a 2 day crash review?
Anonymous
You pin point what is the matter most should a recruiter or hiring manager should do for screening a senior software engineer/developer. Btw I have a technical exam via test dome today. Wish me luck 👍
Alan Hemmings
When I am hiring, I don't care about testdome scores. What I care about is whether the engineer helps our team be better. Demonstrating a passion for learning and a good critical thinker and communicator. No test measure these qualities. You can learn what is the right sorting algorithm for a problem, and yes ..you can learn passion and critical thinking, but we'd prefer you either already have that before you start with us, were not a charity, and we value this approach not because we are soft, but because we have many years experience that our approach to hiring leads to far superior "measurable" qualitative outcomes. It's just good business with a side effect of treating people with respect and loving our work.
Anonymous
I introduced CodeSubmit at my previous company. It allows tests to be done within a time limit of up to 6 hours so it's not too pressured, but also reduces the likelihood of cheating (getting a friend to do it). However, I generally find that 95% (or thereabouts) of devs are below senior standard when it comes to raw coding. Honestly, from reading your letter, while you may be a great all-round engineer, I think you fall within that 95% for raw coding ability. Your comment about writing an SP when the ORM produces "suboptimal" queries indicates this. If this is your solution when using a Code First approach, then in my experience it's more likely that your data model and/or decorations and/or LINQ to Entities queries (for example) are flawed. TestDome and others test raw coding ability, and while chance may have it that good candidates slip through the net due to enough questions outside of your knowledge being asked that would cause you to fail the test, statistically, most candidates that meet the bar would pass. And by 'bar', I mean candidates who understand the fundamentals of the language such as how garbage collection works, all the differences between a struct and a class, what 'lock' in C# compiles to, how a C# closure works, all the SOLID principles in-depth, the definition of polymorphism, covariance vs contravariance, etc. The reason being, knowing these fundamentals can mean the difference between a buggy slow application and a high-performance application with near-zero bugs on MVP release. Most engineers can swot up and Google what they need to know and deliver "working software", and split a system up into microservices that make logical sense, and adapt to challenges, etc. But in my experience, what separates the men from the boys is the raw intellectual ability to write robust concise solid awesome code (whether OOP, FP, scripted, etc.).
Alan Hemmings
re -> Most engineers can swot up and Google what they need to know and deliver "working software", and split a system up into microservices you need to get out more! ... 😂 🤣
Anonymous
You realise I was referring to and paraphrasing your own words when I wrote that bit, right? Namely "I will read up on the particular unique requirement and improve the code as-needed" and "breaking up a database into separate databases for separate microservices". Oh dear. 🤦‍♂️ Better luck next time trying to outwit a fellow tech intellect.
Alan Hemmings
It's a very real problem where engineers often "over engineer" something because they've read a book or attended a course, then go back to their workplace and convert perfectly stable architectures into a mess of "micro-services". It's such a big problem it's a standing joke between seasoned engineers. When you meet for the first time, you often share war stories of prematurely optimised systems, ...like lifting the shirt and showing our "war wounds". I was half joking, and also very serious, if you don't think that's a problem then maybe you really do need to get out more? The world of code at your company might be perfectly clean, but I promise you the "real world" is bloody and messy. Yes, I am proud to admit that I know I'm not an expert in all areas, but if I have a section of code that a perf or load or stress test indicates is a bottleneck, then (ideally) I'd do the research to understand the particular problem in just that area until the tests pass again. That's very different entirely to thinking I can write perfectly optimised code in all situations.
Anonymous
That over-engineering happens, that YAGNI is a thing, that spaghetti code is common, are existential and par for the course. I really think you missed my point completely, which was that I was referring to and paraphrasing your own words when I wrote "Most engineers can swot up and Google what they need to know and deliver "working software", and split a system up into microservices [that make logical sense]".
Anonymous
Thoughtful article, thank you!
Anonymous
I have always asked myself how similar is the software development job to medicine practice.
Anonymous
Good point. I found without prep, I did average on exams like this. However, just with a few practices, I did amazingly well (top percent on a coding test someone sent to me). the question is: are my real coding skills improved drastically overnight just from prep work for the test? I think what's being measured in the standard coding test like this has little correlation with what really matters to succeed for a senior position.
Alan Hemmings
this is exactly the problem. Also, ...it's quite straight forward though not easy (a lot of mechanical memorisation) with a lot of prep and a lot of time to get close to 100% if not 100% for these tests. The question is whether you'd rather spend the same effort to pass the test, and that's really the only skill you gained the skill to pass this one single test, or, say ... I dunno, maybe ... get your AWS certification? Or maybe become a certified scrum master. if the the sky is your limit, why spend your life like a mole.
Anonymous
For anyone who spends most of their days solving unique problems, tests like these communicate that the job is for juniors IMO. What's weird is that I've been asked to do technical tests for product manager roles, which simply doesn't make any sense. Personally I think this kind of approach speaks volumes about what an organisation values, and short sighted approach in constructing homogeneous teams without thought diversity
Alan Hemmings
It's been quite a while since I originally wrote this article, and I need to add an important update: since writing the article I've done an informal poll amongst my peers who without being arrogant I believe are in the top in their fields, and turns out I'm quite a bit of an anomaly in that without exception almost none of them would continue the interview process with any company asking them to complete an online technical assessment test. So to be 100% clear (so that this article does not give the wrong impression) there's absolutely NO WAY I would ever use testdome as part of my company's recruitment process with any senior developer role. Junior roles yes, mid level ? I don't know, ... I've never worked with a company that ..."Meh! (mid level)" is their goal, it's either junior, and we're looking for smart problem solvers with great communication skills that we can rapidly upskill to "remarkable" and skip right past "mid-level". Yes, that is a thing! If you don't believe that's a thing then phew ... you're missing out. I digress, ...senior, or let me use another word instead of "senior" let me say "key person", a key person role, that's critical to the success of a project, and really that should be everyone on your team.
Private
did the recruiter ever reply to you, and did you pass the test? When I was invited to do the test I thought they wanted to cut me out. In the meantime I refreshed some of the SQL skills that I haven't used for at least 7 years and I am still ok but not for very complex queries, and had a look at some Python training...to understand that this is not really what I want to do and that to do analysis I don't need to be a python programmer. I am sure I won't pass the test, but from this I had a better idea about the company and the role.
Anonymous
I complete agree. TestDome, Codility does not evaluate other soft skills a developer can have. In my personal experience, I'm not good trying to solve something with the clock ticking.
Alan Hemmings
So I wrote the test, and TestDome is better than I thought it would be, however I believe it's pretty random whether you're going to end up stuck on an algorithm, and end up scoring 80% instead of 100% for the test. So if a recruiter uses this as a means of filtering who you see, i.e. Only schedule interviews from the top % of scorers, then that's pretty random. If the test is merely used to make sure you're not sending candidates that literally do not know how to do fizz-buzz, despite a rock star looking resume, then i can confirm this does work for exactly that! And I'll probably use it myself when hiring for my team as a senior lead. The really nice thing about the test is that you get instant feedback. Ticking off each of the "unit test" (TestDome) tests while writing the test is super satisfying. Very addictive. So, huge grin from me there! Plus you instantly know your score. There is one concern, and that is because it's an "open book test/ open internet test" whereby you can google for anything to help you solve the problem, it also means it's possible you can google for the exact answer to the test, or algorithm. ..I know this, because I know I got stuck on one question that I was instantly told while writing the code that only 3 out 4 of my tests passed. So after the test I googled to see what some optimal solutions to the interview question are. For me, actually looking up a complete interview question is cheating and I didnt do it. Now here's the catch, if their AI KNOWS that everyone does it, then I'm going to get scored very poorly. Mmmm.... so all in all, AFTER writing the interview test I was right about my initial concern. But can see what they're trying to do. If it's only being used to filter out FizzBuzz failures, then it WORKS, and works super well.If it's the latter, then no, jury is still out. But it's not conclusive, which I am very surpised! cheers guys, love you all! Alan
Agree completely with this, don't know if its the recruiters that push it or the companies but the best way besides the references is doing actual work with the person and doing a 3-6 month trial period.
Agreed. I don't ask candidates to do coding tests because I just can't see how those results materialise after you hire them.
Alan Hemmings
The most interesting technical test I ever did was devised in such a way you had to specifically make use of a library that you probably would not normally have used, and the result was that I enjoyed the test immensely having learnt a great way to use something new. I have great respect for the team that composed that test.
Quite a long letter there Alan. Do you think it would have been read?
Alan Hemmings
I had already communicated several times with the recruiter, twice on the phone and we had established a good rapport. He's a good egg :) Also, writing the letter wasn't about me trying to "convince" him, it's part of a wider journey of discovery. Recruiters are people, not machines and I try to connect and get to know the people I work with. And before my resume ever gets near a recruiter we've spoken a fair bit. This was an honest "retrospective" of something that had just happened, and I wanted to get the feedback to him before he gets the tests results which would nullify this feedback's value. This is a big and important topic that needs wider debate and I believe sharing my honest reaction will my peers and friends is valuable. Most of my friends, including myself are regularly in the hiring position and learning about how our world is rapidly changing, specifically how we engage others is vitally important. Do I want to be an active participant, or an observer?
Alan Hemmings
Agree, if that was a first contact with an agent, it would be too long and would not have been read.

Log-in and 'Comment' service (like & reply) is currently being built. For now, if you leave a comment using the contact us form, I'll manually add it to the comments above.


Disclaimer: These views and opinions are those of the author and do not constitute professional advice. Neither Alan Hemmings nor Goblinfactory Ltd (if mentioned) shall be liable for any reliance on this content.