4

How do you guys balance job with competitive programming ?

 1 year ago
source link: http://codeforces.com/blog/entry/59404
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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.

4 years ago, # |

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

4 years ago, # |

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.

  • 4 years ago, # ^ |

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

4 years ago, # |

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

3 years ago, # |

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.

3 years ago, # |

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 hours ago, # ^ |

    May I ask you why you don’t participate in contests recent years? I have a dream to be a grand master, but unfortunately my job is too long, 10:00-21:00 or later. I think a man who can persist in something he love is very cool.

3 years ago, # |

Don't get a job.

  • 3 years ago, # ^ |

    Or make Competitive Programming your job.

    • 3 years ago, # ^ |

      Errichto , is your full time job Competitive Programming?

      • 3 years ago, # ^ |

        I wish. I'm just a Youtuber.

        • 3 years ago, # ^ |

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

          • 3 years ago, # ^ |

            I guess I teach programming.

        • 3 years ago, # ^ |

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

    • 3 years ago, # ^ |

      Rev. 2  

      +15

      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.

      • 3 years ago, # ^ |

        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).

        • 3 years ago, # ^ |

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

        • 3 years ago, # ^ |

          Rev. 2  

          +13

          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)

          • 3 years ago, # ^ |

            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.

            • 3 years ago, # ^ |

              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.

              • 3 years ago, # ^ |

                "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.

                • 3 years ago, # ^ |

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

                • 3 years ago, # ^ |

                  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?

                • 3 years ago, # ^ |

                  I often use the method which EnumerativeCombinatorics 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.

                • 3 years ago, # ^ |

                  You know, you are that one of my friends.

                • 3 years ago, # ^ |

                  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.

                • 3 years ago, # ^ |

                  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.

3 years ago, # |

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

  • 3 years ago, # ^ |

    Rev. 2  

    +51

    Yes, there are 17 m's in the suffix, its easy to remember coz Eminem's birthday falls on 17th October.

    • 3 years ago, # ^ |

      oh wow..superb method to remember no. of m's in suffix..hahha

      • 3 years ago, # ^ |

        Actually his handle a lot easier

        • 3 years ago, # ^ |

          A Fake ID created, just to post a comment here.

        • 3 years ago, # ^ |

          By the way my team name at ICPC 2016 was IIIlIIIllIIlIlIIllIlIllllllIII but I still remember the correct name.

          Quiz: Guess why.

3 years ago, # |

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.

  • 3 years ago, # ^ |

    Akashdeep Nain ?

  • 3 years ago, # ^ |

    Vipul Sharma?

3 years ago, # |

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.

  • 3 years ago, # ^ |

    For all you know, your manager might have a software on your comp that can view your screen :O

  • 3 years ago, # ^ |

    For all you know, LTDT could be your manager.

3 years ago, # |

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

3 years ago, # |

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

  • 3 years ago, # ^ |

    Does this magical job exist?

    • 3 years ago, # ^ |

      Rev. 3  

      +19

      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).

      • 3 years ago, # ^ |

        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).

        • 3 years ago, # ^ |

          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.

      • 3 years ago, # ^ |

        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.

        • 3 years ago, # ^ |

          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).

    • 3 years ago, # ^ |

      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.

    • 3 years ago, # ^ |

      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.

  • 3 years ago, # ^ |

    Rev. 2  

    0

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

3 years ago, # |

Vas a caer Chupetin Trujillo #GAAAAAAAAAA

3 years ago, # |

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.

3 years ago, # |

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.

3 years ago, # |

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.

3 years ago, # |

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 :)

  • 3 years ago, # ^ |

    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." ;-)

  • 3 years ago, # ^ |

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

3 years ago, # |

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

3 years ago, # |

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.

10 days ago, # |

I am new into competitive programming and I am working as well ...So how can I balance my job and competitive programming ? I didn't get the exact answer and how to start which problem set or which contest should I participate Can anyone please guide me ?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK