Proof of Concept in Software Development: Disambiguation and Real-life Examples
Tags: pocinswdevelopment, proofofconcept
Published: 2020-07-30 15:01:17

The success rate of IT projects is underwhelming as they continuously come up short on their schedule and budget targets. On average, IT projects [overrun their budget by 27%](https://www.workamajig.com/blog/project-management-statistics). Furthermore, one in six projects exceeds the costs by 200% and the schedule by 70%.  

Different project management studies offer a multitude of solutions, from training project managers to building effective teams to mastering new technology. However, there is one easier-to-implement solution that will help you put your project on the right track from the beginning and avoid unpleasant surprises later on: perform a PoC (proof of concept) to assess the feasibility of your idea before getting down to actual development and avoid wasting resources later on. 

# What is Proof of Concept?

Proof of concept is defined as a general approach to testing the feasibility of an idea before involving production-scale resources. It is one of several initiatives preceding project execution.

First of these is the [discovery phase](https://www.softeq.com/hubfs/Discovery_Phase_final.pdf). The discovery phase is dedicated to exploring the contextual details of your project. This process includes understanding the overall business vision of the product, goals you want to achieve, potential challenges, stakeholders’ expectations, and market competition. If this investigation is delayed to later stages, such as business analysis and product development, the results often negatively impact the entire project. The information gathered throughout the discovery phase will help in resource estimation and can be used in upcoming phases such as the proof of concept.  

In software development, [PoC solutions](https://www.softeq.com/electronics_system_design) revolve around the technical viability of an idea rather than its market impact. It is a process of examining software ideas to prove a solution can be built at a reasonable cost and is applicable in practice. This step determines which technology is the most appropriate for the task. 

# 4 Ways You Can Benefit from a PoC

A PoC highlights potential challenges that can delay projects at later stages, help identify troublesome features and experiment with different fixes, save money in the long run, and attract investors. 

## Examine Your Features

Using a PoC means you get the chance to determine whether the set of features you are planning to incorporate into your product can work as intended. If the test shows that a particular feature is not feasible, you can still look into questions such as:

* Can a particular feature be beneficial in a different setup? Or is it not viable at all?
* Is it possible to consider other approaches to solving this problem?
* Will the product still function if a particular feature is removed?

## Discover Potential Challenges     

Developing and executing a PoC can help project managers to better prepare for project execution and address the potential setbacks earlier in the product development stage, instead of being unpleasantly surprised when the release date is approaching, or after the product is already launched.  

Even though a PoC does not guarantee smooth project completion, it increases the likelihood of success as it allows us to prepare for potential setbacks in advance.

## Save Time and Money

Even though investing in a PoC does consume some time and resources, identifying potential issues at this phase is cheaper than discovering them during the actual development process. Additionally, a proof of concept can help select the correct path to follow throughout the execution. 

One example of saving resources with the help of a PoC is presented by the city of Belfort. Belfort is a French city that was looking to save money on bus transportation with the help of smart city solutions. The consultancy firms responsible for the project were determined to run a PoC. The scope was to find the best strategy for positioning sensors on public buses to identify aspects such as congestion points and bus speed at different rout sections. After completing the PoC, consulting companies were able to gather useful data at a minimal cost. The resulting insights were implemented and set Belfort on its way towards [saving up to €250,000 per year](https://www.gov1.com/technology/articles/how-proof-of-concept-saves-money-on-the-smart-city-journey-wb2IIGg69Xbax6Y6/).     

## Encouraging Stakeholders to Invest

For businesses/teams looking for funding, a PoC can be an effective way to win over potential investors. The fact that a team is able to put together and successfully execute a proof of concept initiative demonstrates they have a clear business vision and are sure of their goals and capabilities. Results obtained through PoC will leave a more favorable impression on stakeholders than a bland PowerPoint presentation. 

# Which Projects Can Benefit from a PoC

PoC solutions are potentially applicable to all types of software development in different industries. It may make sense under some circumstances to skip the PoC phase. However, if the following conditions are present its not advisable to move forward without one: 

* The team has little experience with the technology they are planning to work with
* The team is hesitant about the features that will be included in the final product
* The product you’re developing is somewhat complex or innovative
* The funding is rather limited, and the team wants to verify whether it is possible to create the product under such a constraint 

# PoC vs. Prototype vs. Minimum Viable Product

Some people use those terms interchangeably or even consider a prototype and MVP to be a part of the PoC process. However, those concepts do differ. 

A **proof of concept** is a small-scale test used to determine whether the idea is viable. It does not result in building a version of the actual product. 

In contrast, a **prototype** is a draft version of the end product. Even though it includes design, layout, navigation, etc. it is not ready to go to market. It is used to evaluate the product’s design, functionality, and usability of particular features.

A **minimum viable product** is a lighter version of the final product. It is bug-free and more developed than a prototype. MVP is ready to hit the market and is beneficial in evaluating product marketability and usability with potential consumers. The MVP concept is primarily derived from the Lean Startup methodology.   

Both prototype and MVP can be regarded as the next step after a PoC produces desirable results. 

# PoC in Software Development: Examples

As we established above, almost any project can benefit from the PoC exercise. Here are a few real-life proof of concept examples from [Softeq, a software development company](https://www.softeq.com/), which demonstrate how PoC was used to prove the technical feasibility of an idea. 

## Visitor Counting Algorithm Optimization

An advertisement company was working on banner networks when it realized its Absolute Unique Count algorithm was taking over 24 hours to refresh the count of unique visitors to its advertisement campaigns. This time period is unacceptably long as the employees working on calculation tasks were unable to properly carry out their work. There was an urgent need for optimization. The team assigned to this task came across a probability model algorithm that could potentially do the trick. 

However, the current algorithm relied on a multitude of factors, and a full optimization would be a complicated, expensive, and time-consuming process. Furthermore, it was not clear if the proposed solution would offer a significant time reduction for refreshing visitor counts while remaining within the acceptable accuracy level (given that the current algorithm was rather accurate). The company was hesitant to allocate resources to a project with such uncertainty.

The development team put forward a PoC initiative to test the proposed algorithm on a small scale. It used only one of the current Absolute Unique Count algorithm’s criteria: updating the daily visitor count without any further segmentation. The team created a test database and implemented the calculation code. This process was rather marginal in comparison to optimizing the whole algorithm. The PoC had the following goals:

* Understanding whether an SQL query would still work with this type of setup 
* Examining the resulting count refresh speed to see how much faster it would be than the original algorithm
* Ensuring that the statistical count accuracy was at an acceptable level

**Results**

The PoC confirmed the hypothesis as the algorithm proved to produce accurate results and decrease the time needed to refresh visitor count to just 3 minutes. The team members documented the whole process and presented it to the management to obtain approval for optimizing the entire algorithm.

## Migrating an App for Drone Image Inspection

A drone-inspection company was using an app for processing and viewing imagery captured by drones during oil rig inspections. The tech stack underlying this app comprised J2EE with VRaptor. VRaptor was becoming obsolete, and the company wanted to upgrade the application to a more reliable and up-to-date tech stack. They contacted Softeq who suggested migrating the solution to Spring MVC. 

The company was still rather hesitant. They did not want to deactivate their VRaptor-based application during the migration period, so Softeq proposed conducting a PoC to investigate the following possibilities:

* Limiting the number of endpoints handled by VRaptor during the migration period
* Handling all new endpoints with Spring without interfering with VRaptor
* Synching the data from both technologies at the end of the migration process

**Results**

The PoC demonstrated that it was feasible to perform migration while the old VRaptor-based app was still up and running. It was also possible to reuse existing business logic. Aside from confirming the hypothesis, the PoC revealed a serious security breach that would be present throughout the migration process: during the identification phase, the VRaptor part had to be contacted and therefore shared its state through cookies.

## App-to-browser Video Content Streaming Solution for AR Glasses 

An augmented reality company produces AR glasses for business needs, such as on-site inspections. These glasses have a video capturing the Android app installed. The manufacturer wanted to experiment with connecting this Android app to a web app, which would stream the video in a browser so that when a construction worker is inspecting some equipment, their manager can also follow along live on a screen.

The AR company started looking for technology vendors to execute this project. Softeq being the selected vendor, set up a PoC to test the capability of the chosen technology to handle video streaming. 

**Results**

The PoC proved the technology was a good fit, but also highlighted a problem with the resolution while rendering videos on desktop screens.

# Final Thoughts     

PoC in software development can be a useful preliminary step for any project. It is particularly important for lengthy, costly, and innovative projects. A PoC tells you whether your idea is viable before you start spending money and other resources on a project that will not yield the desired outcome. 

It is critical to **document** every step of the PoC process. Whether your company is undertaking it for internal projects, or external clients, you should always maintain documentation. Write down configurations, architecture, different tools you are using, the results achieved, and recommendations. Giving a detailed description of the environment is critical for replicating success during the actual project.