Skip to content

Commit

Permalink
Merge pull request #1367 from python-discord/cj-judging-page-update
Browse files Browse the repository at this point in the history
  • Loading branch information
jb3 authored Jul 22, 2024
2 parents 9ac9ef9 + de88e41 commit a4d2481
Showing 1 changed file with 95 additions and 60 deletions.
155 changes: 95 additions & 60 deletions pydis_site/templates/events/pages/code-jams/judging.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,95 +14,130 @@
This document seeks to detail exactly what the judges will consider when attempting to determine the winner of the code jam.
</p>
<p>
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.
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.
</p>

<h2 class="title is-4" id="style"><a href="#style">Style</a></h2>

<h2 class="title is-4">Project Overall</h2>
<p>
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:
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.
</p>
<ul>
<li>
Do variables have good names that make it obvious what they are going to be used for?
</li>
<li>
Are files organized in a way that makes the project easy to navigate?
</li>
<li>
Does the code follow the conventions of <a href="https://www.python.org/dev/peps/pep-0008/">the official Python style guide</a>?
<p><strong>Creativity</strong></p>
<ul>
<li>Does your project do something unique?</li>
<li>Does your project have an interesting twist on an existing concept?</li>
</ul>
</li>

<li>
Does your project have good git commit messages that explain not only what you were doing, but why?
<p><strong>Scope</strong></p>
<ul>
<li>Does the project have a lot of features?</li>
<li>Are the features ambitious?</li>
<li>Are the features focused around the core concept of the project?</li>
</ul>
</li>

<li>
Are there enough comments in the code?
A good rule of thumb for this is to make sure it's easy to <em>skim through the code</em>.
Another programmer should not have to read every line of code in a section in order to determine what it does.
<p><strong>Execution</strong></p>
<ul>
<li>Given what is implemented, is it implemented well?</li>
<li>Do the implemented features work well? Are they bug-free?</li>
<li>Are the features thorough and robust?</li>
</ul>
</li>

<li>
Does your code use blank lines and block comments in order to split up large chunks of code into smaller, logically separated sections?
<p><strong>Usage of required Tech</strong></p>
<ul>
<li>Does the project use required technology?</li>
<li>Is the technology used in the core part of the project?</li>
</ul>
</li>

<li>
Are your comments and docstrings free of poor formulations and typos?
<p><strong>Incorporating the Theme</strong></p>
<ul>
<li>Does the project incorporate the given theme?</li>
<li>Is the connection to the theme clear?</li>
</ul>
</li>

</ul>
<p>
If you can answer yes to all of the above, you will probably score well on style.
Using a linter (such as <code>flake8</code>) can be an easy way to greatly improve your style.
</p>
<p>
If your submission contains other languages than Python,
<em>please keep in mind that we will only review the Python code</em>.
This means that it is a good idea for you to solve as much of your submission as possible using Python.
For example, if you're making a webapp with a Python backend, make sure you solve all the interesting stuff in the backend, not in the frontend.
</p>

<h2 class="title is-4" id="originality"><a href="#originality">Originality</a></h2>
<p>
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 <em>what to do more</em> carefully than exactly <em>how to do it</em>.
</p>
<h2 class="title is-4">Code Quality</h2>
<p>
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.
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:
<ul>
<li>
Do variables have good names that makes it clear what they represent?
</li>
<li>
Does the file layout for the project make sense? Is it easy to navigate?
</li>
<li>
Does the code follow a modern and accepted style guide, such as <a href="https://www.python.org/dev/peps/pep-0008/">PEP8</a>?
</li>
<li>
Are docstrings used? If there are comments, are they appropriately used?
</li>
</ul>
</p>

<h2 class="title is-4" id="execution"><a href="#execution">Execution</a></h2>
<h2>Commit Quality</h2>
<p>
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.
</p>
<p>
While the code jam is ongoing, staff will be available to you both inside your team channel and in the common code jam channels.
Staff may drop by your team channel to make helpful suggestions, answer questions, or just ask you how it's going.
Feel free to grab a staff member and ask a question at any point if you're unsure about something.
We'll also be looking at the commits of a project. Here are some specifics we'll be looking at:
<ul>
<li>
Do the commit messages explain what the commit is doing?
</li>
<li>
Does the commit message body explain why the change is being implemented where appropriate?
</li>
<li>
Are the commits appropriately sized (i.e. <a href="https://www.aleksandrhovhannisyan.com/blog/atomic-git-commits/">atomic commits</a>)?
</li>
</ul>
</p>

<h2>Documentation</h2>
<p>
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.
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.
<ul>
<li>
What does the project do? What features does the project have?
</li>
<li>
How do you install and run the project?
</li>
<li>
Are there multiple ways to install and run the project?
</li>
<li>
Are there external dependencies a user should be aware of to run the project?
</li>
<li>
What are the main ways someone can interact with the project? Are there commands to be aware of?
</li>
</ul>
</p>

<h2 class="title is-4" id="teamwork"><a href="#teamwork">Teamwork</a></h2>
<h2>Teamwork</h2>
<p>
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.
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.

</p>
<p>
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.
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.
</p>

{% endblock %}

{% block sidebar %}
Expand Down

0 comments on commit a4d2481

Please sign in to comment.