Now that working from home is being encouraged, many companies are sharing how they're handling it.
Cookpad's work-from-home environment - Cookpad Developer Blog
GMO Pepabo's remote work situation 2020 - Pepabo Tech Blog
Beyond the value of sharing individual know-how, I think it's great for the industry as a whole when companies with large numbers of employees share these kinds of efforts.
The industry and society are made up of individual companies, and it's the people in them who keep things moving — I want to keep that awareness and put it into practice. With that in mind, I've put together a summary of how we communicate at GiFT.
That said, we're currently a team of four, so regardless of remote work specifically, I'd like to share the tools and methods we use to keep track of work and move it forward.
The tools we use
I've put together a summary of our tools here ↓ A roundup of the technologies and services we used at GiFT in 2019 | GiFT Inc.
We mainly use Slack, Notion, ZenHub, Asana, and others, trying out various tools and using them together.
How we communicate
We do things at the company-wide level, the project level, and the individual level.
[Company-wide] Sharing and coordinating resources and to-dos in a daily scrum(?)
The "(?)" after "daily scrum" is because we don't actually do it every day. On Mondays and Fridays, we share the tasks and project progress each person is handling. We're always sharing information via Slack, but that tends to be limited to whatever to-do is happening right now, so in these sessions we casually talk through overall project progress, resource coordination for new projects, and retrospectives on finished projects.
We try to keep it from running too long, while still being able to raise those "what should we do about this?" type questions that don't get picked up anywhere else. Beyond resource coordination, being able to talk about things we want to try or points to improve feels valuable too. One thing to improve is that, precisely because it's casual, we don't set an agenda ahead of time.
[Project level] Estimating each phase in a spreadsheet and thinking it through
For estimates, each person in charge of a given phase — design, then design mockups, then development, and so on — thinks it through themselves and puts it together in a spreadsheet. Everyone weighs their assumed scope and features against the schedule at the time of estimation. Beyond just the estimate figures themselves, we often talk through things like which parts look tricky to build, what's needed by when, and what we need to ask the client for, discussing it over Slack.
[Project level] Visualizing the schedule with Asana and Instagantt
Based on the schedule from the estimate, we create a Gantt chart. We also group things by sprint in ZenHub, but for contract projects with a fixed schedule, it's reassuring to have it laid out as a WBS.
We've tried out various Gantt chart tools, including Trello extensions and the like, but Instagantt has been the easiest to use so far. Japanese input occasionally glitches, which is a bit of a downside, but it's easy to get a bird's-eye view and track project progress.
[Project level] Managing to-dos with ZenHub
For qrop and EQG, which we run and develop in-house, we decide what to build each sprint and manage tasks on a ZenHub kanban board. Since we also want a bird's-eye view of the schedule, we currently use Instagantt alongside it. This is kind of the push and pull between agile and waterfall — it's hard to move without a fixed schedule, but once you've fixed one, it's hard to stay flexible, which is a challenge.
Viewing the schedule as a timeline and having a place to comment on individual to-dos each call for a different ideal UI, so for now we're using both and seeing how it goes.
[Company-wide] Checking on GitHub activity in the #develop channel
Slack has a #develop channel where we can keep tabs on wiki edits, pull request creation, CircleCI test status, and more as they happen. It's much easier to have this kind of log flowing into one consolidated channel rather than scattered across several, since the notifications stay grouped together too.
[Individual] Keeping a "bunpo" in the #times channel
Slack has a "bunpo" (mini-report) channel for each person, and everyone is encouraged to work while talking through what they're doing. This is the article I often cite when explaining it to people. Working Out Loud — cultivating a training culture among team members - Quipper Product Team Blog
The goal is to make work visible, share information, and surface points people are stuck on. Even working remotely, I feel it's important to share that sense of "oh, this person is working on that right now" while we work. It might sound odd to talk about an "atmosphere" when we're all remote, but honestly, even when everyone comes into the office, they're each just facing their own PC. Given that, I think writing things somewhere everyone can see actually makes things more open.
[Individual] Tracking schedules with Google Calendar
We manage schedules through Google Calendar. Coordinating schedules is often genuinely a hassle, so we make sure to keep it properly updated so open time slots are visible.
[Individual] Sharing daily moods with Geekbot
We have Geekbot set up in Slack, and it asks a random question every day.
It's not just about lunch preferences — answering questions about what you did yesterday, what you'll do today, and anything that's an issue gets posted to #general. The questions can be customized individually. It's less like writing a formal daily report and more like an extension of the "bunpo" mini-reports.
We move projects forward using the tools and meetings described above. The only thing we do face-to-face is the scrum; anything involving detailed spec discussions we handle individually. If we connect over Zoom, going fully remote isn't especially difficult either.
Telework was suddenly pushed forward by external pressure, but I want to treat this situation as a chance to build a more diverse and smoother workflow.