Dear competitive coders, (this is as lengthy as 'Codeforces problem statements' and irrelevant to improving your skills, so never mind it if you are short of time, but if you could read it and find an 'AC solution' to my problem, I would like to deeply appreciate it)
The past 2 years made the most tedious period of my life. Time has revealed to me a miserable truth that I am too old to be a coder or even anything. If one takes a look at my rating graph, it would be crystal clear that my 2 years of lifetime has been wasted. The line was just fluctuating around some certain points depending on my emotional states (approximately 1600 at first, then 1850 thanks to the recent "Rating Inflation", I was actually happy with it for a while though). No improvement, yeah, 2 years without any improvement at all. I start to wonder if I am really aging that fast.
Never can I forget the first time I started coding, 8 years ago. When my friends were learning Excel, I was coding my the first infamous Pascal program, "Hello World", for... almost 1 and a half hour (Well I am aware that I was originally not an intelligent being, trying to replace the command name and the ";" for something more beautiful :p and receive red warnings all over the windows, but hard work beats smart mind, I made it run finally). I coded through days and nights since then; stay in the local bookstores to read all the programming books I found till they closed. Now, whenever I attempt to code, my body seems to be functioning on its own, like I want to break something, hit someone, jump back and forth, and even after... trying all, I could never force myself to focus on a problem for long enough, not to mention sometimes I did even give up reading a problem statement because I forgot the sentence as soon as I moved on to the next one. What is exactly going wrong with me? No idea but it is just terrible... but not all. At first glance, it seemed that I just could not improve, but the more terrifying truth to me is that my learning ability has a serious problem. I cannot learn new things. Everything got worse in my class. I still survived through my exams, but all I did were 'sleep till the final day' and write all stuff that I 'already knew long long ago' (thanks God that I study Computer Science). My lectures are hopeless. Over the past 2 years, I simply could not learn a single new thing. My brain seems full even though I know more than anyone, it has always been empty. Is this a symptom of aging? I wonder if it is really too late for me to learn. Am I really that old? I am already 20.
It is not like I don't devote enough time to learning. 'Even more', I can say. I did attend 'all' my lectures, trying to listen to my teacher without sleeping (in the past I often skipped my class and got away from school whenever I could do it officially). I spend nights trying to force myself to read book, all sorts of book, mostly till midnight, many till morning, but all were in vain. I simply could not read at all. Deep inside my mind, I am still able to sense some sort of desire to break through my limit, to fly higher and succeed, but just as soon as I get started, foolish thoughts suck as "Let's eat first", "A movie is nice", "Sleep please". I end up doing nothing, fighting against these thoughts like fighting a loosing battle until no time left any more or even if I somehow I manage to get rid of them temporarily, I end up so tired and loose consciousness soon enough... before they came back.
I understand Codeforces is not a place for self-complaining. I just believe that, among us, there exist many great people, who are old (even older than me) enough to suffer from something similar and are well experienced enough to find a solution for it. I want to know if I have any light hope of gaining back my youth or should I better just accept my age and leave the playground now.
Thank you for reading so far. Your patience and determination are far superior to that of mine. Happy Coding
Have you tried taking a break without trying to think about programming/reading books at all? I often find myself in such situations and I manage to overcome them by just trying to chill out for a few days. And don't set a limit like "Okay, one week and I start again!", you should naturally feel when you are ready to return to the game. Just do whatever you want at that moment — eat first, watch a movie later, sleep, stay awake or whatever comes to your mind.
Oh... I.. did try taking a 'break', but it was not possible to put my thoughts about book, code away. On the contrary, the longer I break, the sooner I want to come back, but as soon as I come back, the cycle repeats. I know, it's sort of confusing :'(
I know but try to fight with this desire to come back. You should understand that it's much better to take a break. If you keep coming back demotivated you will never return your productivity. Think about it. You said you had no progress during some long period of time. And I bet the whole time you were thinking "Oh no, I am not learning anything new", "I must learn these algorithms", "I gotta solve 2151713 problems, how am I going to do this?", "Come on, I really must start solving hard". If you try to sum up what you've been doing during this period, you will see that it's more worrying than solving or learning. If you manage to eliminate these thoughts while taking a break, you will see the result, I promise you. Because when you overthink the situation, you are doing nothing. Just worrying! It's much better to do nothing but without worrying, right?
uhm.. I have to say that you are right!!! Over the last two years, if there is something I haven't tried, it should be like you said, 'do nothing without worrying'. Now if I remind my days of skipping school, there was not a single day I missed my class, felt guilty or worried about whatever was going to happen. It doesn't seem like I have anything to loose now, so why shouldn't I give it a shot? Definitely, I will. Thanks for this advice, it is really a good one.
(Just my curiosity, have you ever been in a similar state?)
Yes, I have! A lot of times and hopefully after a day or two I can get my motivation back. I just try to do some cool stuff which takes my time like go outside (I usually go out to ride a bike while listening to music) or watch youtube videos, I love watching some funny pranks or LeafyIsHere (Oh, I'm gonna get a lot of downvotes for this one :D).
I think this is really similar to how you quit an addiction. Basically, you should focus on what to do rather than what you should not do. Just find things to fill your time, it's not that hard. Suppose you are a coffee drinker and you haven't had coffee for a week. Now imagine that very first sip after the no-coffee week. Delicious, right? The same way, you will return much more motivated. Trust me, I wouldn't be writing this so confidently if I haven't been through it :)
I am 24 :)
Have you tried to refresh your mind with other fields? I mean — coding it's not all about competitive coding, if you are here for 2 years I am pretty sure you have the pre-requisite to solve 95% problems here, and should have no problem with seeking a great career.
Maybe you should try reading some introductions of other areas and see if anything looks interesting to you. It's time to put your knowledge into the field testing!
(I am a Year 1 student that have only started self-learning algorithms half years ago. I think I am pretty much the same as you two years before... What a coincidence!)
I took break and couldn't comeback, anymore.
that is also one of my fear... :'(
Agree with comments above. Competitive programming is tough, and being a 'real' programmer doesn't get you to solve all those mathematical stuff — I mean, rather than keeping learning academic things, learning though creating real software (or just simple electronic utilities) is perhaps another way. Now that you're having a hard time with lectures and books, why not try making real things as a 'break'? IMO knowledge to solve Div. 2 ABC is almost enough for everyday work as an ordinary programmer — you'll get to see a lot more how people build the virtual world, and if some algorithmic stuff is lacking, either search for an existing implementation or just go learn it whenever it's needed. Do notice the difference, computer science & engineering is more than contests ^ ^ Just my own opinions. Best wishes
... and is 20 that old?
... and is 20 that old? well, I wonder myself...
my lack of stamina, lack of concentration, unable to control my body, my empty head always seems full... they are symptom of aging, I suppose :( !!!
thank you for that advice, I did try something new, but as I say I am having serious problems with my learning ability, that is why it is difficult to get out of this. Another reason is competitive programming is deadly addictive, it was like hell whenever I tried to stop.
As for academic work, perhaps you can find a partner (classmate, roommate etc.) with a similar level of skill with you. Learning together helps get rid of boredness in thick books and laziness stopping you from doing work, and each time two people share ideas, one of them practises 'teaching' while the other gains ideas and knowledge — hope this would be of a little help.
And when you want to take a break but the contests keep attracting you, create some cool stuff with your fantastic coding ability, keep practising algorithmic problems (but not too much) and come back when you're ready again. Still my own thoughts though — there are a variety of ways to get through problems and different ways work for different people (as is mentioned in other comments). Hope you can find out your best way to do this :)
"trying to replace the command name and the ";" for something more beautiful :p and receive red warnings all over the windows"
"sometimes I did even give up reading a problem statement because I forgot the sentence as soon as I moved on to the next one"
When I have similar symptoms, it usually means I'm very tired. Do you get enough rest? Coding day and night should be interrupted with enough healthy things going on, like eating, sleeping and going for a walk.
"I cannot learn new things."
When it becomes harder to learn, a proven option is to start teaching others.
For competitive programming, I've found another helpful technique: take a collection of mathematical olympiad problems — preferably for middle school students, then for high school — and solve them.
"I spend nights trying to force myself to read book, all sorts of book, mostly till midnight, many till morning, but all were in vain."
If what you do is not fun, stop and think: do you really need it? There is a vast number of ways in life besides competitive programming.
"I want to know if I have any light hope of gaining back my youth or should I better just accept my age and leave the playground now."
You probably won't get younger unless you are Benjamin Button. But that doesn't mean you should stop doing anything.
teaching others ... really? By some coincidences, I am going to do it officially as an assistant for my ACM teacher, but I doubt it: How are we supposed to get better by teaching others? Is it not just a revision of what we have already known?
If what you do is not fun It is not like it is not fun, it is actually super fun. In my humble opinion, reading or coding, they are like sort of 'legal heroin', the more you try it, the more satisfied you feel but also the sooner your body wears out. When I learnt something new, I was really excited but I felt like my body was not responding anymore, I did feel pain in my eyes like they were going to shut down without my permission. That was why I wonder if my age is the problem for my lack of stamina. There is more in life, sure, but like an addict, it is difficult to just 'drink coffee instead of the dangerous devastating poison'
" take a collection of mathematical Olympiad problems " and yeah, by some other incidences, I did started collecting some a few days ago, I hope it will really help :)) , if you did succeed with it, I have strong belief on this approach
Thank you :)
Teaching a topic definitely helps learning it better. Firstly, you have to get a deeper understanding of the topic than as a "user" — otherwise, how would you answer questions, or just explain in other words? Secondly, there are perhaps new communication types at work when you teach — for example, you may have to actually say things out loud, use a whiteboard, prepare slides — and this definitely has a new effect on your own memory and understanding.
I'm no expert(literally :v) and god knows I've been pushed to my limits of frustration and I've considered quitting more than once. But here's my only advice.
Be kind to yourself :) Don't blame yourself for not being good enough for your expectations. Love yourself. Some things take time, eg: nine women can't make a baby in one month. Similarly, you can't magically develop special abilities. It will take time, so let it be.
Started Competitive programming when I am 23, now I am 26, don't see any prob at all :)