Lots of Coding, Not Enough Collaboration

Mon 03 February 2014 Written by Evi
Evi

I’ve worked as a software engineer for many years and I’ve seen the inside track in various types and sizes of companies. One of the major issues I’ve come across is that software engineers can easily become too focused on the day-to-day work and not pay enough attention to collaborating and communicating with each other.

Before we take a look at what that means, here are three terms that are important to clarify for context:

Extreme Programming

Extreme programming is a type of Agile Development - the focus is all about quality products that are highly responsive to the emerging needs of clients.

Scrum Meetings

These are daily meetings held by developers to examine the problems of the day before, and what will be done on that day. The idea is to examine immediate issues and resolve them.

Code Reviews

A code review (also referred to as a peer review) is designed to identify and correct issues that weren’t picked up during the initial development phase of an application. There is a personal development aspect to a code review and it’s designed to enhance the software as well as the programmer’s skills in the long-term.

These definitions are all about quality, and the idea is that software quality is paramount, or else the deliverable at release suffers. There are other concepts that also relate to those above and they influence the code that’s checked in each day. They also enhance the overall knowledge of the software engineer, and encourage engineers within a team to share knowledge, learn from mistakes, quickly find problems and focus on quality.

This is crucial from a business perspective - low quality code makes for a low quality product. That means unhappy engineers, project managers, product managers and worst of all - it means unhappy clients and users.

The trouble is that everyone in the industry knows how important collaboration is to the end result, but no one is getting it right. Some engineers are 100% focused on development without ever working together and others are drowning in meetings which seem to take up all of their time.

What’s the Solution?

I think the resolution comes from having a firm execution plan, one that allows you to lay out the communication and collaboration approaches that are expected throughout the team. Technical managers and team leaders should have this in place before any project commences.

The plan should match your working environment, for example - an engineer should be required to have another engineer execute a quick code review prior to checking in any code. Each engineer within the team should be tasked with delivering a 15-minute team briefing on a task they are working on or a particularly interesting technological development. Project managers should hold scrum meetings daily and ensure that everyone’s working in synchronicity. In larger organizations with more than one R&D team – teams should be encouraged to meet and cross-pollinate learning and ideas.

It’s ideas like these that aren’t being implemented effectively within the industry at the moment, yet are extremely essential to delivering high quality software projects.