Do You Believe in ... Prototypes?

3 min read

What’s your take?

John Romero doesn’t believe in prototypes

There’s a place for them, sometimes, but I’ve certainly seen them be a complete waste of time, often appealing to the “I want to have a fun challenge” part of the brain, rather than the “I need to get this project done.”

More nuanced though is that prototypes often don’t provide the results that specifically address why they were created in the first place and those bug me the most. For a prototype to be successful, I think it needs to have a very specific and measurable goal. Ideally extremely time-boxed as so it doesn’t become a “project” itself or worse yet, a “drain” on the team.

Cautionary phrases:

  • I just want to experiment with …
  • I’ll do some usability testing
  • I want to see if this new technology fits …
  • I expect it will take just a few weeks …
  • I want to learn about …

I don’t consider learning about a technology a prototype. That’s just learning. Developers can apply their learnings to experimental projects and things, but using a learning exercise as part of a prototype — what are you testing and how are you evaluating it at the end of the process? Is someone’s first time using a new technology a good way to evaluate a prototype’s purpose and goals? Be cautious about combining learning and prototypes as inadequate knowledge of the technology may lead to a poor prototype. There’s a real danger that first impressions may cloud one’s judgement of the results of a prototype.

I know from personal experience even in the last few weeks that I’d picked a component library that I’d never used before and I did some testing with it and thought my tests and the blogs, etc. I’d read were enough to make a decision.

I was wrong.

I dumped it yesterday as I began to hit bugs that were extremely deep in the library and I couldn’t even find a path that was straightforward to debug and contribute a fix. Annoyingly, I found one of the bugs was reported more than 12 months ago, and the issue has been ignored by the maintainers (completely, not even triaged). For an open source project that is backed by a company, that was a huge enough red flag for me that I moved on (there’s a paid version of the component available, which includes the free version I was using).

My “prototype” was inadequate but had passed enough of the sniff test that I proceeded. My time would have been better spent doing the same reading, but skipping the prototyping I suspect as I would have encountered the same issues earlier.

I even reviewed many published issues before starting and didn’t see any that I expected to impact my development. But, there were a lot. I normally look for interaction between the maintainers and community as a measure of a project’s health. I apparently needed to look more closely.