Originally posted on Medium.
There are so many prototyping tools around today, it’s become a somewhat daunting task to even pick one. Then, of course, you have to figure out how to use it and maintain what you’ve created.
High Fidelity Often Isn’t Required to Get Valuable Insight
One thing most prototyping tools have in common (there are, of course, exceptions) is that they will often lead you down a road of creating visually stunning, interactive prototypes that usually follow the latest trendy design patterns. This is great for wowing stakeholders, investors and sometimes your peers, but when it comes to user testing, it mainly just acts as a distraction to the simple fact that “this is not real.” Dummy data, non-functional UI and often verbal instruction during testing can somewhat ruin the experience.
On some recent prototypes I worked on, capturing and relaying real data, in a format that made sense, was the real star of the show. Both our client’s colleagues and their customers were users. Whilst we applied many best practises in terms of UX and code, the apps were not what you might call beautiful. I was nervous that some pages were too bare bones, but to my surprise, no colleagues or customers commented on that. Instead, the focus was on the experience of performing a task that was not possible just a few weeks earlier. Real data in real time seemed to supersede everything.
Adding Value > Maintainability + Scalability
Having previously spent years writing mainly production-ready code, I quickly learnt that prototyping requires a totally different mindset. It’s very easy to choose which tools, packages, frameworks etc. you are going to use — the ones you are most familiar with. Use the limited time you have to create a more meaningful experience for the user, not a personal playground to try out new tech.
It’s also important to resist the urge to over-engineer or refactor code unnecessarily. There’s definitely an art to this, though. Code has to be somewhat maintainable in order to respond to changes from user feedback or new information. But overthinking things and fussing over architecture is likely going to distract you from solving real problems. Less thinking and more doing is generally the way to go.
Document Your Discoveries Whilst Making a Prototype
I’ve also noticed that too often Design/UX specialists care less about what data is available and how to deal with situations where things stray away from the best case scenario (error messages, initial states and loading states, for example). Also, it’s often assumed that accessibility is out of scope for prototyping. In reality, it’s never too early to at least start thinking about these things or perhaps test them with real users. The more you discover at the start, the better.
Don’t be pressured into creating something that is high fidelity or trendy, especially if the goal is to validate a proposal with real users. They’ll forgive you if it’s rough around the edges but solves their problems. Wonky but real is more profound than conceptual eye candy!
Avoid overthinking the nitty-gritty of the code in your prototype. Make your code somewhat maintainable so you can respond quickly to sudden change requests and user feedback. But don’t over engineer things or refactor for the sake of it. Your users won’t care, and you can spend time adding real value instead.
If you’re aware that your project is likely to need third-party devices or APIs, a code prototype is essential very early on. You’ll learn so much about the feasibility and viability of the proposal. If the proposition scales to a production project, then your findings could really help steer things in the right direction.
There’s no doubt that prototyping tools are becoming better. For example, Framer X using React is definitely something I’d like to try out. Also, Adobe XD seems to offer some interesting JSON import features. Finally, in case you’re not from a development background and think coding isn’t for you, I’ll leave you with this thought: everyone can code!