Coding in the time of Covid
As a team of software engineers and consultants, we’re constantly working together to deliver quality software to a broad range of clients across many industries. Most of our daily activities, such as software development, project tracking and knowledge sharing, rely on face-to-face interaction or open discussions. We follow agile methodologies, to deliver projects effectively, and we often dynamically divide our time across several concurrent projects.
Covid-19 has restricted where we can work, limited how we can interact as a team and how we communicate with our clients. We are having to rethink how we operate to continue to deliver “business as usual” and keep our productivity high. How do we maintain our productivity and quality standards while working remotely? How can we continue to work as a team, share knowledge and socialize? How do we continue to grow our team into the future?
We used all the tech at our disposal to make home working setups that are comfortable, productive and focused places to work.
We communicate and collaborate through Microsoft Teams, using video calls for project stand-ups and to collaborate on project work. For software development, we are staying agile by using screen-sharing and even live sharing of development environments to allow many developers to contribute simultaneously.
We have remote access to all our continuous integration (CI) tools thanks to our development network, so our version control, testing and delivery processes are up to standard. Many of our development platforms, prototype products and devices are also remotely accessible, so we can keep doing our full-system regression testing, we just can’t see the LEDs flashing!
We’re now recruiting remotely too, as we’re always on the lookout for the latest software development talent! We’re attending online recruitment events and we’ve started doing interviews remotely using online code-pairing tools to replace face-to-face technical interviews.
Creating a Cool Workspace
We’ve turned our spare rooms, kitchens, dining tables and bedrooms into our own personal offices in the search for a Zen space to get some work done. Having a good working environment is a top priority when you know you’re going to be spending a lot of time in one place, especially if you’ve got some challenging code to get working!
We asked our team to send us photos of their workstations and some tips for getting the right home working setup. Our top tips were:
- Get a laptop riser: A cheap and easy way to make your laptop screen usable as a secondary monitor. Even a spare cardboard box can do the trick.
- External mouse and keyboard: One of the many things you might have left behind in the office, an external keyboard and mouse can make a big difference to the speed that you can do those repetitive actions.
- Make a standing desk: A larger cardboard box or, if you’ve got enough furniture, a smaller lightweight desk stacked on your desk can make an improvised standing desk (check it’s stable first!).
- Get a decent headset: If you don’t have the luxury of the house to yourself, then a good headset with a mic will ensure you can hear and talk clearly but the rest of your family won’t. Remember, there will be a lot of video calls!
- Upgrade with some monitor arms: A more expensive option but a great way to free up more space on your desk and make sure your monitors are at the correct height. Some of our developers already had them for their personal computers.
- LEDs are awesome: Add some bling to your work setup with LEDs in your desktop, strips on your monitors or even a binary clock!
Here are some pictures of our WFH set-ups:
Staying Agile
It is critical to keep projects on track, even with everyone in separate locations, and maintain our key agile ways of working. The development teams of our projects continue to stay agile by holding daily stand-ups, sprint reviews and sprint planning via video calls. We’ve introduced real-time online whiteboard collaboration tools, such as Miro, to engage everyone in a meeting and bring out the most innovative thoughts from team members. This has been great for penning up ideas in sprint planning and feedback in sprint retrospectives.
Pair programming is a key practice that we use during development - two brains are better than one after all! We find that it greatly increases the quality of the software written and is an excellent way to share technical knowledge around the team. We have successfully transitioned to remote pairing and we have found that screen sharing during video calls is an essential tool. One developer will navigate, usually the more experienced or familiar with the project material, and the other drive by writing and testing the code. Social distancing naturally lends itself well to enforcing the driver and navigator roles of pair programming. In addition, we’re experimenting with the live sharing of development environments, such as Visual Studio Code, where multiple team members can connect to a development session but work from their own computer. This avoids a lot of the problems with low video quality when streaming one screen to another computer over a limited internet connection, which can be a real headache!
Keeping in Touch
We have started doing a capability wide stand-up each morning. These short daily meetings are an effective way of keeping the entire team in touch and helping everyone feel connected, especially for those not currently in a project team or working directly with a client.
To have a bit of fun, we have been holding virtual pub trips on Friday evenings, where anyone from the team can stop Inn with a drink in one hand and a laptop in the other. It has become a great place to share stories about the strange things that we have seen or done during lockdown.
Growing our Team
We’re now recruiting remotely too, as we’re always on the lookout for the latest software development talent! We have started holding interviews remotely and we’re using an online code-pairing tool to replace the whiteboard, which is essential for discussions in face-to-face interviews.
We’re attending online recruitment events too, which are an important place for us to be able to speak to students and other potential recruits and introduce them to all the innovative projects we get to work on. Many universities are making their careers fairs virtual too so we will be attending as many as we can!
Growing the technical knowledge of our team internally, we have started running our regular educational seminars and workshops online, mainly through video calls and screen sharing presentations. These sessions are often recorded for future use by anyone that couldn’t attend and to help new team members get up to speed with topics quickly.
We even ran a mob-programming session via Teams using screen sharing and remote control. The aim of the session was to rapidly develop some software features of a project, using the collective knowledge of everyone participating. We have been experimenting with this style of extreme programming which, if organized correctly, can result in a large amount of progress in a short space of time and allow many developers to become familiar with a project.
Get in Touch
At PA, we’re putting a lot of effort into supporting our clients and people through these uncertain times, and you can read more about how we are Responding to Covid-19 on our website. Intrigued by what you see? We can help your software development program stay on track, so get in touch if you want to turn uncertainty to your advantage and make the most of working remotely. If you’re excited by what you see, and you want to be part of a team that’s engaged, productive and connected, then apply to one of our open positions or get in touch with a team member. You may be just the kind of person we’re looking for!
Here's one of our open positions: Experienced Embedded C++ Software Enginee
✌️✌️
Some great and useful tips Charlie👍👌
Great post. Nice one!