What Should The Scripting Games Look Like Next Time?

If you've been following along with The Scripting Games over the past couple of iterations, you know that we've been trying some different, new things. This Winter Games, we did a team-based series of events that threw some really complex scenarios at you. However, we know some folks would like to see the next Summer Games include a less-complex track that perhaps includes a focus on one-liners.

(Not that one-liners are an essential part of a work environment, but they're fun and a good competitive thing - this is games, after all.)

So we're looking for your ideas. Drop a comment, and tell us how you think the next Games should be structured.

However, before you comment, understand that judging by official, expert judges gets extremely difficult. Multiple 10 events across 250 entries and you've got a metric butt tonne of work for our volunteers to do. Quite frankly, it's unlikely we'll be able to provide a score-per-entry with that kind of volume. The folks who do judging just can't take that much time off work. Seriously, even if a judge only had to look at an entry for 2 minutes, that can easily be more than 80 hours of work to look at every entry. It just isn't do-able.

So, in your comment, include some thoughts on what you'd like to see for the judging/scoring side as well, keeping in mind the desire of judges to also have family lives and jobs. What's your real goal in participating in the Games? To get community feedback (comments) on what you've done? We can arrange that. Is it perhaps educational to have judges pick out "noteworthy" (both good and bad) entries and comment on them, as a learning guide? Or are you solely after having a "known" expert offer commentary on your entry - which isn't something we can guarantee if there are a large number of entries?

Help us understand what you're in it for, and give us some ideas for creating a Summer event that's fun, as well as educational.

Posted in:
About the Author

Don Jones

Don Jones is a Windows PowerShell MVP, author of several Windows PowerShell books (and other IT books), Co-founder and President/CEO of PowerShell.org, PowerShell columnist for Microsoft TechNet Magazine, PowerShell educator, and designer/author of several Windows PowerShell courses (including Microsoft's). Power to the shell!

9 Comments

  1. thoughts on what you'd like to see for the judging/scoring side
    What's your real goal in participating in the Games?
    To get community feedback (comments) on what you've done?
    Is it perhaps educational to have judges pick out “noteworthy” (both good and bad) entries and comment on them, as a learning guide?

    I've taken part in the last two games and I really like that when I walk away from the Games I've learned a lot. That's my main goal of the games. Prizes would be cool, but I think it's more about learning and interacting with people who really know their stuff. I also really liked the blog break downs last year; it's something I missed this time around.

    This year I tried to rally a team together to try and help some beginners and those who were not confident in their scripting abilities. I think the difficulty really put them off. Out of a team of 5, only 2 of us worked on our entries. With that in mind I think it's important to have multiple streams.

    I don't really like the focus on one-liners, although it is pretty awesome sometimes, because it almost reenforces the opposite of some good scripting practices.

    I'd like to see something that introduces more advanced concepts, such as error handling and building reusable tools.

    Maybe the Games could be used to create a cumulative product? As in Week 2 expands on Week 1 etc. Then maybe have a one-off judging session at the end but allow community comments in between. That could also be used to get people used to creating modules and following those approaches.

    I think that community voting is a tricky issue as it can be difficult to run tests when voting, and frankly, I don't think it's fair to vote if the script wasn't tested.

    Another thought, maybe incomplete scripts could be posted and people could be tasked with completing it or fixing it based on some requirements? This could be used as an exercise to introduce people to the debugging tool set.

    I hope that's the sort of food-for-thought you're after.

  2. I had fun (as a competitor) this time around with the complex, "real-world" style events, but it seems like they're a real pain to judge in the limited time available. If you only have a few minutes, on average, to spend grading an entry, and the event is written in such a way that you wind up with 1000+ lines of code to get the job done properly, the judge is almost certain to miss something here and there. As a result, the quality of the feedback for the competitors suffers.

    It might be a good idea to dial back on the complexity of the events in the future. You can still choose a challenging task, but keep the focus of the assignment fairly narrow, compared to this year. Taking some of the tasks from this year's Games as examples, perhaps we could have had events along the following lines:

    - Write a script that outputs SHA-1 hash codes for all files in a directory tree. The script must handle long paths of 260+ characters.
    - Write a script to encrypt a file in such a way that it can be shared with another user. Take measures to prevent the encryption keys from being exposed.

    These still incorporate some of the more challenging aspects from this year's Games, but would require much smaller entries that should be easier to judge.

    Depending on how specific the requirements are, it may even be possible to automate testing of the entries, giving the judges an objective starting point for their scoring. Using this year's Pairs event as an example; if the input parameters and history file format had been specified in the requirements document, then perhaps a script could have been used to test each entry by generating 100 or so rounds of pairings and analyzing the results to make sure no violations of the Primary or History rules were produced, no name was paired with itself, all names were paired in each round, etc.

    Hopefully, by minimizing the amount of time required to do a thorough review of an entry, the judges would have time to provide more detailed feedback to the competitors. This year, there were many scorecards that had 0 or negative points for one or more critera, but no explanation as to why the judge felt the entry was wrong. With the goal of helping people learn from their mistakes, I think it would be valuable to have this explanation on the scorecard most (or all) of the time.

    • In any situation where judges have a lot of entries to view, commentary is going to be minimal, just based on the time involved. That's one reason I was asking this question - if the commentary is the really useful feedback, then the Games might not be the right way to achieve that. When Microsoft was running the Games, comments were provide only in the most recent years and they were extremely minimal if present at all; originally, participants got essentially no feedback on their entries (back in the VBScript days, for example). I don't debate that commentary is useful - but it's extremely time-consuming to give a peer review to dozens of scripts in a week.

  3. Please provide an alternative login method for those who don't want to "sell" their personal data to twitter / facebook / google / linkedin.
    If you do, I promise I'll compete again next time. Thanks!

  4. We had a few different looks to the Games over the last few years.
    I'd be interested in hearing people want a consistent style or prefer to have differing approaches.

    Bear in mind that the more complex the event the bigger the workload for the judges

  5. I mainly want to subscribe to the words of Dave Wyatt.
    While participating this games I already change some of my production scripts with solutions and lessons learned in this games. (especially about parameter validating, splatting and some of v4 features)
    from myself, I want to see in the future games as real world goals (entry 2 and 3 is the best), that can be properly completed with less lines of code 🙂
    And about juding criteria. in any goal there must be the main goal, the mail goal features and the sweets such as help, validation and so on.
    best practices things raise the main goal scores in %% manner .
    Yes, it is really good thing when script have help, validation and so.. but if help availability and parameter validating can overcome the main goal on scoreboard, it is not good for newbies who want to learn a some good thing in a high scored entries.
    for example: Main goal: properly set acl to a bunch of folders (score as 0-10), feature: long paths support (0-5), b.p. (0..50)%% - i.e. help and other best practice sweets only can raise main score to 1.5 times but can't convert 0 points to 5 or 10.
    Our team has only two members.,me and my coworker. In a fact, he is newbie who can give me some Ways to comlete task and I was a main scripter. I learn many things, he learn almost everything 🙂 and when we review other team entries we was surprised why deadloops, $globals and other worst programming practices can get high scores. It even resulted in a scream on some public places...

    Resume:
    - shorter goals for more objective judging
    - "fix or expand the old/broken script" will be a fun
    - real scores for goals, %% for a best practices. we are mainly scripters, not a help writers 🙂
    - judge review for negative/low scores

  6. I would like to see the judges, or whoever creates the challenges to post their own solution, along with an explanation of their thought process as to why they did things the way they did. Then I could compare my code to theirs and see where we differed.

  7. Stream of Consciousness Thoughts:
    I personally like the idea of starting small, and working up to a much bigger final product (basically the way the Month of Lunches Book works out). Maybe another way to do the "grading" would be that each person gets randomly assigned the submission of another person to "grade". This would allow for a lot of possible dialogue between the two parties, but also has its own issues (or maybe that could just be an optional feature, where you could elect to participate in that if you wished). I like the idea of a one-liner being as short as possible for fun. You could also do the exact opposite of that, what is the longest one liner you could create to get the desired output. Kind of piggybacking off of my other idea, you could be randomly paired with someone who would need to give you a problem to solve (perhaps something they have been struggling with or haven't had time to do on their own). This would give people more experiences with other real world problems they maybe wouldn't see on their own.