agcreativelab - stock.adobe.com
Finding focus these days can be hard. Even when things run smoothly, developers struggle to achieve unimpeded productivity.
Many companies combat the constant distractions in a work environment with ideas like a no-meeting day policy or flexible schedules, but these might just be superficial changes at best. How can a schedule be flexible if you have a standing 9 a.m. meeting every day -- except the no-meeting day, of course?
If companies really want to eliminate distractions and increase developer productivity, it's time to think more aggressively about the software developers' work environment. Break the rules, change the norms, challenge the status quo -- all that "here's to the misfits" stuff Steve Jobs talked about.
But, what does it mean to be aggressive? At its core, it means changing the culture of the company, from one that enables distractions to one that shuns them. An aggressive approach means going against the grain and trying things that might sound challenging -- or even a little crazy. I can't recommend one singular approach for all organizations to increase developer productivity, but here are a few outside-the-box ideas.
Automate all the things
Automation is hardly a groundbreaking productivity tactic, but most companies aren't automating nearly as much as they could.
On any given day, senior developers could perform code reviews, answer questions, review architecture diagrams, learn new technical concepts and plan future work -- all in addition to writing code. Each of these activities is important in its own right, but the time lost between each act is significant. Productivity experts call these transitions while multitasking context switching. The switch from code reviews to help desk, for example, isn't instantaneous, and some potentially productive time gets lost. Developers take on more collateral damage to their productivity for each additional task they take on.
Automation helps shorten the long list of tasks a developer faces in the day. When the organization understands the work that developers perform on a day-to-day basis, they can identify repetitive tasks to automate and reclaim some time. For example, code reviews can disrupt productivity; incorporate static analysis and linting into prereview automation to give developers less to sort through in their review. It's simply not a useful expenditure of a developer's time to nitpick bracket placement and tabs-or-spaces usage.
Embrace offline by default
Many tech companies are all-remote now. While many debate the benefits of remote versus on-site work, one thing can't be argued: Disconnecting is tough. In the office, a manager or colleague can tap someone on the shoulder when an issue occurs; remote workers rely on Slack or other messages, which might come an inopportune times.
Some companies have instituted asynchronous communication policies. These policies effectively mean that you shouldn't expect an immediate response to any message you send. Asynchronous communication is a great start, but it doesn't change the culture.
To effectively increase developer productivity, an organization should create an offline-by-default policy. This policy means that, unless developers are required to be in the chat, they should shut down Slack, Zoom, Microsoft Teams and any other means of communication.
What about emergencies? The fact is, emergencies are incredibly uncommon. An organization can establish an on-call rotation and an incident response tool and procedure to deal with problems. In most cases, questions can wait a day or two for an answer. Additionally, when the organization embraces offline by default, it can train people to think ahead about what they need, rather than waiting until they need it urgently.
Invest in distraction-free workspaces
In the office, distractions come in many forms: ping-pong tables, social gatherings and even well-meaning co-workers. The same goes for working at home: different, yet constant distractions.
Traditionally, it has been the employee's responsibility to manage distractions. But, why?
To truly eliminate distractions and help increase developer productivity, invest in the work environment. An organization might give developers the choice to work in an open floor plan or in a cubicle -- or even an enclosed office, if you have the real estate. Provide devs with noise-cancelling headphones, virtual reality headsets, fully enclosed desks or anything else that can help them control their space.
In a world where distractions are aplenty, the software development team should have the freedom to focus without harping on a budget. Team goals are worth more than that.