Last year, family vacation time coincided with an extremely difficult period for me. Many projects had to be finished, extremely much work to be taken care of. Equipped with only a laptop and a semi-decent Internet connection, I managed to do most of the work while been 300km away from the office AND enjoyed my vacations as much as I could at the same time.
How I did that is well known to most people doing the same job I do. But now, with the Coronavirus threat forcing more and more people to work from home, this might not be common knowledge to all. This post is mainly targeted to people NOT doing software work - although there are some technical details about our own sector scattered here and there. I think it'll be useful - if not for anything else, just to give some new perspective - to a wider audience.
Our work, as a small company, is developing websites. It's not unusual for such companies to work with both clients and associates scattered throughout the world. But what we are forced to do because of that is exactly what anyone needing to have people working remotely and/or have clients in countries other than their own should try to achieve.
So how do we collaborate?
Setting up for remote work requires some decisions to be made regarding tools that are going to be used. Remote work is simply decentralized work without a set time frame. Everything needs to be easily accessible from everyone, at any time.
First thing we did, years ago, was to throw away any desktop-based email application. That is, applications that force you to have your mailbox saved in just one place, so that you have to be on the physical computer to search your emails. Cloud email services work just as good, if not better. We chose GSuite, but there is also the option of using Outlook 365 or any other cloud email provider out there. Hint: You can still use your desktop client as long as you set it to get emails via IMAP. Using a cloud-based email service helps us access our email from anywhere, including our mobile phones.
Then comes the file sharing issue. When you work remotely, you often need to share files - and attaching them to emails just won't cut it, either due to restrictions from the email providers or your own email client, or due to the fact that you want people to get updated versions of them every now and then. Here's where cloud-based file sharing services come into play.
To send large files once we usually use a file transfer service like WeTransfer. But if we want to share files and update them regularly, we'll go with Dropbox or Google Drive or OneDrive, sharing folders with people. Each time we update a document in those, they have access to the updated version. If we want to simultaneously work on a document or spreadsheet, we'll go with Google Docs, where we can see each others' changes in real time as well as leave notes and chat at the same time. A rule of thumb here is that everything that has to be at the company's disposal never sits on a person's own computer - it's always stored in the cloud, where it can be distributed to and accessed by other people as well.
If we really need to chat or have a more direct conversation including voice and video, and, sometimes, screen sharing, we'll go for Skype / Slack / Zoom / Viber / WhatsApp. When someone has an issue that needs our intervention, we'll launch a screen share via Skype, or even a TeamViewer / AnyDesk session that allows us to remotely control the other person's computer. We even use ScreenCast-O-Matic to create small screencasts showcasing usage of an application or tool to others.
We try to keep synchronous communication (like voice/video chat or phonecalls) to a minimum, unless required. Synchronous communication means that people have to stop what they are doing in order to respond to something that will need their full attention - when you're working with software, this can become annoying after a while, since people (especially clients!) tend to consider a phonecall as the easiest and most direct way to solve any problem the moment it arises - regardless of importance (or time zone!).
We educate our clients not to do that unless it's really, really necessary. One way to achieve that is requesting (or, actually, requiring) them to also send an email or open a task in our Project Management app (see below) describing what has just been discussed in detail. When they undestand they won't avoid doing that by making a phone call, they'll end up not making the phone call at all (well, in most cases anyway!). The advantage of this is that everything is logged and tracked, and you can share this information with other people who may not be available at the time of the direct call.
On the other hand, having a continuously open video conference with a co-worker can help a lot, especially when someone is involved in a situation that needs constant assistance from another person. You work as usual, but keeping a video conference open makes it feel much like you're at the same place, and you can pause your work and ask a question at any time without having to initiate a call first. It's a psychological trick, but helps.
Taking the above a step further and moving to a more comprehensive collaboration on projects, a project management app is usually required. Our choice was Teamwork Projects, which we've been using succesfully for many years now. The secret to being succesful with any Project Management application of the kind is to educate associates and clients, and even be a bit strict about it.
As I mentioned before, people tend to use whatever means they find easier in order to communicate, with the obvious choices being direct calls and email. But things that are agreed in calls have to eventually be written down in order to be tracked correctly, while email threads soon get bloated and very hard to track, especially if a large number of people is involved.
Project management apps, on the other hand, force you to break things down to tasks, each having its own conversation thread, people involved (and notified of any new messages), statuses and categories. You can even break tasks down to subtasks, add estimates, deadlines and other information that can make your workflow much clearer than a bunch of emails and calls. The downside is that you have to enforce this type of collaboration, otherwise it won't work.
We seldom get emails about tasks we have to do any more, let alone those with a thousand CCs in which the whole thread, if printed, can easily cover an entire football stadium. If we do get such emails we always add them as tasks in Teamwork and tell the client to track progress by watching those (they can get notifications by email or log in and track things in real time).
We add tags to tasks to indicate task types and/or stages, and we also use Kanban boards when there are more complex workflows. Teamwork Projects communications is near-real-time, so it essentially replaces chat apps when both parties are logged in and watch the same message thread.
Other little things
It's kind of common in our line of work, but not for everybody else: We always invoice our clients via an invoicing app (we use Elorus). Invoicing by hand or creating digital invoices manually takes a lot of time, is prone to errors, and won't let you track things correctly - even if you only invoice clients in your own country. Invoicing apps have a lot of features like letting the client pay online fast, or sending automated reminder emails when payments are late, and you can easily create reports with aggregates for the quarter or the whole year.
Also, since we operate in Greece, where taxes are high and laws are like spaghetti, it's preferred to use accounting services via a third party to avoid making costly mistakes. We picked an accounting firm that could understand (and work with) new technologies, and we gave them access to our invoicing platforms, while sharing all our expense invoices via Dropbox (yes, we scan paper ones and send them too!) This way, we always know where we're at and the margin for errors is low to none. "Classic" accountants usually drop by your office every now and then, pick up all your invoices and expenses (you'll have to print your digital ones for them!), have them sorted and then take all the appropriate actions. That's a no go, especially with the coronavirus threat now.
I'm deliberately leaving information regarding our specific work out of this post, since it's addressed to a wider audience. A second post will follow, describing how we work with software and how we set up and organize our development environments for remote access.
Happy remote working!