By Colin Ruskin
•
24 Oct, 2019
Software, Buy Versus Build A question often asked or at very least considered, is shouldn’t we just build this ourselves? The thinking typically goes something along these lines; This is really not that complex, From a certain distance even the most rugged and horrible mountain does not look that hostile. From far enough away the specific contours, rocks, icy cliffs, cold rock faces and myriad other obstacles are never visible. Absolutely, many people could ultimately climb the mountain, but how much training, learning, experience and preparation will it really take? With every software system once the project gets underway, there will be hundreds of issues that the development team will encounter. Each issue has a cost, whether in time, effort or additional money and will need to be accommodated and dealt with. Each issue adds to the delay in delivering a good solution. Ultimately if one accurately and fully scoped the solution and functionally decomposed that solution into all the many building blocks required to deliver the solution, you might find that many good solutions don’t appear too complex on the surface, but like the mountain, the true complexity and scope is hidden, until the details are really understood. Our needs are simple, we don’t need all those features, Taking the same mountain analogy, sometimes when we are too close to the details, we don’t see all the other options that we might need to consider once that specific obstacle is scaled. The climber when scaling the rock wall, is only able to think about that rock wall, more specifically just the next few hand holds. All attention is about scaling that cliff. Though admittedly not a trivial issue, it is certainly not the time right now to discuss tomorrows hike across the windy ice plain. Very few companies ever start out by saying that their needs are complex. Typically because the users are fixated on their personal interactions with the system or process. Few people are fully aware of the overall big picture and those with a big picture overview are seldom aware of all the nitty gritty details and use cases. In virtually every software package the many features and functions are attributable to the various use cases that customers have required the product to achieve. The collective use cases demanded by the marketplace improves the breed, and makes sure that the product is able to deal with many scenarios, specific issues and not just a singular option. More often than not many of the features in a good off the shelf package will ultimately prove to be useful. As you better understand your needs and the product and its capability to improve outcomes within your organization, it becomes useful to enable those features and expand the value of the solution rather than not having the option to do so. We already have developers on staff, The thinking here implies that we are already paying these people and to achieve the incremental product it is essentially free. Not so fast! Consideration needs to be paid to the following; Not all developers are equally good at all types of technology and coding. How long will it take certain developers to achieve the functional knowledge and be able to produce the solution? Are you paying for software development or incremental learning? Many software companies building commercial software, have considerable teams of developers with specific skills able to perform the necessary development. Will you have to add people to your development team as the project evolves to achieve the desired results? Commercial software companies have people assigned to customer support and training. As the solution evolves are your existing developers able to perform both forward looking development and support? Will they become consumed by support and ongoing development such that they are unable to do any of the other daily IT tasks that they were hired to achieve?. Will you be forced to grow your team to keep up with the new demands? There is a huge distinction to be made between building something for today’s needs versus the ongoing resources that will be needed to accommodate other use cases of the software within the company. This relates back to the prior point about our needs are simple, they seldom really are, and your development team will need to keep enhancing and improving the product to ensure that it keeps pace with the evolutionary needs within your company. Will this project take on a life of its own?, or will your IT people be able to return to their prior responsibilities? It never ends. There are very few development efforts where you are able to say it is 100% done, we are at the end and we never need to come back. Since software is being used in a dynamic environment, namely your business, it needs to continue to advance and scale to accommodate new perspectives. Will you always maintain the development team and those skills to ensure that you are able to continue developing that in-house developed product? At what point does this “product” become a potential liability to the company, when staff leave?, when the business changes?, when the team can’t get to other development needs? Our process are unique anyway, Before accepting that your processes are really unique consider, is this aspect of your business something that makes your company totally unique in the market place? Is this the feature or process that defines your “secret sauce” as a company? Facebook had to build the product, you and I, not so much!. Before assuming that the product is indeed unique and it is indeed the secret sauce, be very objective. Sometimes processes are complex and some companies have developed complex processes but they are not in of themselves adding to the companies strategic value or secret sauce. They are just complex because there are many moving parts. Before you make the build decision, review these processes carefully. See if a commercial product can’t address them? Learn how other companies implement similar processes. In this regard an outside perspective can be very useful. Alternatively the process might just benefit from some clean up. Over time many processes become more complex as they get added to, rather than restarting from a clean sheet. Sometimes processes evolve owing to limitations in the existing environment and systems and perhaps a new system would simplify this. In all these cases this is not likely justification for a build decision, but rather that some work needs to be done to improve the operation of what are complex but likely generic processes. When to build? If you determine that a process or aspect of your business is indeed and truly your secret sauce then it may well be expedient to build a solution to accommodate that process, report, module, interface, web site or whatever to encapsulate that specific process. It is seldom true that just because one process is strategic that this is justification to build a complete system. Rather find ways to achieve a blend of a commercial offering for all the reasons above, but that can accommodate your proprietary and strategic extensions. This way your development efforts accommodate strategic advancement and are of high value and are not generic coding to recreate what is already commercially available. WorkOptima, is a purpose build solution to deliver business process specific workflows. WorkOptima allows you to focus your efforts on delivering the end user solution to your business users and not re-inventing the wheel. Time to market and cost of ownership are paramount to success.