How does judging work?

Here at Python Discord, judging the code jam is a process that continues throughout the entire event. This document seeks to detail exactly what the judges will consider when attempting to determine the winner of the code jam.

Because programming is full of subtleties and judging is not an exact science, this document will inevitably fall short of being an exact guide for how to win, but it should at least give you an idea of what you should be mindful of as a participant.

Project Overall

We'll be looking at the following 4 following categories when initially judging each project to select the top 10. These items will also play a factor when judging the top 10 during the in-depth code review.

  • Creativity

    • Does your project do something unique?
    • Does your project have an interesting twist on an existing concept?
  • Scope

    • Does the project have a lot of features?
    • Are the features ambitious?
    • Are the features focused around the core concept of the project?
  • Execution

    • Given what is implemented, is it implemented well?
    • Do the implemented features work well? Are they bug-free?
    • Are the features thorough and robust?
  • Usage of required Tech

    • Does the project use required technology?
    • Is the technology used in the core part of the project?
  • Incorporating the Theme

    • Does the project incorporate the given theme?
    • Is the connection to the theme clear?

Code Quality

We'll be looking at the overall code quality and the code style of projects. Some of the things we'll be looking at during judging:

  • Do variables have good names that makes it clear what they represent?
  • Does the file layout for the project make sense? Is it easy to navigate?
  • Does the code follow a modern and accepted style guide, such as PEP8?
  • Are docstrings used? If there are comments, are they appropriately used?

Commit Quality

We'll also be looking at the commits of a project. Here are some specifics we'll be looking at:

  • Do the commit messages explain what the commit is doing?
  • Does the commit message body explain why the change is being implemented where appropriate?
  • Are the commits appropriately sized (i.e. atomic commits)?

Documentation

Documentation is critical for any project to tell other developers and end users how to actually use your project. Make sure your documentation can answer the following questions and cover the following topics.

  • What does the project do? What features does the project have?
  • How do you install and run the project?
  • Are there multiple ways to install and run the project?
  • Are there external dependencies a user should be aware of to run the project?
  • What are the main ways someone can interact with the project? Are there commands to be aware of?

Teamwork

Teamwork is a major aspect of this code jam. We will be looking to see if people on the team contributed and work was split up appropriately.

If a teammate is unable to contribute during the code jam or becomes unresponsive, we will have a form for teams to fill out to let the Events Team know. We still expect to see the remaining team members work together collaboratively for the remainder of the project.