Categories
Blog

Lessons from software development in times of COVID-19

Working from home is seen like a great idea these days, since staying at home seems to be the most effective way to combat the spread of the Covid-19 pandemic. As someone who works in the software industry, my work isn’t too disrupted by why or where I work, as long as there’s a decent internet connection. But why is that? A simplistic answer would be that I don’t really need any other materials, or that we’re used to being in front of a screen 24/7 (and that we’re already pretty socially awkward!). However, I believe that the best advantage that software has for working from home is the way we organize our work, using Agile methodologies. The point of this article is to share some ideas, tips and tools, for you to try. 

Disclaimer: of course not everyone can apply these. Or at least not directly. But some ideas can be applied anyway. For instance, having a communication channel with your coworkers, other than WhatsApp applies to most industries.

Organizing the work

So, what is Agile? Agile is a way to organize projects. It is characterized by the division of tasks into short iterations of work and frequent reassessment and adaptation of plans. If we need to do a task, the agile way is to break it down into smaller, simpler parts, and build the ones that add value first. As we do this, we can always find a way to make things better and more productive. 

From these principles (that I’ve disrespectfully summarized in three lines), several methodologies and sets of practices have been born. In this case, I’m going to make reference to Scrum, since it’s the one I like the most, and the one I’ve worked with the most. Scrum emphasizes on daily communication and the flexible reassessment of plans that are carried out in short, iterative, phases of work. Some of the ceremonies included in Scrum are the daily meeting, sprint planning and backlog grooming.

What is a daily meeting, and why should my team do it? The daily meeting is a quick, five-minute video-call meeting in which every team member shares what they did the previous day, what they plan on doing that day, and if they’re blocked. It has several advantages. First, it requires the entire team to get up, get dressed and show up, especially if you enforce the use of webcams. It also helps reduce repeated work, because it’s simple to realize if two people are working on the same task. When working from home, there’s no more small talk over the watercooler about what you’re doing, so keeping everyone in the loop is more complicated. It promotes team cooperation and reduces blockers, since whoever is blocked can ask for help. It’s also a great opportunity, if you have kids, to let them join in and say “Hi”. We can all use an extra dose of cuteness, and it can help them understand that you are working. Just like bring-your-kid-to-work-day, but with less breakables and a mute button!

In order for everyone to have tasks, it’s necessary to organize the pending work. The Scrum way of doing this is keeping a board. I personally recommend Trello, since it’s free of charge and easy to use. (Link here: https://trello.com/guide/create-a-board). With a Trello board, everyone on the team can add in tasks to the “Backlog” list. It can be an actual task, or an idea to analyze with the rest of the team. Each task has a card that people can write comments on, add links, pictures or any other piece of useful information for that task. For example, someone needs to circle back with a customer? Add a ticket with the description, and someone will grab it in the next planning session.

Once we have tasks in the backlog, how do we organize the tasks? First, we should have a weekly 30-minute session to organize the pending tasks. We should keep at the top the tasks that are more important according to our priorities. We should also consider which tasks block other tasks, and which ones add value. For instance, creating a wireframe can be considered less important, but it adds value, since it lets us show an intermediate product to the customer, and validate our design. Thanks to this quick meeting, we can have an organized roadmap, and we don’t lose good ideas, since they are all available on the board.

Finally, we should run weekly or bi-weekly planning as a team. With an organized backlog, knowing which tasks are more pressing is simpler. Each team member should move the tasks that they consider that can be finished in the allocated time. Those tasks are assigned to each team member, and a small picture/name is attached to the ticket, so we can see at a glance what everyone is working on. As the tasks are done, they navigate from “This week” to “Ready for review”, and finally they get moved to the “completed” column. This way, any team member can see what the rest are up to at a glance. 

Team communication

The other important component of a successful distributed workforce are good communication tools. Personally, I believe that companies should use specific communication tools, like Slack or Zoom, instead of phone calls and iMessage/WhatsApp, because it helps create a barrier. If everyone communicates via WhatsApp, we’re all available 24/7, and that is the express way to burn-outville. Also, while working, you only need to have your work related tools open, thus reducing the chances of getting distracted by the other million or so chats going on.

What tools should we use? First, a good messaging tool. I personally recommend Slack. Why? First, it’s free, and easy to use and customize. It lets you have one-on-one chats, multiple-person conversations, private rooms with several people and open rooms where everyone can join in and see what’s being talked about. This helps organize the communication channels immensely. 

A personal recommendation is to use all the versatility that Slack brings. For instance, create a channel with jokes, or other fun stuff. Why? Because it helps people decompress, and share a laugh, like they would if they were sharing an office. The daily jokes and stories we tell every day are lost in the home office environment, so organizations should try to keep the office spirit alive. Also, when chatting, it’s pretty easy to misinterpret someone else’s tone. Sharing a joke is an easy way to remind everyone that all is ok. Finally, having a single place to share the fun stuff keeps the work channels clear of noise.

Another fun idea is to look for shared interests, like games, or dogs, or cooking. Create a channel for this, and let people join in and have fun. This creates the bonds that home-officing separates. Lots of offices have a pets channel, where they share their fur babies’ best pictures, and people from different places and teams get together and share a laugh. 

Which other tools are important? I recommend choosing one video conferencing tool in the organization and learning all its tricks. I like Zoom and Google Hangouts Meet, because they allow screen sharing, have intuitive, easy-to-use interfaces and don’t require your users to add contacts. You simply send your meeting link and people can join in. As another alternative, Whereby is another good tool for simplicity. Remember to keep a neutral background behind you, and let the rest of the household know you’re in a videoconference. It can save you a lot of awkward moments 🙂

So, all in all, keep in mind that there is no better tool for cooperation than good humor and a sense of teamwork; especially to support each other through tough times. And remember, this too shall pass!