Wrangling infrastructure while innovating quickly and keeping developers happy is a constant tug-of-war for many technology leaders, including myself. To streamline some of these efforts, two prominent approaches have emerged in recent years, centers of excellence (CoE) and platform engineering. While both aim to boost productivity and collaboration, they differ significantly in their core principles and implementation methods.
Let’s delve into the key aspects of each approach, examining their strengths and weaknesses to help you determine which might be best for your organization.
Centers of Excellence
The center of excellence approach starts with the idea of establishing a centralized team of experts who possess specialized knowledge and skills in a particular domain. Usually, a CoE is created to formally address an organization’s specific knowledge deficit. This team acts as a hub of knowledge, best practices, and guidance for the entire organization.
Among the CoE benefits:
● More expertise and knowledge sharing: A CoE brings together subject matter experts who provide guidance, mentorship, and training to other teams. This ensures that knowledge is shared across the organization, leading to improved efficiency and standardization.
● Better quality control and governance: A CoE establishes standards, frameworks and governance processes to ensure consistency and quality across projects. In other words, everyone gets on the same page. This helps to reduce errors, improve code quality, and minimize technical debt.
However, a CoE also has potential drawbacks due to centralized decision-making, limited scalability and adaptability. It creates a dependency on a small core group of experts.
Several industry experts are trying to shift the conversation from a “center of excellence” to a “center of enablement” approach. In our recent API trends panel, expert James Higginbotham said, “There’s a lot of automation enablement we need to do for our developers before we even talk about a platform. Let’s shift the conversation to focus on API enablement with a look at centers for enablement.”
Platform Engineering
As software scales out and becomes more complex, DevOps helps to wrangle infrastructure into a usable state for developers to build upon. And what has evolved from those conversations is the world of platform engineering.
Platform engineering focuses on building a robust and scalable technology platform that serves as a foundation for various teams and projects within an organization, with the main goal being to improve developer experience across the board. The PE approach often combats DevOps challenges, including increasing automation and dealing with siloed teams at scale. Other benefits of a PE approach include:
● An infrastructure and tooling focus: Platform Engineering emphasizes the development and maintenance of a shared infrastructure and tooling ecosystem. This enables teams to take advantage of pre-built components, services and frameworks, which reduces duplication of effort and accelerates development cycles.
● Increased self-service and autonomy: Self-service capabilities empowers teams to independently deploy, scale and manage their applications. This reduces dependencies on specialized teams and enables faster time-to-market.
● Flexibility and adaptability: This approach allows teams to experiment, iterate and innovate without being constrained by rigid processes or technologies.
On the weaknesses side, PE practices often require a significant amount of initial investment and setup costs upfront, which smaller organizations and teams may not have the budget or resources to support. They also require continuous maintenance and updates.
The biggest hurdle, however, can often be the potential resistance to change from existing teams. At the end of the day, cultural change can be the greatest obstacle to overcome, and it can take months to fully shift a team to a new approach.
So Which do I Choose?
While a CoE can provide centralized expertise and knowledge sharing, a platform engineering approach can empower teams with self-service capabilities and flexibility. A hybrid approach may be the best route. Use a CoE to drive innovation, provide training and develop best practices. And while they’re focused on that, maximize platform engineering to ensure these practices are scalable and integrated into the development process, providing the tools and environments to keep your developers happy.
When a CoE makes sense
Let’s say you need your team to concentrate and develop expertise in a specific area or your team is focused on innovation and adopting new technologies rather than laying down foundational aspects. In these scenarios, a CoE would benefit you more. Likewise, if your projects require specialized knowledge and close guidance, a CoE would make the most sense.
When PE makes sense
Larger enterprises or teams with multiple development groups working towards similar goals would benefit most from this approach. If your biggest need is to standardize development and deployment processes above all else, Platform Engineering will get you there. Companies with the proper time and resources to invest in building and maintaining a robust platform will flourish with a PE approach.
Regardless of approach, both are focused on streamlining innovation infrastructure and ensuring the happiness of your engineering teams. Both of these things can be solved by one simple golden rule: Always listen to your developers.
Your biggest asset is always your team, and its biggest asset is always leadership that supports those people with the resources they need. So, it’s less about a tug-of-war and a choice of CoE or PE, but more about knowing which helps your company to create innovative software. I’ll leave you with the most important step you can take towards either approach, and that starts with one thing: A conversation with your teams.