During last week we had an AWS BugBust re:Invent Challenge from November 29 to December 2 dedicated to fix bugs for the exclusive rewards and a cash prize of 1,500$. Main goal of this challenge was to set the Guinness World Records for the largest bug fixing challenge. Before that such event was only possible to be run internally by organizations who wanted to reduce the number of code bugs and the impact they have on their external customers.
More about AWS BugBust program.
We are very proud with the results of our Accenture DevOps team. One of our team members took 20th rank out of 611 developers in the leaderboard.
Our DevOps Engineer Jaroslavs Rogacs has prepared his review of the event and there you can find tips and tricks how to achieve such great results.
BugBust re:Invent Challenge
This Challenge is open to all developers who have Python or Java knowledge regardless of whether or not they’re attending main re:Invent. There are an array of prizes, available to all who participate and meet certain milestones in the challenge.
As part of this challenge, AWS will be including a myriad of open source projects that developers will be able to patch and contribute to throughout the event. Bugs can range from security issues, to duplicate code, to resource leaks and more. Once each bug has been submitted and CodeGuru determines that the issue is resolved, all of the patched software will be released back to the open source projects so that everyone can benefit from the combined efforts to squash software bugs.
There are some rules for BugBust participation.
- Register an AWS BugBust account and GitHub account (with public email) and synchronize them
- Claim up to 5 bugs in the Events (Bugs Category) – they have 1,3,5 points cost for different Severity and programming language – either Java or Python
- You have 5 hours for fixing the claimed bug – you just need to create a Pull Request for the changes made
- If AWS CodeGuru Reviewer will verify the bug fix – you will receive the points in your profile
By earning the points for the bugs fixed you can receive some prizes for your achievements + a certificate from AWS and Guinness World Records.
And the main prize for the 1st rank in the leaderboard:
- 1500$ in a cash
- Ultimate AWS BugBuster Title
My Personal Experience
I’ve started my journey during the second day when there are already about 200 developers running for their prizes. In the beginning I was little skeptical about how could I earn so many points as other guys in the leaderboard already have about 200-300 points. The categories, severity and points for the bugs were:
|AWS Best practices||Medium||3|
|Java best practices||Medium||3|
|AWS CloudFormation issues||Low||1|
|Code maintenance issues||Low||1|
|Python best practices||Low||1|
In the past I was a Java Developer and decided to jump into Java bugs that are familiar for me… I took few 5-point bugs, checked the description of what need to be done and started to clone huge repositories into my workstation and refactor as requested – it was a bad idea – few thousands lines of code checking for needed ones, meaningful pull request and 10-15 minutes waiting for the message: “No Fix Detected”… waaat???!?! First day (spent 3 hours) ended with 15 points. But okay, I can wish only a sanitizer (50 points) using this strategy.
Next day I decided to change the way I am working.
So the changes introduced to my strategy:
- I should forget about cloning the repositories and trying to fix everything on-fly using GitHub “Propose Changes” → I can’t spend time on commands that take more time than fixing the bug
- Switch to 1-point Python bugs as it offers much easier way to fix them on-fly and less “No Fix Detected” messages received → “A hundred cents makes a dollar”. Not a joke: one developer from 10th place in the leaderboard fixed 803 bugs for 855 points
- Less meaningful Pull Request message like “Refactored” → cmd+c and cmd+v “Refactored” message much faster than writing meaningful “Changed the operator to Python best practice and bla bla bla”
- Create a queue of maximum claimed 5 bugs of 1-point bugs → such factory gives 5 points in 10 minutes and some time to check for other 3 or 5-point bugs how to fix them
- Review your queue of maximum claimed 5 bugs every 15 minutes to avoid bottleneck problem → if you see any bug that during 15 minutes review did not disappear (they can live in your queue up to 5 hours and create a bottleneck) then just Unclaim this bug and take a new one (sometimes there is need check the code why, was it a mistypo or no fix)
- During 3-5 minutes waiting time until the queue will have a space check for 3-5points bugs → its hard to parallel this process but doable
Some 1-point Python and Java bug examples:
With this strategy I got about 50-60 points and everything changed until I found this cute 5-point bug 👌🏻:
I started to receive the flashbacks of my past experience with Python hashlib library and started to mine the points 😏 I claimed all 5-point bugs with the same description. The changes are just few lines of code (like everywhere during this BugBust Challenge):
- instead of using md5() from hashlib → just use any sha***() hashing algorithm and import appropriate library: from hashlib import sha*** + sometimes you need to change the variables or the structure
At this point I understood that there are no complicated bugs at all – you just need to know what are you doing to increase security, remove resource leaks and increase the performance, so no changes to the logic or something else. I got almost 140 points fixing 5-point Python bugs – BugJar is in my pocket 😏
So I updated my strategy and started to mine the points.
Some 5-point Python and Java bugs that are left:
We have new changes to our concept:
- Claim 5-point Python bugs as much as you can → you spend almost the same time fixing 5-point bugs as 1-point
- During waiting time check 3-point bugs → maybe they have the same complexity?
- Check BugBust hints for the bugs → all answers are in the documentation provided with the bug
- Use Dashboard for fetching Suggested bugs in Points: descending order → fastest claims most fat bug
- Set a prize goal → surely you can’t overtake the leaders who are already 500 points in plus than you, but still you can win a hoodie (300 points) or Amazon Echo Dot (500 points) 😊
Main challenge here that most of 5-point bugs have already been taken by the leaders from Day 1, so let’s take the crumbs from the table – 3-point bugs. When I’ve finished with 5-point bugs I started to sanitise 3-point bugs cause the complexity are the same. But sometimes 5-point bugs appeared cause others did not fix them in time (5 hours period).
So I mined during this day (about 6h) it total: 450 points 👌🏻 and left some bugs for the last day.
Some 3-point Python and Java bugs:
I’ve started to mine the points in chill-mode to receive 500 points achievement and my prize: Amazon Echo Dot – I don’t know what is that but sounds interesting
During this day I had a clear strategy and sometimes 5-point and 3-point bugs appeared, but I did not forget about 1-point bugs… so I personally stopped this challenge with 606 points – 4h spent in chill mode, all achievable prizes are in my pocket and I had 15th rank, but still 7h left till the challenge closes – so my rank dropped to 20th in the end.
Total 611 Python and Java developers of all skill levels from all over the world competed to fix as many bugs as possible and…
What we achieved
The achievement of this challenge is great of how many bugs got fixed and how many $$$ saved by 611 developers.
Here you can see all stats and achievements from my side. ~13 hours spent, 308 bugs busted in total, 606 Points scored in 14 Events (Bugs Categories), 12 Achievements.
During last 4 hours I was occasionally watching how this 2 developers danielsoft and StevenVu are going to achieve their goal for the first place – 1500$ in a cash. Most interesting thing is that when I’ve stopped the challenge StevenVu had a 1st place with ~1990 points, but danielsoft was 2nd with ~1940 points. I suppose that StevenVu fell asleep 😴 cause all days was mining this points without any relax. 😳
And do not forget that “A hundred cents makes a Dollar” → LimPeh proved that and got into the leaderboard on 10th place.
My achieved rank on the board during this challenge:
It is a fun challenge created as a game where everyone can participate – you don’t need to be a senior Java/Python developer to achieve the points during this event. Would be nice to participate this event the next year.
And do not hesitate to join this event – definitely you will gain the technical and some fun challenging experience, and maybe you will be the next Ultimate AWS BugBuster 🤩
Article by Jaroslavs Rogacs