The key difference between a project and a product is how the vision and requirements are driven. A project is solely driven by the customer's requirements, as it is designed and built for them. Meanwhile, a product team has a roadmap that guides the development, considering factors like industry trends, future predictions, and customer requirements. Customizing the product for specific customers can be a challenge for product teams, especially in industries like airlines where each big customer has unique business processes. The key difference between a project and a product is how the vision and requirements are driven. A project is solely driven by the customer's requirements, as it is designed and built for them. Meanwhile, a product team has a roadmap that guides the development, considering factors like industry trends, future predictions, and customer requirements. Customizing the product for specific customers can be a challenge for product teams, especially in industries like airlines where each big customer has unique business processes.
These modifications can be achieved through the use of design techniques for standalone software, but they are more challenging in API-based applications due to various reasons.
Digital transformation continues to dominate boardroom discussions as businesses increasingly realize the organizational and cost efficiencies that digitization can provide. For many, application programming interfaces (APIs) are an essential component of merging the old and the new IT platforms, capturing vast amounts of data, and ultimately achieving their digital transformation strategy.
An API is an agreement between two parties, and if the agreement changes, external consumers must update their client applications accordingly. This can be challenging in real-world scenarios where various tasks, such as discussions and testing, are involved. API versioning minimizes this impact. If API publishers need to change the agreement(only for breakable changes), a new version is introduced with the changes, while the existing API version remains available for existing consumers. However, this creates additional challenges such as increased support costs from maintaining multiple APIs, especially in multi-tenant platforms with thousands of APIs. The solution is to minimize API versioning and changes.
Product companies aim to provide maximum functional flexibility to their customers to boost sales. This is achieved in standalone applications through configuration options or routing logic. However, product managers aim to reduce customization to prioritize their product vision. If a company holds a significant market share, they have the bargaining power to suggest industry-standard business processes as solution providers. As previously discussed, customizing APIs can be difficult. This can be addressed to some extent if the customer requests customization for an application developed by the same product company. However, if there is a large number of new requirements from external integrations, especially as more companies adopt cloud platforms like Salesforce as a central enterprise dashboard, achieving the same level of flexibility with APIs can be challenging if the client organization and their representatives are not well-versed in API integrations.
Ex:- Customer Request: The customer requires the ability to modify an existing booking created through other interfaces.
Available APIs:-
The above scenario is simple, but there are many other opportunities to effectively propose these ideas.
Every business domain has core sub-domains, which include core business processes. For example,
in the airline domain, booking is a core sub-domain.
Customers may have varying requirements for these core processes (APIs), as they are crucial to their
business.
To meet these requirements, different properties may need to be added to the API request and response or
change structure,
leading to a monolithic API with hundreds of properties and decreased API flexibility.
A monolithic API with hundreds of properties can be difficult to use for simple operations, as it may
require filling out fields
that are irrelevant.
Before proposing to enhance existing APIs, consider the following factors.
Ex:- If you're familiar with domain-driven design, you may know about the concept of bounded context. Similar APIs may be exposed from different contexts, each with a unique purpose. Therefore, it's important to identify the appropriate context.
Multiple APIs may exist for the same purpose. The correct API to enhance should be chosen based on both functional and non-functional requirements.
Ex:- The following two APIs are available for retrieving booking details.
Ex: Multiple backend systems may offer shipment tracking APIs. Customers may request a single, consolidated tracking API for ease of use. This is a valid request from the API consumer's perspective
Managing a large business platform undergoing digital transformation requires establishing proper processes. APIs are a crucial component and an external interface of the system. Multiple teams may work simultaneously to create APIs, making it essential to establish clear API guidelines. These guidelines should include naming conventions, specifications (e.g. HAL for REST), API versioning, deprecation strategy, documentation, error handling, security, etc. Consistency is key, so all teams should follow the same standards. Large enterprises should establish an API governance team to enforce and preserve standards. The diagram above illustrates the high-level process for external API integration.
Ex:-The customer needs to integrate the booking update feature with your APIs. They may initially request booking update APIs for integration purposes, but as API experts, you should clarify that retrieving booking details must occur prior to the update, and additional master data APIs may also be required for successful integration.