[tweetmeme source=”@hiraash” only_single=false]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 time to time you have to involve in aspects of software development that doesn’t have anything to do with the problem you are solving. These are systems and components of systems that completes your solution.
May it be 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, during a recent experience when 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 by doing so to save time and effort, the out come was us spending double the time and effort in getting the solution to work. Lesson learnt the hard way.
So I thought I would put down some points on what I would do in future when I have such need. The 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.