Swistakk's blog

By Swistakk, 3 years ago, In English

Hi. Remote team competitions/trainings became something we have to deal with nowadays and I think having a setup you feel comfortable with is something really valuable and nontrivial to achieve that you definitely should not neglect, effort put into this will quickly pay off. In our Polish Mafia team we already participated in many remote competitions and struggled with various technical problems and through trial and error we converged to a setup which I believe is close to ideal. Many of these pieces of advice are applicable to all kinds of remote collaboration, e.g. working on some university projects or research problems, however I felt the biggest need for it during these competitions since they are periods when I really need to be focused hard.

1) Communication
The most important part in remote collaboration is communication. I definitely recommend PUSH TO TALK (that is — an option where you talk if and only if you hold a specified key). Background noises of other people (any kind of keystrokes, noises from other people in their house, barking dogs etc.) are really distracting a lot and will be a real pain during these competitions, so all messengers that don't have Push To Talk option and send all background noises (e.g. Facebook Messenger or Google Hangouts) are definitely not an option. The only easily accessible messenger I know of having this option is Discord and it is the only one that I recommend, but if somebody knows and prefers some other ones they could be an option as well. I mention that in order for Push To Talk to work properly you need to have an app — Discord in browser will not suffice, because Push To Talk will not be system-wide then (you need to have browser window open for it to work and that would be really inconvenient). Apart from background noises, another really irritating sound is your own echo heard with a delay from other teammates. Without Push To Talk you need to have headphones so that other people don't hear their own echo, but with Push To Talk you do not even need headphones (and having headphones through whole duration of a 5 hour contest is rather inconvenient). Push To Talk key should be one that doesn't have any other meaningful function in your environment, e.g. space and enter will be terrible. I personally use Right Ctrl. One more advantage of Discord is that it lets you customize volume for each person, so if somebody is loud and somebody else is quiet because of some reasons, you can just adjust that easily.

2) Drawing
When meeting with your friends it is easy to discuss about some ideas when drawing in your notebook. Sadly, it is not possible remotely. In order to remedy this I recommend any online drawing board that you feel comfortable with, e.g. awwapp.com or idroo.com

3) Screen sharing
On typical contests it is often the case that one member is coding one problem and second member (or maybe even third one if it is close to the end) watches it carefully to immediately catch any bugs in a code that is just being written. In a remote world you need screen sharing for this, so you should use some messenger that has this option. Fortunately Discord has this functionality as well. One more thing worth noting is that person coding being watched by somebody else should probably switch to Voice Activity rather than Push To Talk.

4) Control sheet
That one is rather optional, but considered useful by some. You may prepare a sheet when you will have a state of each problem. In it you may have 3 tables (problems)x(members), where you denote 1) who has read what problems, 2) who was assigned which problems (if you assign them on the beginning of the contest), 3) who works on what. Rows corresponding to accepted problems should be deleted. Example of our sheet is here: https://docs.google.com/spreadsheets/d/1Yd2-QcMVuPsMzLPPEyZHnC2U1Zlan7X8lB636u7hJHs/edit#gid=0 (you may make a copy for yourself)

5) Printing out statements
Printing out statements is another totally optional thing of a personal preferrence. Since I am the guy that distributes problems in our team, I need to make a quick pass through them and distribute them on the beginning and I consider having them printed out convenient for this. Having printed out statements when solving is nice as well. But yeah, that is definitely not needed

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

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I was thinking about an IDE in which only one person from the team can type at a time, it'll be helpful in practising for ICPC because there "who has the keyboard currently" is also an important part of the strategy.

Are there any tools or extensions which can do this?

  • »
    »
    3 years ago, # ^ |
    Rev. 2   Vote: I like it +11 Vote: I do not like it

    I don't know of any, looks definitely too specific for ICPC. And take into account that typing simultaneously is not the only thing disallowed. It is not allowed to simultaneously do anything that requires keyboard time, e.g. using terminal/testing, using Google, searching through your local files etc., so such IDE would be definitely not sufficient for ensuring mutual exclusion. For all kinds of mutual exclusion simulating "working at one computer" we just use voice communication

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I'd just make a special cell for that in the "control sheet".

  • »
    »
    3 years ago, # ^ |
    Rev. 2   Vote: I like it +6 Vote: I do not like it

    JetBrains IDEs have a plugin Code With Me for such reasons. You can code in a single IDE using it.

    Don't really know if it's usable, but it exists.

»
3 years ago, # |
Rev. 3   Vote: I like it +6 Vote: I do not like it

also supporting multiple chat rooms is a plus, when two people want to communicate with each other but the third person is working on another problem. Talking in the second room is helpful to not to disturb the third one.

btw I think discord does not have sufficient screen share quality, it does not provide a high resolution screen (in free option)

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

    This third person can also mute them

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

      Actually, setupping one separate voice chat room should be much more convenient (Discord supports that), no idea why I haven't thought about it earlier.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it -6 Vote: I do not like it

    Maybe something like vscode live share would work for sharing code.