January 28, 2021
Strategies for Improving the Performance of Software Development Teams
With heavy workloads and tight deadlines, software development teams have a lot to accomplish in a short amount of time.
Sure, there are plenty of ways to increase developer speed—from all-in-one collaboration software to AI-driven analytics and automated testing. And, there’s also the option of hiring more developers or partnering with an outsourcing firm.
But how can you ensure that teams not only hit their deadlines, but also continue to improve over time and bring more value to your business?
Building and maintaining effective software development teams is mainly about refining the way you manage people and processes, not adding more moving pieces to a problematic strategy.
In this post, we’ll share some productivity improvement ideas in software development that can help you get better results from your talent.
Improving Team Effectiveness in Software Project Management
Set Clear, Attainable Goals
If you want to know how to increase productivity in software development, the short answer is that it all starts with clear goals and reasonable expectations.
Set measurable KPIs that align with business goals and challenge developers—within reason—early on and make sure you outline the expected behavior associated with hitting those critical milestones.
Additionally, when you define your requirements/expectations, provide the team with context.
Outline the “why” behind each requirement and how it helps the team achieve a specific outcome.
3Pillar’s Jaime Salame recommends leaders give teams the freedom to reach goals on their terms and avoid the urge to micromanage. Team leads should champion high-level goals and keep critical milestones in focus that explain why the company set certain goals and how each objective contributes to the big-picture.
Rong Wang says team leaders should provide “structured goal-setting and coaching,” and
Cesar Gutierrez emphasizes the importance of a “goal-oriented mindset,” noting that leaders with that quality have the ability to get everyone on the same page and aligned around a unified strategy.
When measuring software development, you might combine OKRs (Objectives and Key Results), a collaborative goal-setting tool used to set ambitious targets tied to measurable outcomes, with Scrum.
OKRs typically relate to external goals/outcomes like sales, downloads, revenue, or installs, outlined in the company strategy. Scrum, on the other hand, deals with the daily tasks that move teams closer to those high-level targets.
Together, OKRs and Scrum allow teams to decide what functionalities to develop, how to prioritize features, and how to measure success.
The OKR framework takes these subjective decisions and measures them with objective criteria that align with user stories, expectations, and organizational milestones.
Work in Sprints
Agile practitioners already know: effective software development teams work in sprints.
Working in sprints will give your software development team more flexibility and help them deliver high-quality software faster. It also allows you to track and measure the performance on both the individual and the team level.
Having weekly or bi-weekly sprints makes it easier to ensure that everyone stays on the right track. It provides an opportunity to discuss the current state of the project, share suggestions for how you might improve next time around, and offers direction in terms of where teams should focus their efforts. It also allows teams to better define and estimate user stories, tasks, acceptance criteria, and so on, laying the groundwork for making improvements.
Embrace a New Set of Tools
Make sure your team is equipped with the best project management and development tools available.
Effective project management depends on knowing exactly where you stand on key deliverables and where you are in the development cycle.
Keep in mind, however, that it’s easy to go overboard and burden your team with too many productivity tools to the point that they get frustrated and don’t use them, or they waste too much time navigating between apps or learning their way around the latest addition to the tech stack.
We recommend choosing project management, software development, and collaboration tools as a team, allowing developers to try different options so that they can assemble a tech stack that matches their existing preferences and processes.
After all, the best productivity stack is the one people use.
3Pillar Software Engineer Paul Estrada says he looks for “anything that provides a quick summary of what happened while I was working on something else and/or more context re: project requirements/business objectives. Ideally, I can bring myself up to speed within a few minutes without having to schedule a meeting or ask someone for help.”
The best tools aren’t always the most complicated ones, either. Paul recommends teams use a combination of “visual reporting tools, intuitive dashboards, Slack reminders for Code Reviews and Pull Requests. Even the comments in Shared Google Docs.”
With the shift to remote work, you might also consider providing documentation and training that helps teams make the most of their new situation.
That might mean getting together to define new norms around workplace communications, as well as shorter training sessions/group discussions aimed at sharing “collaboration hacks” and shortcuts that make things a little easier.
Technical design & documentation
In software development, technical design and documentation include all written materials related to the product development process. An overview of the system helps engineers, developers, and other stakeholders understand the underlying technology, architecture, and really, why they’re building this product in the first place.
Here’s a look at some of the design docs that can help set the stage for software development success:
Product requirement docs—or PRDs—provide information about the system’s functionality. It should outline product functionality, features, behavior, and the benefits it promises to end-users.
PRDs often include user stories, key use cases, business rules that help developers understand the vision and bring it to life. As such, documentation should be clear and accessible, not overly technical.
No development team can start engaging with a client without a clearly-defined architecture in place to dictate the overall direction of a project or product.
Architecture design documents outline key architectural decisions made by the solution architect and at minimum, should include the following sections:
- Architecture & Design Principles. Outline the architecture and design principles you’ll use to guide the project. For example, if you’re building a product that uses microservices architecture, make sure that’s explicitly mentioned in the documentation.
- Software design document (SDD) template. SDDs are essential for building new products as it shows how the software will be structured to meet product requirements and lays out how data structures and algorithms will be developed to deliver the desired outcome. Additionally, the SDD serves the primary reference for writing the code. In other words, you’ll want to be as clear as possible about the role of each element and how it contributes to the big-picture plan.
- User Stories. Bring your customers into the fold by connecting user stories with business processes and key use cases. Requirements, the SDD, architecture and design principles, etc., all of it centers around delivering an end-product your customers want. Work their voices into the documentation so that developers never lose sight of the core purpose.
- Solution details. Lay out the end-game. What do you hope to achieve with the final product? What services/features/components will be included? Make sure you clearly explain your vision in detail by documenting planned services, components, modules, and why they matter to the consumer and other stakeholders.
Create Feedback Loops to Boost Productivity
Give feedback early and as often as you can. Ideally, feedback should be as close to real-time as possible to provide a more accurate view of team and individual performance.
Feedback sharing can happen on multiple levels. Use 1:1 chats, post-sprint team reviews; you name it. The point is, you’ll want to break away from measuring performance through annual reviews (often seen as toxic or stressful) and build an ongoing strategy where feedback is used as a tool for lifting the entire team.
Feedback loops aren’t just for performance management; they also apply to in-progress coding tasks. For example, it’s a good idea to send a Draft Pull Request with partial implementations or proofs of concept, especially if a project is shaping up to be more difficult than anticipated.
The benefit here is that code gets reviewed at an earlier stage, allowing teams to identify potential issues and what steps they need to take in order to avoid them.
Make 1:1s a Priority
Building on the last section, you’ll want to have as many one-on-one meetings with your developers as you can to provide individualized feedback that drives sustainable performance gains.
For the team to perform as a unified group, you’ll need to make sure that each member has the support/skills/feedback they need to do their best work.
To challenge each member to give their best, set goals for each developer based on their expertise and skills, as well as their personal motivations. This combination allows them to stay invested in your company long-term.
Make Sure that Developers Have a Quiet, Distraction-Free Work Environment
Depending on the type of workspace, your developers may be dealing with distractions that prevent them from doing their best work—or getting their work done at all.
In an office setting, high-traffic open office plans can be particularly detrimental to productivity. Instead, you’ll want to create a space with minimal sound-related distractions (and perhaps offer to provide some noise-canceling headphones, as well).
That said, most teams are working remotely due to the current pandemic. In turn, this means that you can’t control the physical conditions of your team’s new environment.
In this context, providing quiet time extends to the expectations you set around communication tools. Consider creating a schedule that blocks out large chunks of the day for quiet work, allowing workers to shut off Slack notifications, email, and whatever else so that they can get stuff done.
Also, avoid calling video meetings anytime collaboration is involved. While face-time is essential, overdoing it can frustrate team members and waste precious working hours (one recent study found that 75+% of workers feel that virtual meetings are a waste of time).
Instead, managers should focus on communicating updates and feedback through less disruptive communication channels—email, shared documents, project management tools, etc. that support flexible, asynchronous collaboration.
Optimize Workflows for Productivity
In our employee software development survey, Francisco Javier Carvajal Lopez said the best way to motivate developers and improve performance is simple—managers must “respect the team and their time.”
Respecting your team’s time means considering how your internal workflows can be optimized to eliminate as much friction as possible.
Here are a few tips that might help:
- Embrace Productive Procrastination. According to Paul Estrada, sometimes there’s real value in riding out the downtime. He says, “When possible, I practice productive procrastination. For example, if I’m waiting for some tests to run, I might do a quick code review if there are any pending pull requests or answer questions in the community Slack channel. Rather than waiting around and losing momentum, I try to benefit from any dead time.”
- Plan Projects in Advance. Make sure you plan projects well in advance so that if any team member breezes through their tasks, they can always launch right into something new. Effective software development teams aren’t waiting around for something to do. They should (with the help of team leads/project managers) be tackling high-priority tasks in the backlog.
Additionally, ensure that you keep your team informed of any changes in requirements, scope, or deadlines so that they can get prepared as soon as possible. Open communication flow can avoid any issues that could undermine project quality or on-time delivery.
- Leave Room for Improvement. Allow and plan for improvements proposed by the engineers to make development easier. This motivates engineers and can be a way to identify architecture issues or technical needs way before they affect business features.
- Avoid Randomizing the Work. If an engineer is working on Feature A, don’t ask them to switch to Feature B just because the other team is short on resources that day if they’ll just be working on A again tomorrow. While some engineers and developers handle multitasking better than others, it’s important to remember that no one does their best work when bouncing between tasks.
Context switching is no joke—you’re pulling your brain in multiple directions at once, which can lead to bugs, burnout, and hours you can’t account for. One study found that adding one extra project to your workload can cause productivity to fall by 20%, while adding on two extra tasks can eat up about half of your time.
- Eliminate or Minimize Unimportant Tasks. Once you’ve nailed down your human-driven workflows, your next move is building on that “strategic foundation” by automating or eliminating “wasteful” processes that don’t add value to the bottom line.
Check your processes for redundancies. Are there opportunities to automate certain tasks? What about eliminating unnecessary meetings? And when that’s not possible, make an effort to improve how you make use of that time.
For example, you can: create an agenda for each meeting, set a time limit, and close each meeting with an action plan/next steps. Additionally, each meeting should have a clearly-defined purpose that guides the conversation.
In the end, improving developer performance is more about helping teams stay focused on the right objectives by creating the conditions that support productivity than it is about throwing more tech at the problem.
Instead, look for ways you might remove roadblocks in developer workflows, offer ongoing, constructive feedback, and work with developers to create a culture that enables them to do their best work.