bashkort's blog

By bashkort, 6 months ago, In English

https://www.benkuhn.net/thinkrealhard/

When I started programming professionally, I was really excited about figuring out how to become a better programmer. (I still am!) So I asked a lot of people, “how can I become a better programmer?” But nobody gave me very satisfactory answers. They would tell me to play around with obscure programming languages, or study algorithms, or read papers, or do a bunch of other stuff that felt tangential and didn’t really move the needle.

In retrospect, I wish those people had just told me “think real hard.” I was looking for an easy way out—One Weird Trick to Programming Better—but programming is too hard for that.

That’s my preferred reading of the Feynman Algorithm: there is no one weird trick.

Full text and comments »

  • Vote: I like it
  • +234
  • Vote: I do not like it

By bashkort, 10 months ago, In English
  • Vote: I like it
  • +124
  • Vote: I do not like it

By bashkort, 12 months ago, In English

This post assumes you're super ambitious.

But don't take any advice too seriously -- we're all different. This is simply what worked for me and might work for you. Choose your own path.

Useful Links

How do I start?

Advice: join a great community (school, club, ...), try solving problems, and find someone who can answer your silly questions.

I wouldn't have started CP if not for my school. Of course I love solving problems, but there's a thing I love too -- competing (and winning :D). Initially, CP was just an interesting way to try to win my classmates. Only as I've explored the subject deeper I started to love it for its own sake.

Do you really love competitive programming?

Be honest with yourself here. No need to do it if you don't love it. Though make sure not to give up while you're a novice, try to get some understanding of what competitive programming (CP) really is.

Rule of thumb: you love something truly if you enjoy even the parts that others find strange. Debugging, for example.

My level is X. What should I practice?

See what I did when I was at your level:

Do you need math?

Informatics is a part of maths, mostly similar to combinatorics. You need basic maths, and the more -- the better.

I did some math until 7th grade (qualified for national junior math olympiad), though didn't practice too seriously. Later on I was worrying I've quit too early, but now I am sure I quit on time -- if I would have continued doing math in 8th grade, I might not have qualified for the IOI the following year.

On Talent vs Determination

Too much is said on the topic, I don't want to dive deep here. I genuinely believe that we severely underestimate ourselves, and anyone (with enough time and effort) can achieve anything.

Even if you feel you don't perform well at CP, remember that the real IQ test is the ability to get what you want from life. Probably being better than others on codeforces is not your end goal.

When to read editorials?

Find this fine line yourself. I used to be at the far end of the spectrum here -- didn't read editorials at all, as every editorial felt like a lost battle to a problem.

One of the cons of the approach is that I have hundreds of problems that I've tried to solve, but that were left for better times that never came :D. They are marked with yellow in my OI Checklist.

Now I try to read the editorials for the problems I know I won't be coming back to.

How not to worry?

You have to worry. Worrying is simply caring about the result. If you are 100% sure in yourself, you'll start to slack off -- skipping upsolving, editorials, etc. Be 99% sure in yourself.

If you don't worry, you work as usual. And ordinary effort never leads to extraordinary results.

Motivation vs Discipline

They are inseparable. Motivation comes from "motive". What's your motive for practicing CP? If it's genuine, discipline will follow.

In my case, I wanted to get to IOI so bad that I quit all social media, games, and youtube. Didn't come back :)

Further watch: 3b1b's commencement speech.

How not to burn out?

I don't believe in burnout. You might burn out solving Millennium Prize problems without making progress for decades. You can't burn out doing CP for just 3-4 years and tracking your progress easily.

And even if you got tired, it may be because 1) you've found something more interesting, or 2) you didn't really like CP in the first place, or 3) you're not seeing the progress. If that's the case, maybe you should really try something new.

What if I have no progress?

If you are working hard enough and there's no improvement, just wait -- often progress comes in leaps. The rating might stand still for a year, and then jump 100 points in one contest. See the rating graphs of bashkort, never_giveup, allvik66, green_gold_dog, ...

Rule of thumb: track progress in months, not days.

How much to practice?

Rule: In any field, you can't do great things if you're not thinking about it in the shower. credits

I practiced only when I wanted to. In other words, always :) Walking back home -- thinking about a problem. Showering -- thinking about a problem. Half-asleep -- thinking about a problem.

How to set goals?

Rule of thumb: if you are not embarrassed to say your goal out loud to your friends, the goal is not ambitious enough.

Another rule of thumb: if you don't fail at least 50% of your goals, they are not ambitious enough.

Last rule of thumb: set goals such that if successful, will make the rest of your career look like a footnote.

How to find a great community?

Get to a great (boarding) school. Or leverage the biggest advantage over prior generations -- the internet. Find friends, join serves, etc.

Be weird

Even if you are in a great community, be weird. Most of what people around you believe and do is wrong. credits

Read blogs

A large part of my practice was reading codeforces blogs and finding novel tricks. If I was starting again, I'd just read the whole Codeforces Catalog. Here's the funniest trick I've found :)

Know yourself. Self-analysis

Know your areas of genius and weak spots. Get better at the former and try to eliminate the latter. I keep a diary to help me analyze that.

What's after competitive programming?

This is just the first step. Make sure CP is not the last cool thing you do.

"The ability to play chess is the sign of a gentleman. The ability to play chess well is the sign of a wasted life" -- Paul Morphy.

AMA

If you have any interesting questions that weren't answered, write them in the comments. I might answer them if I have time :)


If advice here helped you, I'd love to hear about it (you may PM me :D). A lot of the ideas mentioned were found by reading various essays -- mostly at paulgraham.com/articles.html. In particular, if you want to do great things, make sure to read paulgraham.com/greatwork.html

Other advice on CP you may find useful: Um_nik's, Radewoosh's, ...

Full text and comments »

  • Vote: I like it
  • +390
  • Vote: I do not like it

By bashkort, 17 months ago, translation, In English

Hi everyone! Codeforces Month Of Blog Posts Pt. II has ended at 15th of November. Sorry for the delay of the results!

Overall, we (together with orz and artew) raffled $800! I've chosen 6 blogs to be named winners, and here they are: TeaTime, Iura_Shch, asdasdqwer, CelioPassos, catalystgma win $150 each and cadmiumky wins $50, congrats!

Here are the links and brief reviews of each winner blogs!

Sorry for those who wasn't able to win this time! Make sure to check out every blog in the comment section of the announcement!

Thanks everyone for taking part in the challenge! Hope you liked it :D

Full text and comments »

  • Vote: I like it
  • +212
  • Vote: I do not like it

By bashkort, history, 20 months ago, translation, In English

TL;DR: Post an interesting Codeforces blog until October 15th and win $800+1.

UPD: We decided to shift the deadline to 15th of November!

This blog is inspired by peltorator's Codeforces Month of Blog Posts.

Hi everyone! The last time, this initiative was a gem for me! I've enjoyed every bit of it and the winner in particular — it helped me when I needed it the most. So now I willing to pay back (or forward :D) — by organizing the Codeforces Month of Blog Posts one more time!

Intro

My view is the same as peltorator's one — I am a huge Codeforces fan, it almost replaces me social media, and the blogs section is one of the best parts of it! Many people may be waiting for the best time to publish their blogs — now the time has come!

Rules & Deadlines

The rules are simple:

1. Post something on Codeforces not earlier than 10th of September (00:02 UTC) 2024

We are looking for novel ideas / new views on the topics / tutorials on the topics that we have not seen yet — anything of your choice. It could even be somthing like this comment! — I think you get the idea: write something novel. If I were to judge, one of the best post of the previous peltorator's months was probably his own announcement :D

2. Send me a personal message until 15th of November (00:02 UTC) 2024 with the link to your codeforces blog post

I would appreciate it if you also include a one-sentence explanation at the beginning of your blog post explaining this challenge and a link to the blog post you are reading right now so that more people can learn about it and participate. So the general deadline is 15th of October.

Prizes!

The winner blog post will be awarded with a money prize — $350+1! The runner-up will win $250! The third place will win $150! The forth place will win $50! :)

If you are willing to increase the budget for the winners — also PM me :D

The process of choosing the winner is not decided yet, I may think of two ways: choosing the winner by myself, or the blog post with the most amount of likes. Write your own opinion in the comments sections

Outro

Let the challenge begin! I hope there will be at least one great blog, so my initative won't be left useless :D

801$ is not a small amount — so I believe in you, make something novel, make something that people want!

Maybe we should hold this sort of thing annually? Something like "Codeforces Year of Blog Posts"? Write our ideas in the comments section!

P.S: Check out LI2 Contests!

UPD1: A great friend of mine decided to give an additional $200 for the runner-up! He insisted on remaining anonymous though D:

UPD2: One month left! Additionally, let's thank artew for giving a $100 prize for the third place

UPD2: One month left! Additionally, let's thank orz for increasing the budget by $200!

Full text and comments »

  • Vote: I like it
  • +479
  • Vote: I do not like it

By bashkort, 22 months ago, In English

Hi everyone!

I'm thrilled to invite you to the LI2 Contest — free collection of high-quality contests to master every topic — here, on Codeforces! Group Link! Click here!

Current avialibale list of topics:

Loops; Prefix Sums; Sortings; Binary Search; Recursion; Sweepline; Two Pointers; Linear Data Structers (stack, queue, etc); Graphs, DFS, BFS; Dynamic Programming; DSU; Shortest Paths; Minimum Spanning Tree; Greedy; ...

Why this course?

I believe that finding high-quality problems is the hardest part of practice, especially when you are only getting your feet wet with competitive programming.

There are many lectures and articles, but not so many open collections of problems for each topic.

Time-tested

I guarantee you that this course is time-tested, I used it myself.

LI2 is short for Boarding Lyceum №2 in Kazan — the school I study in. So we've been using this course for years and I can proudly say that we are one of the best schools for studying informatics in Russia, alongside with several other schools in Kazan, Chelyabinsk, Moscow and St. Petersburg.

Some notable people that completed the course from our school are: bashkort, Nutella3000, asafiul, isirazeev, M_bolshakov, Rip_robot, nocap, Pavarishko, lishy2 and many many more!

How To Practise Competitive Programming — The Russian Way

There are two main "How To Practise Competitive Programming" blogs that I really love: Radewoosh's and Um_nik's.

I agree with them both, but want to present the other way that is used in Russia. So here's a brief carrer of a competitive programmer in Russia:

  1. Get into a great school (optional, but much recommended)
  2. Start doing CP in school and/or at weekly held lectures + contests sponsored by big tech companies (like Yandex & Tinkoff)
  3. Attend CP camps in Sirius or camps like SIS — Summer Informatics School.
  4. Solve problems provided by these camps and tech companies
  5. Win a prize medal at the Russian OI
  6. Go to any university you want

As you see, almost all of them are very lucky that they have mentors who provide them high-quality contests. They don't have to worry about what problems to solve. Believe me, I'm an IOI gold medalist from Russia and know the system extremely well.

And these contests (in the LI2 group) are taken from the camps mentioned above, isn't it great?

As a side note, if you don't want your problem to be here, please, contact me right away. To be honest, I believe that they are not kept in secret since everyone in Russia knows them, but still, if you have any disagreement with me sharing your problems — PM me.

Announcement and Discussion For Each Contest

There's an announcement for each contest in the group's blog section. In the blog you will find lectures & artices suggested by me, as well as disucussion in the comment secion under every blog, where you can help each other!

Articles and Lectures include links to pashka's youtube lectures, usaco.guide articles and some cp-algorithms.com articles.

I believe that usaco.guide is one of the best, if not the best, place to study algorithms and solve problems. But I don't see any problem in using both usaco.guide and this course, the more the better!

Additional Practise

But let's be honest, you won't get anywhere without additional practise. It can be codeforces contest or previous olympiads. When I started completing the course, I was practising on past Russian olympiads. Without them I wouldn't get anywhere. So you also need to find other ways to practise additionally not just topic-based contests. Codeforces Rounds are a great way to practise!

For reference, this is my raiting graph when I started completing the course:

What to do now?

Get into the group by clickling on this link. Solve the problems and get better, share the group with your friends!

If you have any suggestions, please, let me know in the comments!

Thanks!

I didn't make the course myself, I only translalted it and published it.

  1. Huge thanks to MikeMirzayanov for making this hole thing possible!
  2. Huge thanks to ilsaf13, the informatics teacher in our school, for maintaining this hole thing and helping us with our CP journey!
  3. All of the people who prepared problems over the years!

Full text and comments »

  • Vote: I like it
  • +152
  • Vote: I do not like it

By bashkort, 3 years ago, In English

Hello everyone! As you might know, IOI 2023 will start at the 28-th of August in Szeged. Let's share your predictions here!

Full text and comments »

  • Vote: I like it
  • +138
  • Vote: I do not like it