After publishing an interview with Keshav Dhandhania we have decided to continue this project and present you other successful Spoj users, who can share their experience and all wisdom gained during their struggle with Spoj problems. Today we present you Ivan Katanić a finalist in International Olympiad in Informatics a member of Croatian national team in computer contests and a long-time Spoj user with a #11th place in a world rank and almost 1000 solved problems.
Hi, Ivan, starting from our first question: What are you doing now?
Right now I’m finishing my master studies. I’ve just passed the last exam and in the following semester, I will write my master thesis.
What are you writing about?
I’m writing about blockchain technologies. I will focus on smart contracts, in particular on Ethereum – a decentralized platform that runs smart contracts. This subject is not a new one for me as I wrote my bachelor thesis about Bitcoin protocol.
Is that choice connected somehow with your further plans and things you want to do in your professional career?
I didn’t think about what I will do after graduating. I previously thought that I will do something related to algorithms and data structures, area in which I will feel very comfortable, but in last year or so I started getting interested in machine learning and artificial intelligence, so everything is possible.
And from machine learning, you came to blockchain?
I first became interested in Bitcoin when looking for ideas for my bachelor thesis. My supervisor’s research area is cryptography, so Bitcoin was among the choices. I really liked the concept and decided to focus on Bitcoin protocol by studying attacks on Bitcoin anonymity. Back then there was only Bitcoin as a currency and maybe few other applications based on blockchain technology. In general, the concept was just not yet widely recognized. When looking for a topic for my master thesis, Ethereum was a very natural choice and continuation of research I did before. I am going to focus particularly on smart contracts as a concept and study Ethereum protocol as a solution.
I also plan to develop a decentralized application on Ethereum blockchain (dapp) – a collection of smart contracts. It will provide a platform for solving problems where solutions are easy to verify by code.
How is it going to work?
For example, let’s assume that factorization problem is supported on my platform. You might want to factorize big number (eg. RSA), so you could go to the platform and create a new factorization-problem instance with that number as an input and add some reward in ETH. It would then be enforced by the blockchain that whoever comes first and solves your problem instance (submits a factor to the blockchain), receives a reward.
Being rewarded with ETHs for providing certain solutions looks really interesting and we are looking forward to seeing your platform available online.
Let’s back now to your past, you are finishing your studies Zagreb, Croatia at the moment?
Yes, that’s correct.
But you have traveled a lot, you have worked in London, in California as well, so after you graduate are you planning to stay here or move somewhere abroad?
I don’t have any exact plans, but I will probably aim to be in London or somewhere else in Europe. There will be time for making plans after I finish my studies. Plenty of interesting places to work can be found in Europe and I will just have to search for one that fits me most. Of course, the US is also an option, but working permit makes it harder.
What about the works you did already, I have to admit that your CV is very rich as for student. For example, you worked for Facebook, how did you manage to get a job there? There are surely many students who are at the beginning of their studies, how can they get an opportunity to work for similar big companies without even getting a graduation?
I think the easiest way is to solve algorithm problems and win some competitions (laugh). But seriously speaking I get many emails from recruiters from the major companies. It’s not that I found them, they found me. As I have learned later talking with them, some have found me searching Spoj and noticing my ID in the rank under one of the solved problems. The other way is to participate in competitions organized by particular companies. However, you don’t get any advantage for free, it just gets you through that first filter, similar to top university diploma. Companies like Facebook need some form of filtering because there are just too many people who are willing and could potentially work there. In the end, you have to show your skills in the interviews, everything else doesn’t matter.
Coming back to Spoj. I’ve checked your profile, I need to admit it’s quite impressive you did a lot of work. But, maybe you remember the hardest Spoj problem you had?
There is actually one, that comes immediately to my mind – it was CCROSSX – Cross Mountain Climb Extreme. I was really impressed. Maybe it’s not the hardest one I have met on Spoj, but it’s surely the one I can remember after a long time. At the beginning, you remember everything you solved, but after so many, you just start to forget. Now I remember very few.
Did online judges, particularly Spoj, really helped you to improve your skills or was it something else?
I learned a lot of things on Spoj. It started about 2008, I was 15 back then. I went to one of programming camps in Croatia. On that camp, they gave us some lectures on algorithms and then showed examples on Spoj. We had a chance to solve them and compete with each other. This atmosphere of competition did a great job, I felt really motivated and after that camp, for few months I did about 5 problems a day.
I would just look at the problem and if I find it hard I would look on the ranks and find people who managed to solve them. Nowadays it’s much faster as there are lots of tips on the web, you can search the forum or Wikipedia and find some pieces of advice. I started with a very limited knowledge, but after solving few hundred problems I felt much more confident. Then there was a break, I didn’t do much for a year or two when being in high school, I visited Spoj only occasionally.
What would you suggest for the new Spoj users?
If you really want to learn algorithms and understand them deeply, you have to solve some problems. When you are at the lecture when you hear about it, you think that you understand it well, but only after you can try it in practice, to adapt it to a specific situation you will know that you have learned it.
Now, the question regarding your own experience – if you were once again 15 years old, what will you start with.
Well, it’s a really hard question. I think it would be good to start from some communities, it doesn’t have to be a good one, you just need to have the others who will help and motivate you.
But it doesn’t have to be a real world community?
Yes, online communities can also help a lot. I was quite lucky, we had a teacher who knew basic algorithms, that was enough to get started. She has shown us the idea, advised some books and encouraged us.
So the good teacher, who inspires is surely valuable.
From your history, I think the main conclusion is that it’s good not to be a lone wolf, it’s better to work with others.
Yes, that is right. I have obviously worked on my own later, but at the beginning, the support of the others was priceless.
So you mean that there were just good circumstances?
In my case yes. I come from an Eastern part of Croatia. Most of the people I know from programming community are from the capital, so they obviously have access to a better support, academic courses, teachers etc. Meeting proper people and going to camps wasn’t an option for everyone back then.
I asked you about different projects, but could you tell me – what programming gave you, but not in regard to your work, education and but personally, that made you a person you are now.
It gave me a lot of fun, when I was younger I would probably just play video games, but now I don’t do this often. It gives me the same joy to solve some interesting programming problems. I think that after you reach a certain level, this should be even the mayor motivation – just to have fun. It also gave me the opportunities to travel a lot and network with successful people.
Thank you for your time and good luck with your master thesis!