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 inevidably 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.
Python is a language in which code style matters more than what someone might be used to coming from other languages. We believe that good code is code that is easy to read, pleasant to work with, and self-documenting. Here are some of the things we'll consider when judging your submission:
Do variables have good names that make it obvious what they are going to be used for?
Are files organized in a way that makes the project easy to navigate?
Does the code follow the conventions of the official Python style guide?
Does your project have good git commit messages that explain not only what you were doing, but why?
Are there enough comments in the code? A good rule of thumb for this is to make sure it's easy to skim through the code. Another programmer should not have to read every line of code in a section in order to determine what it does.
Does your code use blank lines and block comments in order to split up large chunks of code into smaller, logically separated sections?
Are your comments and docstrings free of poor formulations and typos?
If you can answer yes to all of the above, you will probably score well on style. Using a linter (such as
flake8) can be an easy way to greatly improve your style.
In order to level the playing field a bit, we've decided that this is the most important factor of all in our code jams. If your idea is an exceptionally good one and you are a beginner, we will cut you some slack on style and execution. You may be able to walk away victorious even though the other teams have far more experienced Python professionals. It is therefore crucial that you consider what to do more carefully than exactly how to do it.
That said, experienced Python developers will always have an advantage, so don't expect to win with a lazy or ugly implementation just because your idea is brilliant.
An important factor is whether your solution is the best solution to the problem you are solving. If your solution is overly convoluted, this will count against you in our evaluation. Thankfully, there is a wealth of feedback available during the actual code jam to help you stay on top of this.
While the code jam is ongoing, our mods and admins will leave you comments on your merge request with helpful suggestions for how to improve your code. A lot of that will be in regards to style and execution. You should be paying attention to these comments and making changes as the code jam progresses.
Our talented team of Helpers will also be available during the code jam, so if there is a part of your code you're unsure about, feel free to bring it to a help channel. We will be happy to provide advice on how to improve it. Do not, however, post your entire program; help requests should be bite-sized.
During the code jam, you will be assigned teammates. It is crucial that you find a way to work with your teammates, as we will be evaluating your ability to work as a team. Team members who constantly bicker, complain about each other, or fail to divide up tasks so that everyone can contribute will be penalized when we evaluate the code jam.
This does not, however, mean that a team that has a "bad egg" will automatically be unable to win the code-jam. If a team member refuses to play well with the rest of the team, or does not participate in the jam, we will usually remove that person from the team and attempt to find a new teammate for the team to replace them. This will also lead to an infraction against the offending team member, which may make it impossible for them to join some (or all) future code jams.