The Secret to Innovation? Architectural Excellence
The heat is on for organizations everywhere. Customer needs and expectations are ever-evolving—and for many companies, that means a constant push to develop new product features. While this is a natural response in a competitive marketplace, it pays to remember the bedrock of software success: strong architecture.
For solution providers looking to innovate, investing in technology and architecture is a sustainable choice. Powerful, scalable infrastructure not only contributes to the development of new capabilities, but also helps to establish better ways of working. Plus, with an optimized technology stack, your team can spend more time creating products and features that truly delight your customers.
That said, there is a series of smaller steps organizations must take on the path to innovation. In this blog post, we share some best practices for software architecture that can help you create the structure and culture to thrive in the long term.
Best practice #1: Explore emergent technologies
As a first step, examine the core services that you and similar technology providers do well. When you know what makes those products and services work, you can iterate and refine them to a point where they can easily be repurposed across a variety of different use cases. It also opens the door to capitalizing on entirely new ones.
All kinds of industry players do this, and polishing simple product offerings has given rise to some of the strongest examples of technology infrastructure design:
- Amazon Web Services (AWS) is the most notable. AWS first developed a number of tools to maintain their storage, computing, and networking resources—and then created a new revenue stream by refining these tools and renting them to third parties. As a result, AWS established a new business category where companies and industries could thrive from building on the emergent properties of pay-as-you-go infrastructure.
- Salesforce is another example. Having started out as a contact management app, the company has continually invested in customization and extensions to develop a full-fledged platform-as-a-service (PaaS) for database and application development. Now, independent software vendors can integrate or build new application categories within the Salesforce ecosystem, making it stickier and more valuable.
- Okta’s platform also offers a case study here. Both the Okta Integration Network and Okta Identity Engine are complex solutions born from simpler systems: Okta Single Sign-On and identity protocol integrations. Connecting these together created a new way to build applications, and we adapted this to provide identity solutions for employees, partners, and marketplace consumers.
Iterating on our core offerings helped us expand from connecting SaaS apps to handling hybrid cloud systems, and from supporting browser apps to delivering API-ready solutions. Doing the same can help grow your service offerings, too.
Best practice #2: Enhance engineering productivity
Your developers can’t innovate if they’re frequently fixing code or building workarounds for your architecture. Like maintaining a garden, keeping software optimal takes vigilance—because once enough pests or bugs impact an area of code, it’s hard to implement quick and easy fixes.
Unfortunately, developers are likely to apply “band-aid” solutions that work only in the short-term, and if features miss the mark, product managers will let them languish rather than pursue hard-fought evolutions. So, how should you tend to your garden?
Embrace coding efficiency
Adopt processes that systematically improve code, like continuous integration, testing, and delivery, and proactively watching out for problem areas before they deteriorate. Developers usually know where code issues lie, so encourage them to speak up and act to prevent new features from dying on arrival.
Evaluate bigger change
Sometimes, you’ll come across code that needs a larger surgery. For example, components may need to scale beyond their initial implementation to support your next big ideas. Whatever the case, your team needs to determine whether they should keep legacy code, rebuild a solution, or use a third-party offering.
Keep your developers up to speed with the latest tools and techniques, but also keep a discerning eye on the market—many “must-use” trends turn out to be less groundbreaking than first advertised.
Be willing to let go
Custom-built solutions might make sense in the moment, but open source or third-party solutions could better help your organization in the long run. Evaluate whether replacing custom code with external products will save your developers time and allow them to focus on your platform. For any potential solution, look beyond upfront costs to factors like integration capabilities, workflow impacts, product roadmaps, and time needed to implement and maintain.
Best practice #3: Partition your strengths
It’s untenable to have all your developers working across all products and features. Since smaller building blocks usually encourage teams to iterate quicker, it makes sense to break an application into microservices and ‘macro-’services. Think about potential product divisions and split developers across a number of focus areas, giving each team the ability to independently evolve their respective products.
Naturally, product teams focus first on finding a fit between their products and the market. But past that, they need to think long-term about their architecture and dedicate a solid share of resources to architecture growth and performance optimization. Tech companies who make that commitment will create a strong foundation for their apps and a culture that encourages innovation.
If you’re ready to drive innovation and improve customer experiences, check out our Driving Innovation with Architectural Excellence whitepaper to learn more about how technology architecture design can help.