Software development is at once a cognitive and collaborative task.
Our work is to take a business and translate it into software systems. The “how” of that process is a combination of computer science, experience, knowledge of industry tools and practices, and very hard work. But that “how” covers the cognitive side of software development, in other words – how I use my brain to do the work.
There is a second “how” – the collaborative “how”, and it is no less important than the cognitive one. To build a software product of any complexity today, you need a good team that encompasses many disciplines. Product people who know the business and understand the target audience for the software. Architects who can take the functional and non-functional requirements and logically organize them into segments and capabilities, design systems and govern development. Developers who turn designs into executable code. Testers who make sure the code performs as intended. Technical architects, network engineers, sysadmins who design, build and manage the hardware and network infrastructure for the software to run on. And that is a very brief list, far from complete.
To build good software, the team must communicate all the time. To build good software, the team must be mindful of interrupting one another’s cognitive tasks. Interruptions are unavoidable. But not all interruptions cost the same.
The case of a broken coffee machine
There were two coffee machines at one of my clients’ office. When both were working, it would take 3-5 minutes to walk over from my desk, brew a cup, and walk back. When one was broken, which was often, there would be a line and people would get into chitchat and by the time I would get back to my desk, my mind needed a few minutes to get back into the task at hand.
Keep developers comfortable with hot and cold drinks and make getting them a quick and easy thing.
The case of email chains that won’t die
When an email chain between people on the same team goes beyond the initial volley of send-reply, it becomes an interruption. If clarity cannot be achieved quickly, get up, walk over, and talk in person. Draw on a whiteboard. If the person is not physically at the same office – text, call, videoconference. Emails are not a good communication tool. They are static, easily lost in a busy inbox, easily forgotten.
Teams need good collaborative tools – I personally love Slack and Trello, but there are a ton of tools for any taste and use case.
The case of meetings
Make meetings as short as possible. Don’t invite passive observers – rather send them minutes. End the meeting early once the agenda is covered.
The case of physical space design and noise
Open space helps people collaborate. But if not designed right, it will also be a source of constant noise, visual field disturbance, and endless interruptions. People must have comfortable desks, big enough for work equipment and personal items, some privacy, some isolation from the noise. Comfortable chairs are also a must.
The case of poor hardware and networks
Our tools are huge and require lots of memory. Developer machines is not where you want to save money. If developers are made to work on sluggish machines, don’t expect productivity or quality (or loyalty).
We are constantly researching something or looking for answers – we need a quick and reliable Internet connection.
The case of unnecessary bureaucracy
Whatever you do, free your developers from the administrative burdens. Filling forms, submitting requests is not what software engineers like to do. In fact, it makes us cringe. A manager or scrum master can and should take that burden away from developers.
Removing or minimizing interruptions will result in better software, happier team, and – better business.
There is real money in saving developers from interruptions. After all, their per hour pay is not small. If 2 hours a day is wasted, that quickly adds up to tens of thousands of dollars per developer. So, before you make a decision on office space, network speed, developer laptops, software licenses, and collaboration platforms, ask yourself how much money you may be losing – every day – if you don’t make the right choices.