When you are building a software solution to solve a particular problem, you would be very focused on solving the problem and solving it well. However, from time to time you need supporting components in your solution that are not directly related to the problem you are solving. These are components that are required to complete your solution.
Maybe its a payment system for your online greeting card service, or a spell checker component for your realtime note editor, you would rather look for something that’s already built and working well rather than building it yourself from scratch. This way you can focus on your “core competency”.
This is generally how everyone thinks. So did we. Here at Creately, we chose to use a third party solution to complete a product that we were working on. In the rush and excitement of getting the product out we signed up with the 3rd party service not considering some important factors that we should have. Even though the intention was to avoid reinventing the wheel and save time and effort, the out come was us spending double the time and effort to get the solution to work. Lesson learnt the hard way.
So I thought I would put together a simple flowchart to help us evaluate such situations in the future when such a need arises again. This flow chart explains the basic thinking, and the factors involved in making the decision can be found below.
Picking the most suitable solution
- How well is my requirement met? Does the solution meet all the feature and functionality requirements I have? Does the solution meet the integration requirements I have?
- Is the component build for me? Even if the solution meets all my functionality and feature requirements, one thing I have to watch out for is, if it does more than what I need. Will it complicate my product? or my users experience? or my integration process?
- Is the integration and setup process straight forward? Time and effort required to setup and integrate?
- What is the financial commitment?
- Considering all factors above, compare the time, effort and cost involved in building the ideal solution against using the selected solution.
Assessing if the solution can be used to solve the problem
- Can I use the existing features in the solution to make it do what I want it to do?
- Can the solution be customized to fit my requirements?
- What is the time and effort involved in customizing the solution for my need?
- What is the financial cost involved in customizing the solution for my need?
- Considering all factors above in A and B, compare the time, effort and cost involved in building the ideal solution against using the selected solution.