I have been working as a remote developer for the past 3 years now. I have gone into an office maybe once a month for the past year at my current position but before that I was 100% remote. The are a lot of things I learned from being a remote developer but here are the main ones, in no particular order.
Communication must be a integral part of a remote company as you already know, but in order to communicate well I think remote employees develop another level of communication that most in-office employees do not have. The ability to understand a persons context just from some text is very hard and almost impossible, which is why I am a firm believers in emoticons 🙂 There is no better way to express your feeling or emotions, at the moment, via text than an emoticon. Something that I think goes hand and hand with using emoticons is communicating frequently. When a team communicates using a real-time messenger tool, like Slack, it can become overwhelming at time since there is a lot going on, but I feel that teams must communicate frequently in order to have a high level of collaboration.
Documentation is probably the biggest problem I see with people who go from working in-office to working remotely. As a remote worker documenting becomes critical when sharing ideas or contributing to a project. For example, if you bring a new person onto a project it would be nice to have a place for them to read and look over all that has been done and what the plan is moving forward without ever having to communicate with them. This frees of time for the people currently managing the project and it also makes the new comer autonomous and able to contribute right away.
Another part of working effectively in a remote team is to have a great project management system. This is kinda obvious but I had to mention it since it is such an integral part of my day. In my current position I use Asana for project management and I love it. Asana allows us to assign tasks to other people and comment on those tasks throughout the process. This way you can basically plan out your entire day and / or week with tasks. This is far more superior that using a single word doc and having people comment on it and then send it to someone else via email.