What's the difference between a Tech Spike and a Prototype?
Knowing the difference between a Proof of Concept (POC) and a demo is pretty important. Today, we cover the various terms used in coding experiments.
When developers are given a particular task or some large assignment, back in the day, we used to grab all of the requirements, lock ourselves in a room, and never come out until the project was complete.
Or so we thought it was complete.
There were times when we emerge, present the product, and would get poo-poo'ed as to what we created.
It wasn't what the business or our customers wanted.
If you as a developer are asked to build something (and when I mean build something, I mean build something large), you want to break it apart into smaller chunks of achievable work.
For the most part, these small chunks of work are called many things, but each one seems to have a different meaning depending on a company's culture.
The reason I bring up this topic is because I've been asked by three companies to create a tech spike, prototype, and a demo in a matter of three weeks.
Today, I'll review some terms that most, if not all, developers experience when writing these small pockets of work and how explain how much of an effect each term would have on a project.
POC (Proof of Concept), or Tech Spike
A proof of concept is a small example to prove out a theory of functionality or determine if a technique is possible without writing a whole application.
The POC has to be small enough and measurable to determine whether the POC was successful or not.
The key here is that the idea can be confirmed with actual code and the idea or theory works as expected.
Percentage Complete in a Product: 0-20%
A prototype is the next step. A concept is solidified and proven, but now tries to simulate more of a full system.
A prototype tests how useful it can be in a system and meant to be a bigger part of the system.
Now, I know what you're thinking. What's the difference between the two?
- POC is throwaway code, a prototype is not.
- POC is meant to test an idea or smaller piece of functionality where it can possibly "graduate" to become a prototype or integrated into a system for basic functionality.
Another way to look at this is that a POC is like a Unit Test where a Prototype is more of an integration test. :-)
Some companies argue that a prototype should be thrown away as well. I disagree.
A prototype is a little more "meatier" than a POC, so if you've come this far in a project and you have a prototype, this would be a large chunk of code to ..well...throw away and start from scratch.
Make the necessary changes in your code, whether it's cosmetic or functional, and make it work to become an integral part of the system.
On the other hand, if the prototype is so horrible, scrap it.
As said in the IT industry, it depends and should be a judgement call.
Percentage Complete in a Product: 20-50%
When I hear demo, I think of something that shows the progress or checkpoint of an application being built.
Remember, demo is short for demonstration. You want to demonstrate the features of the application.
Think about an application being offered as a demo. It's limited capabilities and doesn't have the entire full suite of features, but it provides just enough to whet a customer's whistle.
It can also be looked at as a freemium model. One version of the application or website is limited and could be considered a "lite" version where if you pay additional money, you'll receive more features instead of a watered-down version.
Percentage Complete in a Product: 50-75%
MVP (Minimal Viable Product)
This term is thrown around a lot lately.
The key to this particular term is to write the minimum amount of functionality to start receiving funding for the project.
The MVP application is concerned with accomplishing one thing (maybe two) to get out the door and become functional to test the market.
A quick example would be a text editor for the web. An edit box would be required and then a toolbar with the basic functionality (bold, italics, hyperlink, etc). A basic list of tools for your text editor.
This would be considered an MVP.
After you receive funding, you receive requests from customers to add features A, B, and C. After adding A, B, and C, you receive more customers.
This gets the ball rolling to make an amazing product that your customers want. Let them guide the product.
Percentage Complete in a Product: 20-50%
The initial roll-out of a product meant for production. In other words...Version 1 point 0.
This is your finished product you want the world to see.
Of course, there are a lot of products out there that ship with bugs in the software, but that's where version 2 comes in.
Percentage Complete in a Product: 90-100%
I've heard a number of managers use these terms in a manner that confuses developers.
Sometimes they need a prototype, sometimes they need a demo.
I hope I've cleared up some of these terms.
Did these terms make sense? Do these terms have different meanings for you as well? Post your comments below and let's discuss.