As a finalist in many top programming competitions and expert with 10+ years of experience, Michal Danilak–or better known as Mimino–will be coding away at HackerRank’s 24 Hour Live Coding with Mimino event on Saturday, April 25th. It’s a unique opportunity to learn different techniques used in programming competitions from a professional competitive programmer. Over 1,000 programmers in our community signed up for the event within 24 hours!
If you’re passionate about coding, sign up for the Facebook event here to ensure that you don’t miss it. In excitement for the event, we sat down with Mimino to give you a taste of his road to competitive programming. But, before we dive right into the interview, let’s clarify what to expect out of this live coding event:
What is the 24 Hour Live Coding event about?
Live programming is a relatively new phenomenon in which experienced coders interactively show other coders how they arrive to programming solutions in real-time through YouTube’s streaming channel. Mimino will solve 75+ Project Euler challenges on the HackerRank platform in a 24-hour session. This will be streamed live on YouTube on April 25th starting 9 AM CEST.
Project Euler is a series of programming challenges that require both mathematics and programming elements to solve. All of the Mimino’s source code will be available to the viewers on Github during the event only. Follow us on Twitter and like us on Facebook to get real-time updates on the live coding event. Mimino aims to not only solve all Project Euler challenges, but also to answer any questions you have to help you better understand the approaches to solve the problems.
Why join the 3,000+ coders streaming the event?
The goal of this event is for Mimino to show you the optimal approach to solving programming challenges. You can comment on what he’s doing and he will answer any questions you have that are related to problems, algorithms and programming competitions. It’s a unique opportunity to learn programming from a pro! Bonus perk: We have a special surprise up our sleeve related to the challenges that Mimino will solve! Stay tuned.
Now, let’s get dive in and get inside the mind of a top competitive programmer!
Q&A with Mimino
1. When did you start with programming?
My first programming experience was with Visual Basic, when I was 13 years old. I wanted to learn how to create computer games. Later, when I was 15, I started to learn C++ and at 16 I was introduced to the world of programming competitions.
2. What was your first programming competition and what inspired you to compete?
My first programming contest was Correspondence Seminar in Programming, which is a Slovakian contest for high school students organized by the same people that are behind the famous IPSC contest. I did it when I was 16.
There was no real inspiration to compete. My teacher just asked me if I wanted to do it, because I was the only one in our class who knew how to program and I said “yes.” Now that I think about it, that simple “yes” had a really huge impact on my life 🙂
3. What motivates you to compete?
Combination of curiosity, excitement and feeling of accomplishment. But I think these things really come up from being a part of community where we push and help each other for the higher limits.
4. What have been your achievements so far in competitive programming?
During high school, it was the 1st place in Slovak national olympiad and silver medal on International olympiad in informatics. Since then, I was lucky enough to advance to the finals of the world’s biggest programming competitions, including Google Code Jam, ACM ICPC, Yandex Cup and many others.
5. How important is math for competitive programming?
Every superstar coder has a really strong mathematical background. Most of them have probably also been on IMO once or twice. I believe it is a must-have a for a world-class competitive programmer.
6. What programming language do you use and why?
For programming competitions it is definitely C++. For real work I try to stay from C++ as far as possible and use Python instead. The main advantages of C++ in programming competitions are:
- It is always a supported language
- All the important data structures (binary tree, heap, stack, queue, etc.) are part of the standard library
The main advantages of Python in real life are:
- Expressiveness of the language
- There is a library for pretty much anything
And the greatest advantage of all for Python is that you have a direct access to the source code of all Python libraries, which you can study and play with really easily. For me it is the greatest source of real-life programming knowledge.
7. How many hours a day do you normally code? Do you still train?
I don’t train anymore, but I do program 10+ hours per day, mostly work related stuff. My biggest improvements were during university, when I was motivated enough to practice 12+ hours per day.
8. What do you think is the biggest mistake competitive programmers make?
People very often mistake programming competitions for the measure of being a great programmer in general. The truth is that neither one implies the other.
9. What’s the biggest hurdle you faced in competitive programming and how did you overcome it?
I think the most critical phase, where most people give up, is going from zero to the first success. For me, the first success was winning the Slovakian national olympiad in informatics. Since then I just enjoy the constant marathon of programming competitions and I’m always ready for the next challenge. Until then I was in doubt if I’m good enough and was probably ready to quit.
What really helped me to overcome this critical phase was the power of friends and community around the competitive programming. I cannot stress it enough how important it is not to be alone in this.
10. Is it possible to do great in competitive programming by only using resources available on Internet or in books and without any trainers?
I learned everything from either Internet or books. Community around me is the source of motivation, but the knowledge is out there for free and available for everyone. On the other hand, there are many Russian super-coders that had Andrew Stankevich as a trainer at one point. You can literally see on their rating graphs the exact moment when they started to train with him and went from mediocre rating to top-20 worldwide in a matter of months. So there is definitely a great value in having the right trainer.
11. What advice do you have for other competitive programmers?
Minimize the time until your first success. How? Either work harder or lower your standards for “success.” After that, the work transforms to fun, pain to joy and you will be less prone to give up.
12. Do you train other people?
I don’t train people on a regular basis. I love to help if someone asks me, I help to organize competitions and I write tutorials and answer competition-related questions on Quora.
13. Do you think the top competitive programmers in the world should have more recognition?
I think the current format of programming competitions does not really support people to have fans. Most competitions are done through the Internet with only the name of the competitor available to the outside world. There are only a couple of onsite competitions, but most of them has very restricted access to the competition site. And PR for the competitions is mostly non-existent. So if people do have fans, those are probably just some other competitors. I personally am a fan of some big names in the game.
14. Why did you decide to live stream yourself for the community?
As the title of this article suggests, I would like to show people what’s inside the mind of the competitive programmer. I would like to show people what it looks like to solve the problems in a matter of minutes, when some people spend hours on solving the same problems. I would like to answer the question – what do we do differently?
By doing a live stream, you will be able to see exactly what I do when solving the problems.
How much time do I spend on reading the problem statement, thinking about the solution, implementing the solution and testing? How often do I debug? How do I debug? Which programming language do I choose for which problems and why? What tools do I use?
So to answer the question, I decided to do a live stream to teach people interested in competitive programming in a way that hasn’t been tried before and has a huge potential. I really hope that this event will open the door for more live streams in the future coming from even more experienced programmers than myself. I would definitely love to watch them.
15. Why HackerRank?
I chose HackerRank because of their willingness to try new things in the area of competitive programming. I couldn’t think of a better partner for this feat.