Working remotely is demanding, you have to avoid getting distracted with domestic duties, visits, freedom, flexible schedule, etc.
Getting it right requires developing a new mindset, practices, and habits that will boost both your work quality and your happiness.
Thinking about this:
What's the cost of doing a poor job? What's the cost of doing a mediocre job? What's the cost of doing an exceptional job? Which price are you willing to pay?
These are some of the best practices refined with experience, they are not error-proof nor perfect, and their use, like everything else, will depend on the context.
Define and share your working schedule. You're free to work with the schedule you want, just sync with your team for meetings or events where you must be present.
- plan your day and share it with the team as early as you start working
- greet your team to let them know you've started to work and you're available
- bid adieu when you're calling it a day so no one gets blocked
One key aspect you need to learn to manage is the Perception. Clients, managers, and co-workers needs to know what's happening to correctly collaborate.
- share status updates whenever you start/finish a task. This improves the perception of things getting done
- do regular check-in with co-workers, let them know you're still alive
- track time correctly; add a reference or description of the task you're working
- share your work as soon as you start working on it:
- create a WIP Pull Request
- create and give access to documents, boards, tools
Working remotely may lead to isolation from your team, you ought to be reachable within your working hours.
- let your team know when you will be absent
- use chat status correctly, whenever you're away, update it:
- set BRB when you're going away for a couple of minutes
- set BBL when you'll be absent for a while. Preferably define the time you expect to return
When solving complex tasks, always ask for feedback, an extra pair of eyes will reduce the number of defects and will increase significantly the quality of the deliverables.
- if you get blocked, spent at most 15 minutes looking for a solution then, ask for help in the team channel
- give context and ask properly:
- what's happening
- what do the logs or error tracker say
- what solutions have you tried
- be clear and direct, acknowledge that another person has priorities and our emergency is not one of them
Concentrate the information in a single and shared place.
Conversations, discussions, and, more importantly, agreements tend to get lost in time.
- if you discussed something in a call, take notes and share them in the team channel
- if you discussed in private channel or a thread, replicate the conclusion in the team channel
- for any agreement let your team know and replicate it at the board task. This way, everyone can keep track on reasoning, updates, decisions or any other relevant information for the given task and project
It is said that the single difference between an excuse and a justification is the time it happens.
If you are telling me you weren't able to deliver a task because of reasons, you're excusing yourself. On the contrary, if you let me know in advance the reasons that may prevent us from deliverying, you're justifying yourself.
- Be proactive and propositive
- Anticipate to the events and let your team know
More often than you want to admit, you will be lost due to lack of clarity of expectations.
The task has no description, acceptance criteria, risks, or reasoning. You are told what to do, not what they expect you to achieve and why.
- make requirements less dumb. Requirements must be owned by specific people, not departments
- delete the part or process you can make "in-case" arguments
- either simplify or optimize; DO NOT optimize a thing that should not exist
- accelerate cycle times
- automate, allow technology to do the work
It's easy to get lost explaining what you've been doing; to list the actions or tasks you've been working on instead of the results of those actions.
Even easier is to ignore the blockers due to fear of being considered "not good enought".
Fear not, it is not the case and it never will be, if you are part of a team it is because they believe in you.
- ensure the team knows your blockers
- always assign (tag) an owner to the blocker: the one who will unblock you
- e.g. Need to upload my private key to the server. @kevin
- follow up and make sure a resolution is reached
For some projects, you will need to communicate your standup via slack or email. When you have this opportunity it is essential to define with your client if there is a time when these standups need to be delivered.
There is a common way of writing your standups:
- Yesterday. The Highlight of things you've done the previous day
- Today. The Highlight of things you are going to work on today.
- Blockers. If anything is blocking you and who will unblock you
But we recommend using a self-explanatory template:
- What have I recently accomplished?
- What are my in-progress tasks and or plans?
- What obstacles are impeding my progress?
Prioritize and simplify your schedule. While working on a project, focus on it; pay special attention to syncing activities like meetings, calls or standups; it will be your priority to attend them.
- get ready 5 or 10 minutes before each meeting. Free yourself from your previous task to be available and on time
- be proactive during the meeting
- be ready to always turn on your camera, participate actively
- sync your calendar, enable notifications or anything you want, just make sure to get notified and present in events
You might be asking: what about bad practices? Just think the opposite of these practices.
To summarize, these are some actions you must avoid while working with a remote team:
- isolating yourself from your team
- neglecting to check in regularly with colleagues and managers
- it’s important to make yourself and your work ‘visible’ even if you aren’t in the same place
- volunteering for too many activities, specially the non-work related ones