Hosted Service,
Reusable Component,
Shared Code, or
Tested Instructions
As you consider how users are wanting to consume your product to gain value from it, selecting the right delivery method will help you to maximize the value while limiting overhead. These delivery methods are built on the pillars of success for achieving reuse.
Hosted Service
This means your team is running the digital service and providing a location online that people can go to for accessing the product. Typically this is a website or web application but it could also just be an API that would be used by another web application. Your team in this case is doing to hard work of keeping it running, taking care of the data it stores, ensuring privacy and security, and other digital custodianship accountabilities. One hosted service might be using multiple other hosted services in order to deliver value to its users.
Reusable Component
Certain products make sense to be shared, but may often have valid reasons for not running a single hosted service. It those cases the product should still have a dedicated team that is responsible for the continuous improvement of the product. This is typical performed by a team that is using this reusable component as part of another digital service they are delivering. An example of this is when software teams will publish pre-built images of software to dockerhub. From DockerHub a software team can reference one of these pre-built images, to be installed along side their product to add its capabilities to their digital service.
Teams that use one of these images benefit from all the work done to build it, but maintain the responsibility for hosting it. It fact a hosted service may consist of nothing more than a team running something from dockerhub. With this approach you benefit from having a black box that with the correct inputs will give you the output it promises.
Shared Code
This is similar to a reusable component except it allows the team that is implementing it to add in their own customizations which they would then build and deploy. So shared code means it is no longer a black box. Doing this approach also adds in the responsibility to conduct all the testing of any changes or configuration that the team conducted.
Tested Instructions
This is a set of documentation that can be followed and once completed will result in something of value being created. This could be a set of scripts to run in a command prompt or it could simply be a numbered list of steps to take to make something work. Not everything will justify creating a web application, but if in an hour you can create a quick step by step set of instructions to help save 10 minutes, for 1000 people, then it would be time well spent. One example where this approach is very common is in writing a very clear readme for your github repository.
Documentation itself is a product that needs to be tested, collected feedback for, and iteratively improved. Each time a new team member joins your team, they should be required to use only the documentation to get the application setup in their local development environment, and then for their first pull request to the repo submit some improvements to make the documentation more clear.