AWS Startups Blog
Finding the Beauty in Code: Building and Solving Coding Missions with CheckiO
Guest post by Liza Avramenko, CEO, CheckiO. Co-authored by Alexander Kulbii and Alexander Lyabah.
CheckiO is an interactive and educational game and competition platform for experienced developers, where you progress through Python coding missions, share knowledge, and compete for elegant and creative code solutions. For novice coders CheckiO includes a self-tutoring community where code review and feedback are game elements.
One thing we’ve learned on our journey is if you have a big vision for your company, be smart about the decisions you make in the early startup stage. An essential and often overlooked detail is planning for the scalability and automation of your architecture.
Our Beginnings
Similar to many other startups, CheckiO began as a hobby. Alex, my co-founder, was working in a bank where he became bored with all the routine coding tasks he had there. Big minds always like to challenge themselves. So he decided to start an online challenge: he and his friends would solve the same coding tasks and then look into each other’s solutions. By doing this, they could exchange coding creativity and learn from each other.
The website gained some popularity and attracted one persistent user, Valentin. He had worked in some secure government structures in the past and had exactly the same need for a creative outlet to challenge himself. So he started volunteering and creating coding challenges for the rest of the now growing community.
When I met Alex, I didn’t know anything about coding, but I loved the concept of “finding the beauty in code” and competing for the smartest algorithms. At that point, I joined the team with the goal of building a top code gaming platform, which would help solve many coding challenges through the gamification of complex engineering tasks. I then brought on board two of my long-time friends, Oleg and Vlad, who are two of the most talented designers in the world.
A Small Bump in the Road
With that team in place, we created CheckiO. We designed a gaming experience so that engineers around the world could apply their creativity around coding. We launched in October 2012 and made a huge announcement about it at the biggest tech conference in Ukraine. And we failed miserably. There was no interest in some coding game. I could even say there was no interest for anything besides e-commerce.
Techstars and Beyond
At that point, despite growing global interest, we decided to close the startup. Alex decided to take time away. He went to the mountains for the New Year holiday and was completely offline. But before he left he forwarded some emails to me that we received to our AngelList account. They were from Techstars (we had no idea who they were at the time). To our surprise, they contacted us and invited us to apply to the accelerator. So during this time, while Alex was in mountains and I was living in Denmark, we applied to Techstars Boston.
The Techstars experience was very crucial for us. Being in the program not only helped us keep alive the project that we all love so much, but most of all it provided opportunities and opened many doors that we wouldn’t have been able to enter on our own. It was great to get a chance to work with the amazing people who run the program, get advice from experienced industry mentors, and talk with world-leading investors. For me, it was incredibly useful to be around other CEOs who struggle with similar problems on a day-to-day basis and to be able to help each other. The experience helped bring us to where we are now.
Coders from Around the World
At CheckiO, we focus on the Python language, which has helped us become a worldwide leader in code training. Universities such as MIT, Georgia Tech, University of Washington, University of Queensland, and many others are engaging their students in code training and exchanging coding tricks with people around the world via CheckiO:
- A professor for the University of Texas told his students that if they reached level 5 at CheckiO they would get at least a C grade, even if they did poorly on the final exam.
- One user from China solved all our missions, each with only one line of code. You can imagine how much that inspired the community!
- Guido van Rossum, the author of Python and our official advisor, reviews coding solutions of random players (who really enjoy the expert feedback)!
As you can see, the mutual support and amazing pool of creativity within the community is the most important thing for us at CheckiO.
Big Vision for Scalability
Having a big vision for a startup is crucial. Whether you are talking to investors, working with the team, or communicating with users, your overall vision should always inform decisions about the architecture of your product. For example, many potential investors want to know about the scalability of a product. This means that your vision should include building a scalable product, which also should be at the center of your architectural plans. And when it comes to developing a big vision, the earlier, the better.
Fortunately for us, we made an early decision to migrate all our services to AWS and to build infrastructure that would require less effort to manage and scale it in the future. The first thing we did while working on the project architecture was to split it into a number of logical parts, where each could be run in a separate instance. This kind of separation makes our services much more flexible in terms of scalability, and also gives us room to improve fault tolerance.
As a result, the project’s architecture has become more service-oriented. Django project? Separate instance. Django admin interface? Separate instance. Twisted code runners? Separate instance! And so on.
Live Environment Testing with AWS
CheckiO is a fairly complex website with a coding editor as well as tons of game and social elements. We run short, two-week sprints, and in those sprints we try to make as many experiments as we can to analyze, learn, and decide on further improvements. Thus, testing and its speed is crucial for us. We test the code performance in live conditions. Running such test instances with code that is not yet rolled out to production gives us the opportunity to make previews and demos without using development machines.
To test efficiently, we just launch an AWS instance of the same size, create another profile in configuration management (altering software versions and some configs to fit development needs), add a profile in the CI system, and that’s it! Whenever a developer makes a commit into a specific Git branch, code is deployed to test the EC2 instance. We can now spin up a new virtual machine to test specific configurations, and as soon as we don’t need it any more, we can just delete it.
Become a Leader in Code Training with Python
We’ve made the lives of our dev team much easier with AWS scalability and testing, and at the same time we also are seeing rapid community growth. CheckiO currently has more than 200 coding missions. This would not be possible without our community. A year ago, we decided to open part of the service and make it accessible for user submissions and modifications. We wanted to give our users an ability to add their own missions to the platform to challenge their friends and the rest of the world.
The UI and UX for creating coding missions is very rich. There are testing descriptions, visualizations of coding solutions, explanations of testing results, and much more. Building such an interface for users to contribute challenges would take ages. So we decided to make things a bit easier.
We opened part of CheckiO on GitHub and invited our users to create a GitHub repository of a particular structure. On our side we simply accept this repository, download all the data, check its validity, and apply it on the server.
This approach provides a couple of important benefits. Users don’t have to create a mission from zero. They can simply take the source code of a mission and adjust it to accommodate their idea. Also, this open approach allows users to cooperate, help each other, and moderate. We also added access for users to crowdsource translations to their native languages through the same GitHub repository.
What’s Next for CheckiO
Currently, coders come to CheckiO to ramp up their Python powers, but we plan to add more programming languages in the future. CheckiO is becoming the code training platform that brings together the smartest engineering minds in the world. And we are making it fun!