Hello there. I would like to share my experience on how I reached Expert in my first 6 months. A few people asked me about that so I am writing a blog for everyone to see and the techniques I used to reach expert in 6 months. I started Competitive Programming 8 months ago. I didn't know except some basics about visual basic programming language and I didn't know except to do some GUI and write basic code. I was introduced to CP and how important it was from university admissions to job interviews. I began to learn step by step new ideas, new algorithms etc... From my experience, I would like to share those important tips from my point of view:
Always train CP with a target. This really helps you to train and read articles(like implementation and algorithms and maths) to reach your target as fast as possible
Train with your friends. Training with your friends and trying to out perform them.
Always take rating seriously and compete online in many sites. Rating sometimes doesn't mean your real performance. Your real performance sometimes might be worse or better than your rating but it won't be further than +100/-100. If rating was to be taken seriously, you would try your best to solve the problem within the contest and prevent rating loss.
Always expect a reward. Even if the reward would take a long time or it would be small, expecting a reward is a really good boost for you to train.
Learn new algorithms and data structures. Learning them is very important(for example DFS,segment trees,Dijkstra,etc...). Mathematics is also very important(especially forming equations,number theories,combinatorics,etc...)
Don't solve too easy problems. Solving too easy problems won't make you get better. Also, you should solve on the topics you are weak on and solve randomly(random solving problems a little bit higher than your rating is one of the best practicing techniques!)
Always try to solve problems you don't get during a real contest. That would teach you new techniques and ideas you missed to think about during the contest!(Suggested by ehnryx)
You should like competitive programming. Most of the time if you like a subject, you would be good at it!(Suggested by ehnryx)
Check the editorial if you failed. Failing is part of the training. Even if you find that you fail a lot, failure will turn to success after you learn the new ideas/techniques/ways of thinking. Most importantly, you should check the editoral if you failed to solve the current problem.
Here is an awesome design made by mahfuzz (Thank you for such a great design! You are really talented my friend):
I hope those tips help. I also thank JoeSherif AnasAbbas Shalaby for helping me through the training and practicing! Also, I was inspired by Benq's rating and how he became LGM in only 3 years showing that nothing is impossible! Thank you for such an inspiration!
If you have any questions, ask me at anytime! Good luck everyone!