How (Math == Programming) ?
Currently, I am a back end developer with two years of experience. Previously, I had spent five years preparing for international mathematics Olympiads, so you might say that I am a coder who comes from a mathematics background. There have been several mathematical competitions I’ve participated in, but I found IMO the most challenging. I participated three times and won two bronze medals.
Get Jepbar Asgarov’s stories in your inbox
Join Medium for free to get updates from this writer.
There are a maximum of 6 students per country, so all participants are the most talented students of their countries and the challenge is so challenging. That’s why you need to study more and more if you want to be awarded. Throughout this blog, I will be highlighting the benefits of participating in math competitions, for coding. Let’s start.
Feeling responsible
The intense study for this big Olympiad, competing against the smartest students from around the world, made me feel like I am responsible for something. Having been selected in the top 6 of my country, I was filled with a strong sense of responsibility. I felt the importance of my studies and the whole process, even during the preparation for the Olympiad. At that time, I was just 16 years old, and I think feeling that kind of importance at such a young age gave me a lot of experience. By working on projects now, I am able to feel the importance of what I do, and each project is an accomplishment in my eyes. It was much easier for me to adapt to the process when I started my programming career. You must take account of your code. Every manufacturer must be responsible for his product. Your code is your product.
Think outside the box
Mathematicians consider combinatorics one of the most important branches of mathematics. At IMO, when you solve a combinatorial problem, you have to think outside the box. It is not enough knowing several theorems or problem-solving techniques. You need to solve the problem by imagining something different by using the tools, theorems, and techniques. For example, making connection between the problem and another different problem, making chain and solving them backwards till the beginning point. After working on various projects, I realized that solving combinatorial problems looks like the system design of the project. When you start a new project you need to implement numerous features, satisfy the clients, making it scalable and so on. You will have to be aware of so many things. At first, you will divide the whole project into many little parts and start by solving one by one. For example, deciding the kind of database SQL or NoSQL then choosing one database management system from selected category… using REST API or GraphQL … etc. After making all decisions, you need to design the entire system by using those chosen tools. You know if the project is complicated you will have to add your own generated ideas in several parts of project, for example the structure of database. Solving the partial problems, making decisions looks like deciding your problem-solving techniques or theorems or some kind of tools when solving the combinatorics problem. The own generated ideas of your project looks like the extra imagination needed in solving combinatorics problem at IMO.
Testing
If you want to be more than a good programmer, knowing how to write good tests is inevitable. Writing tests is like earning time. You give several hours for writing tests, but you will save much more hours of future by doing this. Like testing the project, solving the Olympiad problems also requires tests. If you are in IMO, you can get maximum 42 points, and it means 1 point is more than 1 point of any other field. You have to look all edge cases. You need to explain all points. If you miss explaining some edge case, your loosing point will be more than that simple missed case. I have many friends who missed the award by just a simple missed edge case. It means that you have to be so aware in the contest. You need to be the testing part. Being in that mind so many years gave me a huge benefit in programming. When you are working project, you start looking at it like a problem and trying to catch all edge cases.
Clean code
In contest, you need to write your solution descriptive and well explained. You should try to not make the jury confused when he reads your solution. If he doesn’t understand your solution when he reads it for the first time, obviously he will not give the full point, and you will have to make extra explanation and objection. I mean, you should write your solution as simple as possible for making it more understandable. In programming, you must write your code like that. It must be descriptive and well explained, your defined functions must tell what they do by itself. Despite how bad is your code it is OK when you are writing your code, you understand what it does, and you can explain to anybody at the development process. But think the case after several months have passed, and some critic bug came out, and you have to solve it. But now nobody understands that meal cooker fridge. You might need countless days just for understanding the code. In the same way as no written test case, you are now spending more time again. You need to save your time. You need to write your code beautifully. Solution in competition is like the code of project. I realized this similarity immediately after I had started programming.
Conclusion
In mathematics, everything is proof focused. You have to prove your word, your statement. If there is no any proof, then the statement has no valuable meaning. If you write your code with its proof together, you would have fewer bugs in future. As you know,time is so valuable thing in this world, then you need to save your future by doing something wisely today. Write your test, make your proof and sleep well….







