Top Challenges to Creating High-Performing Engineering Teams
CloudBees sponsored this post.
Hiring the right mix of talent is no longer a nightmare for IT leadership — at least not as much as keeping teams working at peak performance. However, high-performing engineering teams don’t happen by mistake.
Even with the most capable team in hand, extra effort is required to make sure they’re performing at their very best. “High performing” doesn’t just mean code is getting shipped rapidly; it involves direction as well. Your developers can be glued to their screens and getting code out quickly, but still working in the wrong direction.
Is there even a way to attain precision while maintaining a fast software delivery pace? This post examines various challenges that engineering leaders face when building high-performing engineering teams. We’ll also touch on a few ways of solving these challenges, suggesting some best practices that are applicable regardless of the project you’re working on.
Three Questions on Many Engineering Leaders’ Minds
Ask any engineering leader and they’ll have a list of problems stopping them from attaining peak performance from their team. Among these problems, three stand out and are on almost every engineering leader’s mind:
- Is my team working on the priority initiatives that will lead to successful product delivery?
- Where are my teams spending their time?
- How can I enable my teams to deliver increased business value?
Let’s inspect these three pain points a bit closer.
Is the Team Working on Priority Tasks for Successful Product Delivery?
After meetings with the product team, does the development team understand what is required of them? Unless your team answers this question with a positive, they may work on other tasks and deliver something not important to the customer or to the business. Which means lost opportunity, unhappy customers and potentially lost revenue.
Having such a question trouble an engineering team’s leader can lead to even more meetings. Knowing how those can be counterproductive, you have to put in place some system (not necessarily software) to ensure that requirements trickle down and maintain clarity.
With a long-term look at this, an engineering leader may wonder what they need to do to improve conversations with devs and product stakeholders to avoid a “broken telephone” scenario. They will look for other ways to set the right expectations, by connecting clearly prioritized projects to business outcomes.
Where Are the Devs Working and How?
This is mostly a visibility challenge. Dev teams often work within a complex yet loosely integrated set of tools. A lot of visibility into how projects are progressing gets lost as teams grow and as the work moves between the different applications (Jira, GitHub, Jenkins, Slack, and more) in the software delivery toolchain.
Having the visibility and information to report progress on priority projects and predict if the team will hit delivery dates is key. The current and prevalent method of obtaining this information is a painful, manual effort; with a lot of time spent logging in to these tools to find and collect the relevant data. Then, an engineering leader still has to knit the data together before presenting it to stakeholders.
It helps to know what deliverables are being worked on at any given time. Seeing what deliverables get in the way of key initiatives helps teams to have an honest, data-informed discussion on where to compromise. This level of insight is not about making the individual developer write code faster or micromanaging the specific tasks, but ensuring that on a macro level the execution is aligned with priorities. It ensures that teams can work effectively on the most important things — be it a new feature, improving business processes, or enabling future acceleration of value delivery. And maybe most importantly, in this context, this insight enables the managers and leaders to have difficult conversations on how to balance innovation with work to keep the lights on, sustain quality and improve team efficiency.
Aside from manually stitching together data from the different tools, engineering managers and leaders currently have to rely on standup meetings and emails to know the status of each project. All of this data gathering is hard and slow, and it often results in inaccurate reporting. The alternative is hiring an engineer to create a reporting tool on top of a data lake and maintain it. Creating a common data model to normalize the information requires a lot of time and effort, in addition to resulting in an enormous bill.
Where Are the Blockers and Opportunities to Improve?
Another challenge to enabling a high performing and efficient engineering team is the lack of visibility into issues or problems blocking the work from moving forward, slowing the team down and causing delays.
A leader should be able to identify and assess bottlenecks to improve the overall software delivery process across the teams. Automating critical parts of the development process using CI/CD practices are key to improving cycle time. This frees engineers up to be significantly more productive.
On the ground, having a single view into pull requests across projects would help engineering leaders see where long review times or merge conflicts slow work down. This reality can seem impossible, given how many tools and tabs you’d have to cycle through, all the while trying to identify the right data to inform smart decision-making.
Best Practices to Increase the Performance of Engineering Teams
Discussing these three major challenges is a necessary step towards figuring out how best to solve them. Luckily, there are ways of thinking, as well as tools, that enable engineering leaders to rise to the challenge. Let’s go over these next.
Connect Toolchain Data to Get Insight from Visibility
Disconnected tools are the first major blocker to answer any of our questions around developer productivity and focus. Since you’re dealing with disparate tools and need to conjure up useful information from all their combined output, it helps to have all that data connected and streaming into a single system.
The data gathered from across those DevOps tools should show you where developer time is invested, what types of tasks are being done (quantify effort areas) and where the blockages and bottlenecks are occurring. Then, you can take action based on that data to improve the process and team performance.
When pulling data from many sources, making sure that data is homogeneous can be an issue. You need a solution that removes the headache of collecting, correlating and aggregating the information — a common data model that normalizes data from multiple sources so that you can surface key analytics and metrics to make informed decisions quickly.
Always Look for Opportunities to Improve the Process
Discovering bottlenecks and kinks in your software development process and ironing them out quickly is an ongoing effort and must be actively worked on to maintain high performance. An intuitive system will show where gaps, broken builds and/or long recovery times are slowing down the pace of innovation. Making improvement decisions based on what you see on the information you now have becomes easy and so the changes will take effect faster — effectively enabling your team to focus on work that matters, resulting in an effective and efficient engineering organization.
Treat Software Delivery as a Core Business Process
Many organizations have spent the time, money and effort to adopt and then mature DevOps. In this next phase in their journey, engineering leaders must be able to connect the development teams and their efforts with business outcomes, to start showing a return for that investment. Aligning software delivery efforts with business outcomes puts the development teams on equal footing to the sales or operations teams.
CloudBees Engineering Efficiency puts this information in engineering leadership’s hands.
It removes the veil/invisible barrier between DevOps and the rest of your teams involved (directly or indirectly) in the product’s evolution, leaving you with a standardized way to always know (in real-time) the who, what, why and also how around software product development tasks. Gaining this visibility enables the engineering manager and leaders to have data-driven conversations within the team, as well as with product stakeholders and executives across the organization.
Most importantly, it ensures you maintain high performance among engineering teams worldwide.
Schedule a demo of CloudBees Engineering Efficiency to learn more.
Feature image via iStock by Getty Images.