23 July 2010

Daily quiz becoming a trivia contest?

I received this note today from a player:

"I feel that the pl/sql challenge is starting to become either a trivia contest or is starting to use too many poor programming practices to try to prove points about understanding. I don't envy you trying to come up with questions. A good programmer would never write code like today (22nd July) and wouldn't get into that position where it was difficult to tell how many rows would be returned after calling autonomous code or using savepoints/rollbacks. Thanks for the quiz so far, but fear I will soon be starting to drift away."

I would like to hear what others think. You are right, it is hard to come up with lots of good quiz questions. And, most definitely, I make no claims to only offer "best practice" code in the  quizzes. They are intended more to test/expand your knowledge of areas of the language.

For example, on July 22, I wanted to test your knowledge of the use of both SAVEPOINT and autonomous transactions to give you some control over how much of your changes are rolled back.

Perhaps I ended up obscuring the lesson within all that code? Perhaps my approach of using these "substitution" comments is not helpful to people?

So, sure, you wouldn't necessarily write code as it is shown in all the quizzes , but I am not sure why that is a barrier to getting something out of a given quiz.

I also hope to start including best practice questions - but those can be tough because of the level of subjectivity in that whole idea: what is "best" to me might be far from obvious or even acceptable to you.


  1. Keeping the questions to "best-practice" examples only would be bad in my opinion. Part of being a good programmer is being able to understand, maintain, and fix cases of "non-best-practice" code.

    It is also important to consider that what may have been best-practice in Oracle 8i is likely not going to be best-practice in Oracle 10g or 11g. As the technology evolves, so does the "standards" of what best-practice is. Regardless, it's code that we will eventually inherit, and possibly rewrite to our modern standards.

    Overall I feel the PL/SQL Challenge questions have been very good and quite educational. I've seen questions on Oracle exams that were more ambiguous, confusing, and frustrating to answer. :)

    Keep up the great work!
    - Richard

  2. I think that it's hard to have a common agreement on what is best practice. Everyone has different experiences here. It will end up in endless discussions on very specific small details.

    I think it would be enough if you explain the pros/cons or best practices when the answers of the questions are published. Just a small comment why this or that option is not a good choice for real life programming, or why another option is recommended.

    And there will be always discussions on how to interpret the words you have chosen in the question. So keep the questions simple and without too much details. And please please avoid questions/answers where it all depends on very stupid syntax errors. I mean for example that a certain answer is not correct because the semicolon at the end of the line or such.

    Thanks for the great site. It's great to learn something new on your site every day.


  3. I agree with the op that the challenge sometimes resembles a "trivia contest". But it is still for the most part both a fun and informative exercise. Let's hope we don't have a "find the missing semi-colon" question any time soon.
    And I too don't envy you for having to come up with a question every day.
    Keep up the good work!

  4. David said: "...And please please avoid questions/answers where it all depends on very stupid syntax errors. I mean for example that a certain answer is not correct because the semicolon at the end of the line or such."

    This could be catered for by stating in the question "assume that all the code in the answers compile without error". Steven has added a statement like this to a few questions, which is a big help.

    Otherwise, in the absence of such a disclaimer, if I see a syntax error (no matter how stupid) I'd mark the answer as wrong.

    Unfortunately, this disclaimer is not always feasible - e.g. in a question that asks "which of the following will compile and run without error".

    Regarding the overall question about this being a "trivia contest", I'd have to say that this can be quite subjective. What is trivial for you may be an important point for me; we all work on different systems which have been built by different people with different skill levels, different backgrounds, using different parts of the language.

    Like my dad always used to say: "any question is easy - if you know the answer" :)


  5. I cannot make an assumption that all code compiles without error, for precisely the reason that Jeff points out. I need to make sure that through my careful editing and review by others that the ONLY reason a block of code will not compile is because I deliberately inserted the error for reasons relevant to the quiz at hand.