🐈
» Groups » Upwork Engineering » Forum » C# test pros and cons
Page options
mplawley
Community Member

C# test pros and cons

I just signed up for Upwork because I've seen a lot of fascinating projects on the site, and I took the C# test. I thought it might be valuable to the community if I shared my experience with the exam.

 

  • There are a number of good questions that test knowledge that I use on an everyday basis when working on professional projects. These questions usually are in the form of "What will the console output be here?" and have string operations and the like built in. Sometimes the good questions have to do with what's going on in the memory of the machine, which is important for optimization, especially for mobile development where you're dealing with devices that don't necessarily have the fastest processors.
  • But most of the test felt like a C# trivia test rather than a C# test. I got the impression that the writer(s) of many of the questions googled some fact about, for instance, C# classes, methods, delegates, or whatever else, read something off the Internet, and then turned it into a question. So much of the test had a "tangential" feel to it, as if the test writer(s) didn't realize what was really important with any given concept at hand.
  • If I had the test in front of me, I'd have a lot of specific examples, but I can't access it for 90 days. Still, I recall questions about little bits of LINQ syntax that are tangential to the immense power of LINQ to organize data and allow you to access it very quickly. Or questions about whether something was a .NET interface but NO questions about how to actually use the .NET interfaces. This is the equivalent of testing spelling over beautiful and succinct prose.
  • I want to point out that these kind of questions will favor two types of test takers: 1. college students who've recently taken an undergraduate course where you're asked to memorize basic facts, 2. Someone who is cheating on the exam by Googling the answers.
  • Sometimes, the poor grammar of a question would make it difficult to understand. Again, I have to go off of memory, but there was one question about keywords that made me do a double take. (And, to my previous point, instead of asking about what keywords are, why not ask something both theoretical and practical, like when to use a singleton with a static instance vs. just a public instance vs. a private variable vs. a [SerializeField] variable, etc.).
  • I just did a Google search for "C# Upwork test", and there are sites out there with answers to the exam's questions.

There must be a better way to test candidates. More conceptual questions would be good, and they should be written by someone who really knows C# inside-and-out. As one "data point" of sorts, I'll make a list of the knowledge I have to use almost every day to do my work. This material didn't show up anywhere on the test and includes knowledge of...

  • Design patterns, including the appropriate use of singletons, the factory pattern, etc.
  • Information hiding. The Principle of least privilege/authority.
  • Writing large amounts of mixed data to memory, reading from it, storing it in different parts of a user's device, etc.
  • Integrating cloud-based services into a project.
  • Professional-level optimization based on the use of a profiler, NOT little premature optimizations based on fiddling around with for-loops, arrays, bitwise operators, and the like.
  • Using XML/YAML/JSON/etc. to manage data. The use of the same to allow non-technical teammates contribute to a project.
  • The use of enums! Very basic, but it didn't appear on the exam. To be conceptual: the use of enums to faciliate a basic AI in a program, like a computer opponent in a card game.
  • Using OOP principles, especially class inheritance, in a practical way. Defining your own data types. Using all the wonderful .NET interfaces out there (the test touched on this, but again, in a trivia-question-like way).
  • When to use what generic collections, not merely what those collections are called or what namespace they're encapsulated in. When does one use a hashtable versus a radix tree/trie versus a linked list versus a plain struct versus whatever other data structure.
  • Debugging runtime race conditions that NO debugger will catch for you. This is the kind of thing a client will send you to fix that no one else could figure out.
  • Integrating in-app purchases for a client on the iOS store, the Google Play store, etc.

These are the sort of things I run into on a weekly, daily, or sometimes even hourly basis. With the way the C# test is currently written, a senior software engineer with 20 years of experience who refuses to google any of the questions will pass the test due to the number of good questions, but will probably perform worse than a recent college grad or anyone who is willing to cheat. Still, as someone who has written and published professional test material for mathematics and standardized tests, I appreciate how very hard it is to write good test material. What you have now isn't bad per se, but it isn't quite "there" yet either.

ACCEPTED SOLUTION
kochubei_valeria
Community Member

Hi Mark,

 

Thank you for sharing your detailed feedback about C# skill test. I'll forward it to the team that's working on updating and improving Upwork skill tests.

~ Valeria
Upwork

View solution in original post

8 REPLIES 8
kochubei_valeria
Community Member

Hi Mark,

 

Thank you for sharing your detailed feedback about C# skill test. I'll forward it to the team that's working on updating and improving Upwork skill tests.

~ Valeria
Upwork

2 years later.... and the test is still awefull. Really, not sure whoes brilliant mind designed it. Took C# test few years ago when I have just started learning the language... and retook it just now... got worse score. The vast majority of questions are just irrelevant to real world scenarios. Not to mention typos and even duplicated questions.

b4blue
Community Member

I think hiring Mark to create a better test would be a perfect solution 🙂

mplawley
Community Member

😄

paperdog
Community Member

As a tech trainer (of the past) it looks like you have all the ingredients for a top notch C# course of instruction.   I agree with your assessment on testing (most agencies barely scratch the surface of where a curriculum, and subesquesnt testing should strive toward).
Gaming, Vs Business application... Probably need two separate courses... 
IMHO

Thank you! I think you're right on two separate courses.

gerrys
Community Member

Meh.

 

You're typical customer won't know what you're talking about; they're interested in if you can solve their business problems.

 

There are more (from) "user" jobs posted than "tech" jobs; and they last longer (i.e. "support"). 

 

They want people that can "communicate" without dropping buzz words.

 

 

odinsql
Community Member

These tests seem to have been designed by the lowest bidder without any knowlage on the subject.