While I was learning basics of programming at my high school, I was being taught how to solve problems: sort an array, reverse a String, convert Roman numerals to Arabic, etc. It was never expected from me to write code that would be altered or checked by another person. Usually, it was enough for the code to work, and to return correct output for a given input.

Some years later my university days started. I studied Mathematics and CS, and on my first CS exam I did all tasks, I tested them, and they worked, so I was expecting my first A+. But I got a B. I ran to my Assistant Professor’s office to tell him that he had made a mistake.

- I came to him, all confident, and said: “I saw the exam results, and I think you have made a mistake. I am sure that my code works as expected.” - “Yes, it does,” he answered. - “So why did I then get a B?” - “Because it took me 60 minutes to see why it worked.”

And why is that, you may ask?! Well, the longest variable’s name in my code had two characters in it, and its name was s1 . At that point, I realised that from that day on, my code would be read by others, so I started commenting it.

As you can see, I learned some things the hard way, but you don’t have to.