A prototype is an early sample, model, or release of a product built to test a concept or process or to act as a thing to be replicated or learned from.
My History with prototyping
I did my first prototype without actually knowing that was what I was doing. I was lead engineer in a slightly complex project, and I could not get enough data out of client. So, I started out wiring a small UI with select complex functionality. I did continious reviews with client to make sure we were understanding his requirements correctly. What we got at the end of the process was a tiny peice of software that showed how that system had to work.
Surprisingly enough that prototype helped the client and dev team equally well. The client was able to speak clearly about what was being built, to potential customers, investors, or their internal board. Meanwhile the dev team was able to get a much clear picture of what needed to be built. It also helped planning process in both ends, and the further communication on that project was seemless.
Overall the cost of prototyping was very tiny compared to what would have been otherwise.
Simply put, any idea you have needs to be prototyped for
- Validate the idea - from technical and market perspective.
- Clarity - To yourself, and whoever you are communicating to.
- Plan better - Tackle the unknowns early.
- More agile - Faster and cheaper changes at the begining.
- Better solutions - See your idea in action quickly, and improve early.
Techniques and How to’s
I work with functional prototyping which combines basic UX and core functionality. Here are few techniques I use
- Build core functionality, strip generic functionality - You dont need a user login to a prototype.
- Fake everything quickly, and then build the most important first.
- Use simplest possible way for any functionality - Saving data to text file is fine as opposed to setting up a db.
- Start with a strong framework - That gives most common functionality out of the box.
This approach takes a 2 day session and at the end we would have a basic working prototype. Of course the functionality is limited by what can be done in 2 days, but the core will be prototyped.
- Prepare a rapid development environment - Bootstrap code with basic setup.
- Get stakeholders in one room - Developer (Me), UX Expert, Product Owner.
- Brainstroming session from Product Owner.
- Draw out rough UX sketches - plan out what can be achieved.
- Develop screens and fake functionalities. Use the fastest tool available. (Minimize it to core functionality)
- Develop faked functionalities on the order of importance and complexity.
This approach can strech from 1 week to 2 week dev, with daily interaction and review from Product Owner and UX Expert. The steps are pretty much the same, but the time is elaborated so ideally everything core to the idea can be prototyped.
I personally prefer the hackathon approcah, as its faster and crisp and challenging.