- Introduction
- Qualifying
- Qualification Challenge
- Applying
- Rules
- Judging
- Prizes
- FAQ
- Competitors
- Teams
- Discuss
Are two heads really better than one? N-BRAIN, Inc. intends to definitively answer this question by sponsoring the Hydra Versus Dragon Coding Competition, a Reality TV-style battle between the world's finest software developers.
The contest show begins August 4th, and offers Java software developers a chance to win more than $8000 in prizes, including a top-of-the-line Mac Book Pro from Apple Computer, UNA licenses and hosting from N-BRAIN and Virtacore, Subversion hosting from CVSDude, and agile training from Industrial Logic.
The Hydra Versus Dragon competition is the first spectator event in the history of software development competitions. The contest is designed to draw tens of thousands of viewers from around the world. Viewers can track the progress of their favorite teams in online episodes, delivered daily over the span of two weeks, and can rate teams to help determine the winner of the competition. These episodes will feature highlights from actual coding sessions, and will be narrated by industry veterans, who will discuss the approaches taken by the different teams.
The Hydra Versus Dragon competition is more than just competitive — it's also collaborative. All qualifying contestants pair up and compete in teams of two, which adds an entirely new dimension that transforms the competition into a team sport. Success depends on more than just raw skill: it hinges on the ability of a team to work together under demanding conditions, freely communicating and collaborating toward a common solution.
Teams compete in the Dragon style for one problem, and the Hydra style for a different problem. In the Dragon style, each team works to solve the problem using a single-user edition of UNA, communicating through e-mail, and using a shared version control repository. In the Hydra style, each team works to solve a different problem using the real-time collaborative edition of UNA, communicating using UNA itself.
The Dragon style mimics how software has been developed for the past few decades, while the Hydra style represents N-BRAIN's approach to software development, which emphasizes working together in real-time as a way to increase quality and lower costs.
Team submissions are passed through an automated test suite, then assigned a score based on the number of passing tests, the quality of the code, the time taken from contest start until program submission, and the rating given to the team by viewers of the competition. Each member of the winning team receives the full suite of prizes, while all participants receive a credit toward UNA Collaborative Edition ($1200 to $2100, depending on team placement).
Note to Competitors: The time commitment for the competition itself is less than 20 hours, spread over a single weekend. See Qualifications for more information.
To participate in the Hydra Versus Dragon Competition, you must meet the following requirements:
- You know the Java 5 programming language.
- You are familiar with version control systems (specifically Subversion).
- You can read and write English well.
- You have a system with at least 2 GB of RAM, and 20 GB of free hard disk space, running Windows, OS X, or Linux.
- You have a reliable, high-speed Internet connection.
- You agree to record your screen during the entire length of the competition, using screen recording software provided by N-BRAIN.
- You agree to provide your real name, a high-resolution picture of yourself, and a mini-biography.
- You agree to provide answers to a series of questions that we ask every competitor.
- You agree to release any code you develop for the competition under the LGPL license.
- Your schedule allows you to compete on a Saturday at 9:00 AM EST, and the following day (Sunday) at 9:00 AM EST, for up to 10 hours on each day.
- You can solve our Qualification Challenge (either alone or with your partner), before the application deadline; or you are chosen as a partner by someone else who solved the Qualification Challenge.
The new application deadline is July 21st, 2008, at 11:59 PM, Mountain Daylight Time..
To qualify, applicants must pass the Qualification Challenge (either alone or with their partner), or be chosen as a partner by an applicant who has passed the Qualification Challenge.
The Qualification Challenge consists of writing and submitting a single Java 5 file, which implements a simple personal version control system. The version control system is most similar to Subversion, but all operations are local, operations are not necessarily atomic, and there is no concept of multiple repositories. Files are referenced by their actual paths (absolute or relative to the working directory) — there is no concept of checking out files or folders.
The code may not use any libraries other than the Java 5 runtime, and must be fully self-contained in a single file (inner or package local classes may be used), with an entry-point main() method that accepts command-lines in the following form:
-
add [full or relative paths to files or folders]
Schedules the specified files or folders for addition to the version control system. If a folder is specified, then all of its contents are added (recursively). If an item is already in the version control system, the operation has no effect on the item (neither is it an error condition).
-
remove [full or relative paths to files or folders]
Schedules the specified files or folders for removal from the version control system. If a folder is specified, then it and all of its contents are removed (recursively). If an item is not in the version control system, the operation has no effect on the item (neither is it an error condition).
After a remove operation is committed, the specified files/directories should no longer exist (except in prior commits, inside the version control system).
-
commit [full or relative paths to files or folders] --message [text message]
Commits the operations scheduled for the specified files or folders, associating the specified text message with the commit. The global commit number is incremented by one, and is associated with the state of the version control system at the moment when the commit operation has completed. If no operations are scheduled, this operation succeeds with no effect.
The commit operation checks for modifications to the contents of the specified files. If these files have been modified, then their new contents will be captured in the version control system, and their history (as reported by the history operation) will record the fact that these files were 'modified' in this global commit number.
The commit operation also checks to see if the specified files have been deleted, and if so, it automatically applies the remove operation to them.
If no files or folders are specified, then all scheduled operations are committed.
-
history [full or relative path to a single file or folder]
Displays the history of the file or folder, in the following format:
C:\foo.txt #151 - added: "Added a dummy text file"
C:\foo.txt #152 - modified: "Updated the content of the dummy text file"
C:\foo.txt #153 - removed: "Removed the dummy text file"where the numbers following the number sign ('#') are the global commit numbers in which the specified operation occurred. Files that have been added in a global commit number are marked as 'added' in that commit number, files that have been removed are marked as 'removed', and files whose contents have been modified are marked as 'modified'.
The format of the path will differ depending on the host operating system.
-
status [full or relative paths to files or folders]
Displays the status of the files or folders that have pending scheduled operations, in the following format:
C:\foo.txt - added
C:\bar.txt - modified
C:\jar\ - removed -
cancel [full or relative paths to files or folders]
Cancels any operations that are scheduled for the specified files or folders. If the contents of some file have been changed since the last commit, then the contents of the file will be reverted to their state at the last commit.
-
revert [full or relative paths to files or folders] --commitno [commit number]
Reverts the state of the specified files or folders to how they existed in the version control system at the time the specified commit number was generated. If some files or folders did not exist in the version control system at that commit number, and are not locally changed, then this operation deletes them. Otherwise, they are left alone.
If no commit number is specified, then the state is reverted to the last commit number.
The program should store all version control-related files in a directory named ".simplevci" in the user's home directory, and should return 0 for success and non-zero if an error occurs.
We estimate the total time required to solve the challenge is 8-16 hours, depending on the approach taken.
For clarifications on the specifications, please visit the Community Forums.
Please submit your solution to the Qualification Challenge using our contact form. We'll let you know within 12 hours if your solution is accepted. We can only accept original solutions to the problem, so we will reject your entry if it looks substantially identical to a submission we've seen before.
If You're Accepted
At least one week prior to the competition date, we will provide you with the contact information for your team member and access to the UNA development environment. We'll also ask you to provide some biographical details and choose a name for your team.
- All developers are responsible for recording their screens using screen recording software provided by N-BRAIN. They must record their screens for the entire length of the competition, from start until completion, and may not edit the video in any way.
- For both the Dragon and the Hydra challenges, developers must collaborate on a single solution. In the Dragon challenge, the developers collaborate through email and the shared version control repository. In the Hydra challenge, developers collaborate in real-time using UNA itself.
- All coding must be 100% original, written from scratch during the competition, and written without the help of anyone who is not on the same team.
The team that has the lowest total score will win the Hydra Versus Dragon Coding Competition. The total score of a team is equal to the sum of their normalized scores in the Dragon and Hydra categories.
The pre-normalization score of a team within a given category will be calculated as follows:
- One point is added for every man-hour worked on the problem.
- One point is added for every automated test that fails in the test suite we apply to all submissions.
- One point is added for every number of the program's average cyclomatic complexity. Automated tests are not included in this calculation.
- If the code has automated tests, then the code is modified in semi-random ways: every time a modification to the code breaks one of its automated tests, a point is subtracted.
- Viewers of the competition can rate each team, which can increase or decrease the total score by as much as 20%.
There's more to the Hydra Versus Dragon Competition than fame, glory, and having a great time with fellow developers (although there's plenty of all three!). Check out the prizes below to see what each winner of the competition receives.
- A fully-loaded Mac Book Pro from Apple Computer.
- One year of virtual dedicated server hosting from Virtacore (CentOS, 1 GB RAM, 20 GB HD), along with a 10 user license for UNA from N-BRAIN, which together provide the ultimate solution for extreme collaboration.
- Enterprise-class Subversion hosting for a year from CVSDude, the leader in Subversion hosting.
- Online training from Industrial Logic, covering a wide range of topics in agile Java software development.
- A full license to TestAssistant, from Blueberry Software.
- A vacation for two to beautiful Boulder, Colorado, home of N-BRAIN, Inc. (continental USA only).
- An iPhone 3G and one year voice/data subscription (USA only).
- Website hosting for a year from WebFaction.
The competition itself requires a maximum of 20 hours, spread out over a single weekend. In addition, each competitor must solve the Qualification Challenge (either alone or with his or her partner), or be chosen as a partner by someone who has solved the Qualification Challenge. We estimate the total time commitment to be around 30 hours.
In this competition, we are looking at real-time collaborative development versus traditional development. If we allowed developers to compete in any language, then we would introduce bias into our study — developers who chose a higher-level language would perform better than developers who chose a lower-level language.
That said, we'll be hosting other competitions in the future, so let us know what your favorite language is. And stick around to vote for your favorite team in this competition!
To avoid bias in our study, we insist that developers use UNA for both the Dragon and Hydra challenges. However, we realize many contestants will not be familiar with UNA, so we give them a week to familiarize themselves with the development environment, which gives teams a chance to learn how to work together in the UNA environment.
Everyone who competes in the competition receives free licenses for UNA Collaborative Edition (up to $2100 worth, depending on team placement).
We will attempt to honor requests to pair with a specific developer. If you have no preferences, we will assign you to someone else randomly. We ensure that all contestants are highly qualified.
We have arranged backups in such a case, so you will be able to compete with a new team member.
Your team member wants to win as much as you do, so we don't anticipate this being an issue.
In order to avoid bias, in each challenge, half the teams must code in the Dragon style, while the other half codes in the Hydra style. However, if there were only a single challenge, then many competitors would not want to compete in the Dragon style, for fear of losing. By having two challenges, every team can code in both styles, and if they do better at one style then the other style, they still have a chance of winning because of the way teams are given their base score (see Judging).
In addition, by using two challenges, we can detect and account for other biases, such as competitor's increasing familiarity with the UNA environment.
Although we are not looking for additional sponsors at this time, contact us and we may be able to work something out.
As developers pass the Qualification Challenge and provide us with background information, we'll add them to this page. Check back soon!
No teams have formed yet. Please check back in a few weeks!
If you would like to discuss the competition, or find a partner on your own, please visit the Community Forums.
Sponsors
Platinum Sponsors
|
|
|
Virtacore provides fast, reliable servers to manage even the most extreme programming. |
Gold Sponsors
|
|
|
CVSDude is a leading provider of Subversion hosting and integrated software developer tools, helping thousands of distributed teams write, release, and rapidly scale their software projects at minimal cost. |
|
|
|
|
Industrial Logic helps organizations scale agility faster by providing expert coaching & training, both in person and via eLearning, in Extreme Programming & Agile Project Management. |
|
|
|
|
BB FlashBack is a leading screen recording program for Windows, whose features include audio support, text effects, full editing control and export to industry standard formats such as WMV, AVI and Flash. |