Over the years, companies continue to examine ways to remain relevant, stay competitive, and of course, increase profit margins. For a lot of businesses, that ultimately translates into internal examinations of technology tools. Inevitably, the question of building internal tools vs. buying canned tools is brought up. There have been a number of pros and cons discussed throughout the years (here is a good article from Forbes), but as with any information regarding technology, it gets outdated extremely rapidly. So, I wanted to re-examine this subject based on the state of technology today.
As Cohn mentions in his article (linked above), it takes a large effort to build out an internal application that manages business processes. He also correctly alludes to the fact that the initial costs of building the software are not the only necessary investment. Typically, the deployment of custom software demands new resources and additional institutional knowledge to be added within the organization to fully realize the long term benefits. But based on new trends in technology, specifically cloud based software and REST API’s, there are more options than the black and white “build vs. buy” approach. This means you can have the flexibility you want, while at the same time lowering long term costs, and remaining very agile for change.
The first step is to evaluate your underlying need and decide on the correct path to take. Start with this question; what result can I achieve with this tool that I otherwise would not? The answer should not be a technical one, it should be a strategic one. If you come up with a technical answer, keep digging and find what is driving that technical requirement. Hopefully, the end result will be a strategic business objective that falls under one of the three categories. Based on the result you are after, here are some options.
Operation Efficiency (or the ability to scale, increase quality and profit margin)
If the result is operational efficiency, it usually relates to the simplification of process, or the elimination of resource and delivery bottlenecks. Your tools are going to be based on eliminating and automating steps in your processes, and moving operational data between resources and departments.
When evaluating a custom tool for this job you need to define the specific processes you are trying to enhance. Is this a core process, or a supporting process? Basically, does this process make you who you are as a company (your competitive advantage), or is this process just supporting a core process? Typical examples of a core process would be a product development cycles, order fulfillment processes, manufacturing processes, or client services processes. Supporting processes would be your billing processes, your HR processes, or your AP processes.
If the process is a supporting process, first consider changing how you operate to work with an existing canned tool that will help create the efficiency you desire. Creating custom software for a process that does not create competitiveness is an expensive way to avoid change. You should think long and hard about moving down this path. Just because you have always done it “this way” does not justify writing, and forever managing, custom software.
If the process is core process, it’s time to really evaluate the needed functionality. If you are unable to find a tool that can offer the flexibility your company needs as it relates to fulfilling the core process, a custom software package might be the right option. It can be costly, but the package will most likely prove to be valuable Intellectual Property (IP). Time spent building and managing this IP can often translate into flexibility and efficiency. On the other hand, if there are individual canned solutions that can be used to achieve the results you are after, even multiple tools deployed together, then maybe first you should evaluate a Business Process Management (BPM) solution. A BPM tool will help you create workflows over desperate systems, and help to move data throughout the entire process. It can be a much more cost effective way to take advantage of existing tools, yet still perform the process steps specifically as you need, without worrying about reentering data at each step.
Greater Visibility into Your Data (or intelligent, predictive reporting)
If your main goal is to better connect systems to enhance the reporting capabilities of the organization, the answer is rarely ever create custom tools. The effort instead should be spent building custom reports on already existing reporting engines. Specifically you are looking for tools that can reach out to a number of different software applications and collect and report against the data stored within them. If you are not yet collecting the data, InfoWorld recently reviewed what they consider to be the best big data tools, which will help you discover tools for collecting, storing and reporting. If you already have the data, then you need a tool specifically related to Business Intelligence (BI), Docurated.com has a great list here. Regardless of the tool you use, your time and energy should be on creating reports and determining how to map the data to actionable items. The time should not be in creating a custom tool that already exists.
Enhanced Customer Experiences
Creating enhanced customer experiences is usually a combination of the two goals above, with a little sales and marketing sprinkled on top. It includes the identification, optimization, and automation of process, but the driver is usually Business Intelligence (BI) reporting pulled from the customer journey. If shaping your customer experience on a micro level is an important part of your business, the answer could lie in custom tools -but maybe not the custom you are thinking.
First, map out all of the processes that will need to be touched to give you the control you need over the customer journey. Thoroughly analyze existing canned tools and build a list of the ones that can help at each point in the process. It’s okay that they are all different, the key is find the functionality you need. The tools will most likely be a combination of different Software as a Service (SaaS) tools like MS CRM, Salesforce, Marketo, Constant Contact, MS GP, etc. The key to saving time and money is to select tools that have API’s that allow you to control your data. As mentioned in the process optimization section, if you have functionality gaps within core processes, consider a very small custom tool to fill them. If there are any gaps to your supporting process, consider changing process to rectify. Spend your time and development resources on connecting tools to each other. Your goal is make the individual tools seem like one by sharing data and triggering automated actions (workflows). The benefit (besides a much smaller custom development project) in this approach is that you can switch out a tool with little effort, whenever you want. The only portion of the software that needs to be adjusted is the part that connected to that specific tool. And even better, switching one small tool for another means less training, and quicker launches. Additionally, when using API’s, your solution will most likely work even when the vendor releases upgrades. You’ll be able to take advantage of new features without being version locked by your custom software.
Whatever direction you go, ask yourself: If we have to do something custom, how can we keep the initial effort as small as possible, and ongoing management and maintenance fees virtually non-existent? With all the tools that exist today, and the advanced ways in which to connect to them, like API’s, custom development projects should be far and few between, and should primarily focus on connecting and sharing data.