Mohinemmmmmmmmmmmmmmmmm's blog

By Mohinemmmmmmmmmmmmmmmmm, history, 13 months ago, In English,

Hi guys ! I'm about to get out of my university and step into the corporate world. In India, most competitive programmers stop competing once they leave college. Most of them are in this game for sake of getting jobs at tech giants like Google, Microsoft etc. However, some people never stop competing. There are some who learnt competitive programming while being employed. If you are one of them who hasn't left competitive programming while working, I would request you to share your strategy. How do you balance to do both while still remaining strong during competitions ? I'm just curious.

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

»
13 months ago, # |
  Vote: I like it +77 Vote: I do not like it

In the day, I work. In the night, I solve problem in my dream.

»
13 months ago, # |
  Vote: I like it +22 Vote: I do not like it

I don't think I maintain the same strength I had in my final years of ICPC participation, though I keep practicing (despite having less time available — I take about 2h commute time + 8h-10h work (considering lunch time) + around 8h sleep, which together with some other meals and hygiene stuff gives me about 2-4h free hours every day) because I know there are still lot of stuff I know little to nothing in competitive programming.

I balance those free hours with other types of entertainment (e.g. tv series) and studying about things I didn't learn at university but are required at work — so what I did was to try out the a2oj ladders (as recently some people complimented it) and to think about the problems during this commute time (which consists of walking and time spent on a train), implementing it when I get home — maybe 1 or 2 days later if I haven't solved it I read the editorial and try to implement it, so my problem throughput decreased a lot albeit I still do something.

There is also some motivation by coworkers, almost every one of them didn't participate in competitive programming, some of them didn't study anything about algorithms in university but a few of them seldom solve some problems on Hackerrank and participate in Google code jam — and those stand in awe when they tell me about a problem and I say something about DP or graph (basic stuff, like DFS or a classic knapsack), after that they ask for resources to learn (for instance, no one of them knew about codeforces though I am not sure how many decided to browse the resources I indicated)

However I didn't manage to participate in a lot of competitions due time constraint (they are usually happening during work time or on weekends when I spend time with my family), so I am also trying the marathon matches on topcoder which are less time boxed.

  • »
    »
    13 months ago, # ^ |
      Vote: I like it +4 Vote: I do not like it

    Thanks ! That's helpful. Time has come for me to maintain a delicate balance between job and competitions.

»
13 months ago, # |
  Vote: I like it -13 Vote: I do not like it

I don't. I study in LU and I contest.

»
4 weeks ago, # |
  Vote: I like it +13 Vote: I do not like it

Apparently, I reached my highest rating while working. I think it can be done, but requires a lot of balancing act. Sadly, I have stagnated, but I think I can improve further.

»
4 weeks ago, # |
  Vote: I like it +40 Vote: I do not like it

In my case, after my 2nd time at the ICPC World Finals, I stopped focusing on competitive programming like a crazy guy. Instead, I take part sometimes, try to do one contest per week on average. I don't spend time upsolving problems, don't spend much time practicing except for contests. Now CP is a must-have part of my life, as I used to love it, I am loving it and I will love it. My skills have been worsening significantly, but I can keep the sense of solving problems :)

P/s: Thanks god, CF contests are usually at midnight in Vietnam, so I have more opportunity to take part. I could not do that when I was working in London.

»
4 weeks ago, # |
  Vote: I like it +79 Vote: I do not like it

Don't get a job.

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it +141 Vote: I do not like it

    Or make Competitive Programming your job.

    • »
      »
      »
      4 weeks ago, # ^ |
        Vote: I like it +9 Vote: I do not like it

      Errichto , is your full time job Competitive Programming?

      • »
        »
        »
        »
        4 weeks ago, # ^ |
          Vote: I like it +29 Vote: I do not like it

        I wish. I'm just a Youtuber.

        • »
          »
          »
          »
          »
          4 weeks ago, # ^ |
            Vote: I like it +16 Vote: I do not like it

          Does Youtube pay enough? Or you also have another job?

        • »
          »
          »
          »
          »
          4 weeks ago, # ^ |
            Vote: I like it +3 Vote: I do not like it

          That can still be very lucrative if you're popular or know how to abuse algorithms. Hauptsturmführer PewDiePie is also "just a Youtuber".

    • »
      »
      »
      4 weeks ago, # ^ |
      Rev. 2   Vote: I like it +15 Vote: I do not like it

      I am always curious about people having a full-time career in CP (I might pursue this direction in the future if I am bored with working as big industry's slaves, who knows). How does this job imply to your career progression? Do CP companies (like HackerRank?, Atcoder?) make enough money and how? etc?

      I would very love to hear rng_58's story/opinion about having a full-time career in setting CP problems.

      • »
        »
        »
        »
        4 weeks ago, # ^ |
          Vote: I like it +21 Vote: I do not like it

        Hackerrank and plenty of similar websites have money because they are about coding interviews and matching programmers with employers. Working for them will make you enough money assuming you don't live in a rich/expensive country. So, go for it if you want to work remotely. You can prepare problems and materials but for sure it won't be on the level of CP contests.

        Just setting problems for the whole life is hard or impossible because you might run out of ideas. The way to go is to become a coordinator/tester, I guess. Some people combine that with working in universities and usually doing some research. I'm quite sure though that you can earn more while working in big companies.

        My plan is to organize classes and maybe camps/workshops myself (ofc. not alone).

        • »
          »
          »
          »
          »
          4 weeks ago, # ^ |
            Vote: I like it +11 Vote: I do not like it

          Wondering if tourist planned to make a life by yearly winning major algorithm contests

        • »
          »
          »
          »
          »
          4 weeks ago, # ^ |
          Rev. 2   Vote: I like it +13 Vote: I do not like it

          I am curious how many problems those companies virtually need for preparing coding tests. Even if you could be paid per problem set, it doesn't mean you could earn billions of dollars if you made billions of problem sets.

          Assume: I think I could write two whole AtCoder Beginner Contest problem sets in a day if I did as a full-time job, and that would sum up to 10 sets in a week. But who on earth would hold beginner's contests that frequently?? What if another coder is interested in doing the same job?

          (By the way I am also interested in teaching CP related courses)

          • »
            »
            »
            »
            »
            »
            4 weeks ago, # ^ |
              Vote: I like it +13 Vote: I do not like it

            Are you sure about that? Writing statements and preparing tests isn't always that easy. Plus you should watch the contest and answer questions, what takes 2 hours itself.

            Hackerearth needs hundreds of trivial problems so maybe they would want such a person :D And you could mix it up with doing harder rounds and then I'm sure you won't saturate the problem-creating market.

            • »
              »
              »
              »
              »
              »
              »
              4 weeks ago, # ^ |
                Vote: I like it +13 Vote: I do not like it

              This is a method one of my friends uses to make easy problems:

              • Choose the type of inputs (the one with a fixed number of integers, like [L, R, X] or [N, M])
              • Choose the type of mathematical facts (e.g. the sum of digits, divisors)
              • Choose what to calculate (e.g. maximum value, # of ~, output everything that satisfy ~)
              • Combine the three to make one problem

              Under this method, you don't even have to spend hours to prepare data sets. Mostly random cases + a few tricky cases would work.

              • »
                »
                »
                »
                »
                »
                »
                »
                4 weeks ago, # ^ |
                  Vote: I like it +23 Vote: I do not like it

                "I can do a shitty job quickly."

                Well, I won't argue with that. Your friend creates boring problems. I hope Atcoder doesn't accept so many of those.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  4 weeks ago, # ^ |
                    Vote: I like it +6 Vote: I do not like it

                  Who cares the first few problems' quality. Beginners should solve a lot of problems to get used to coding anyway.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  4 weeks ago, # ^ |
                    Vote: I like it +36 Vote: I do not like it

                  Who cares? Those who solve those first few problems ;p

                  Not everybody competes to excel in competitive programming. Some do it for fun, some for simple practice. Why won't we put some interesting problems there to show them that competitive programming is something they can enjoy?

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  4 weeks ago, # ^ |
                    Vote: I like it +28 Vote: I do not like it

                  I often use the method which TozanSoutherpacks wrote to make first some number of problems on ARCs. It is extremely useful, and I agree that I can prepare 2 ABCs everyday.

                  The process to make problems can be divided in following steps.

                  • Come up with problems. Once we succeeded to “stop” our brain so that we cannot think about hard things, it takes 5 mins in average to come up with an easy problem. What is important here is to think about the future: you prepare the problems. You should discard the ideas, that you need to write complex generators and problem statements. The problems, which can be explained in one line, and have inputs with constant number of integers, are best.

                  • Write statements, make solutions and make test cases. It should be easy task, if you properly made problems. Once I did RTA to prepare first 3 problems of ARC. It took only 40 mins.

                  You may think that the problems produced by this procedure is boring. But, in nature, easy problems are nothing other than boring, since it tests whether the competitors know the grammar of the languages and idea of time complexity. Interesting problems should be harder because they require some thinking, and too hard for very first problems.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  4 weeks ago, # ^ |
                    Vote: I like it +33 Vote: I do not like it

                  You know, you are that one of my friends.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  4 weeks ago, # ^ |
                    Vote: I like it +17 Vote: I do not like it

                  I don't argue that it's possible to quickly prepare a boring problem. But I explained why you shouldn't. Don't write ARC if you don't care about its participants.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  4 weeks ago, # ^ |
                    Vote: I like it 0 Vote: I do not like it

                  I don't know the examples of interesting problems, which are suitable for very first problems. If it is a contest for Div.1, I don't take this method because the easiest problem is enough hard to make it interesting.

                  And I didn't say that I don't care about the participants. The main purpose of very first problems is testing whether the participant know the basic grammar of languages and the way to implement some basic functions (such as, standard io, taking max of array, reversing a sequence, calculate Fibonacci). I think that my "automatical" problem-producing method produces the problems which satisfies this condition, because I combine these techniques. Although the problems are boring for me because I already know how to implement the basic things, it doesn't mean these are bad problems.

»
4 weeks ago, # |
  Vote: I like it +20 Vote: I do not like it

do you exactly know how many 'm' are there in your id...hahhah(*difficult to login if once logout by mistake)

»
4 weeks ago, # |
  Vote: I like it +12 Vote: I do not like it

One of my friends whom I look upto reached his highest rating while on the job, he got FB Hackercup T-Shirt, did great in round-2 in GCJ, got ranked in top 50 Indian coders on Codeforces, all this while he was working. I don't know how he consistently did CP but his job was of a full time problem setter at Hackerrank, maybe that played an important part.

»
4 weeks ago, # |
  Vote: I like it +41 Vote: I do not like it

When I started working, I stopped because most of the cfs were during the working day. But now I put some sql on another tab, and I'm always prepared to push alt + tab when someone comes close.

»
4 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Depends upon whether you've got Saturday off or not :P

»
4 weeks ago, # |
  Vote: I like it +21 Vote: I do not like it

Or maybe find a job where designing algorithm is the main skill?

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it +58 Vote: I do not like it

    Does this magical job exist?

    • »
      »
      »
      4 weeks ago, # ^ |
      Rev. 3   Vote: I like it +19 Vote: I do not like it

      Yes, which is the main work I'm doing at Facebook right now :) (maybe the algorithm itself is too simple for you, but I still find it interesting none the less).

      • »
        »
        »
        »
        4 weeks ago, # ^ |
          Vote: I like it +13 Vote: I do not like it

        But will it actually provide any benefits for your competitive programming skills? Unless the job itself resembles competitive programming, and so do algorithms that you have to work with — I doubt that developing/optimizing "some algorithm" would be very helpful.

        For example, in my current project at Google I really don't have sufficient math knowledge to understand some of the parts (it requires knowing statistics, and I don't have that background), but I don't even think that learning corresponding theory would make me better at something like Project Euler — leave aside actual competitive programming.

        The only part of my job that I find related to competitive programming is test-solving problems for Google programming competitions (which would cover all problems from Google Code Jam and Google Kick Start).

        • »
          »
          »
          »
          »
          4 weeks ago, # ^ |
            Vote: I like it +10 Vote: I do not like it

          Like anything else, it's up to your goal. Probably the algorithm in your day job is not sufficient (nor useful) if you are training to be 2800+/3000+/whatever higher rank are there. On the other hand, I find real world algorithms tend to be more "rich" and flexible, partly due to the ambiguous nature of real world work.

      • »
        »
        »
        »
        4 weeks ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        What's your position at FB and which office are you in? I'm starting work at FB London in 2 months so I'm hoping to find an interesting position.

        • »
          »
          »
          »
          »
          4 weeks ago, # ^ |
            Vote: I like it +10 Vote: I do not like it

          I work at Menlo Park in Data Infra. From my experience, positions in infra team tends to be more algorithmic-friendly (unless you have some very specific area you can/want to specialize on).

    • »
      »
      »
      4 weeks ago, # ^ |
        Vote: I like it +5 Vote: I do not like it

      Depending on how broadly you understand designing algorithms, I have it. Mostly not regular competition-like algorithms, but there are often specific constraints I have to optimise for, e.g. 100 kB of memory. Yesterday and today, I was optimising a piece of assembly: "hmm, is it better to use an IT block after the CMP or a BGT branch?", "where do pipeline delays occur?" and so on.

    • »
      »
      »
      4 weeks ago, # ^ |
        Vote: I like it +21 Vote: I do not like it

      Research jobs on the field of theoretical computer science are kind of that, I think. We can publish paper by just solving CP-like problems.

      As you know, the CP problems related to real world are usually boring, because the real world is too complex. The real world is not fully mathematical and that is why CP is much more interesting than real world. Here, in research jobs not on IT company, you do not need to consider about the shitty real world and you can concentrate on CP-like things.

  • »
    »
    4 weeks ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    Hi ll931110 what do you do in Facebook? Since what age did you work there?

»
4 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Vas a caer Chupetin Trujillo #GAAAAAAAAAA

»
4 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

I think in the beginning of CP, it's about knowledge, you learn basics, dp/number thoery/ graph theory/etc. After this stage, you don't need lots of time to learn. The game becomes competitions about brain power. You just spend half an hour or so to keep your mind sharp. Besides, job is more important. Pratice without being noticed by your boss.

»
4 weeks ago, # |
  Vote: I like it +34 Vote: I do not like it

This topic isn't really relevant for me, as I stopped practicing 2 years ago (and started working full time 1.5 years ago), but I'm going to share my perspective anyway :)

Yes, most of the contestants stop any sort of active training after getting a job — either because they want to do something else besides programming, or because now they have less time and prioritize other hobbies, or because they did CP solely for having it on their CV.

Your job is typically 40 hours per week. Let's say you need 63 more for sleep. You are left with 65 hours for everything else. Which is more time than you take for sleep.

Yes, there are very few students spending something at least remotely close to 40 hours per week on their studies, so typically you have more time there. Also things like family come in play at some point :)

You can easily practice 20+ hours per week while having a job — and while some students may have more time for practice, I would still say that 20 hours/week is more than a lot of World Finals teams average.

One of my coworkers averages 20 hours per week or so for his endurance sports training (and since training varies over the time, he'll have even more in his peak weeks), and takes part in events like UTMB and Swissman — while also managing several reports at work and having family (with a small child) in his personal life. Another one does cycling fairly seriously, averaging well over 20 hours per week — he already has 14000 km distance, 160 km elevation gain totals this year. Another dude is spending around 20 hours per week training as a musician.

I also know people employed full time and still actively doing competitive programming.

If I ever decided to try actively practicing CP while being employed — it shouldn't be too hard, since my working hours are flexible and I can take a break for almost any contest during the workday.

As far as I can tell from what people are typically complaining about — it is not your job that is competing for your time with CP. It is a bunch of random stuff like watching movies or playing computer games.

»
4 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

I am not a legend. But I have intense attachment with CP for last 4 years. Through my UG program, I've participated many onsite and online contests. But, after completing my Bachelor last month, I am having a feelings that may be I won't be able to participate in CP like before anymore. And for this reason, I wanted to join a remote job so that I can manage more time to spend with my own and with CP. That was not a wise decision for me as my very first job I guess, and I realize it very soon. So may be I will try to find an onsite job soon. But, overall, its feels like I am an abandoned child of CP.

»
4 weeks ago, # |
  Vote: I like it +15 Vote: I do not like it

You can pursue algorithmic academic career which is like kinda more mature competitive programming and at the same time 1) make your job enjoyable, 2) still have a lot of free time. Win-win :)

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    This is a real good idea. Next year, I want to try for higher education. May be that time the advanced and mature CP will make my research and study more enjoyable. But for now "In the day, I work. In the night, I solve problem in my dream." ;-)

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it +23 Vote: I do not like it

    Do you have recommendations/examples for an algorithmic academic career?

»
4 weeks ago, # |
  Vote: I like it +13 Vote: I do not like it

I can't balance job with competitive programming. For this reason I am going to stay with my parents :D.

»
4 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

I don't balance job with competitive programming. I just enjoy both separately. But now a days, often I can't prioritize competitive programming because of other responsibilities. That's why my rating dropped, but honestly I don't care for it anymore. Just want to enjoy as much as I can and continue participating in this fantastic arena.