I work as a web developer (junior). Recently I took a course where an Olympiad task came across. I could solve it, but the decision was far from ideal (I checked it with the author’s decision). Well, the tasks of this format are difficult for me.

Will Olympiad programming help me in the development of program skills if I allocate 6-7 hours a week?

Hipster tips like "Better connect to the open source project on github" are not relevant.

What literature can advise?

Closed due to the fact that it is necessary to reformulate the question so that you can give an objectively correct answer to the party Nick Volynkin 25 Apr '16 at 7:07 .

The question gives rise to endless debates and discussions based not on knowledge, but on opinions. To get an answer, rephrase your question so that it can be given an unambiguously correct answer, or delete the question altogether. If the question can be reformulated according to the rules set out in the certificate , edit it .

Blocked by member Nick Volynkin 25 Apr '16 at 7:11 .

This question has been preserved because of its historical importance, but it is not regarded as a good question on a topic relevant to the specifics of this site , so please do not consider it as confirmation of your ability to publish similar questions. This question and its answers are frozen, they cannot be changed. Read more: help .

Read more about blocked messages here .

  • four
    Do you think solving Olympiad problems is not a hipsterism? The same hipsterstvo, only old school. - VladD
  • I like your question very much and I support your hobby. But unfortunately it does not correspond to the subject of the site, since too subjective and subject to holivar. To discuss this in free form, come in the evening to chat. chat.stackexchange.com/rooms/22462/stack-overflow-- - Nick Volynkin

1 answer 1

Olympiad programming will give you good erudition in algorithms and combinatorics. In general, very useful knowledge and skills. Tasks that require such knowledge in real life are, but rarely, depends on the knowledge intensity of the subject area.

By itself, the style in which olympiad problems are solved is to perform the task at least in any way, but to meet the set time is usually unacceptable in ordinary programming: usually you need to solve the problem with the proper quality, including the quality of written code, in a reasonable time. Moreover, the skill of assessing development time and the ability to meet the stated time is important. Comprehensibility of the solution is often even more important than performance - because if no one else can figure it out, you will still be rewritten "as simple as that."

The only situation in life that really looks like an olympiad one is when someone (most often you yourself) got stuck on the prode, and you need to urgently find a solution to the problem and fix it.

Successful olympiadnik on ordinary projects is boring - there are few places where you can express yourself, but the sea of ​​routine.

  • 3
    And successful Olympiad often can not readability and software design. - VladD
  • would argue with you, olympiads give a good skill to write trivial things without thinking and from 1 time + immediately quite effectively. Yes, the quality of the code may suffer (for example, there probably will not be OOP patterns and other stuff that slows down the code). If you want to work with big data or write real-time algorithms (for example, high-frequency trading), then Olympiads are practically necessary. But for web development it makes no sense, judging by the php tag, you do not need it. - pavel
  • 2
    @pavel: Any type of OOP garbage will save you if you work on a non-toy project of several million lines. - VladD
  • one
    @pavel: And unsupported and non-extensible code, even if it solves a specific task, nobody needs it anyway. - VladD
  • 2
    @pavel is if you live in an ideal world where ponies poop with a rainbow and TK does not change. I was then asked to help with the scripts for the program for designing furniture - I had to take a ready-made script and extend the functionality. In terms of algorithms, everything is trivial, of course. Difficulties arose only because of ignorance of the nuances of the subject area and the terrible code - starting with the names of the variables (Krepej, Polka, x1, H1, YGL: the latter, as it turned out - the "angle") and ending with the absence of at least some structuring code (making repeating code in the function). The author, apparently, also "wrote a module and forgot." - Daniel Kolesnichenko