Overcome analysis paralysis. Build something
There are too many different solution out there to any one problem. Sometimes getting caught up in the comparison of features and benefits, downsides and trade-offs can be a little overwhelming.
Sometimes you are trying to solve the wrong problem because you don’t have all the information. I can’t event begin to count the number of times I started digging into a solution to a problem only to find out that as well designed as the solution might be it was way off base and needed to be scrapped in favor of something simpler and lighter weight. I almost wonder if an early warning sign of bad design is that there is an overly complex solution to what seems to be a simple problem. If you have a persistent queue and processing engine to pass a message and some data have you actually solved a problem or created more technical debt?
It’s all too easy to get caught up in the design of things that might not even matter. Fretting over the details in your head or arguing with others over the potential downfalls of the non-existent features. The problem is that it is easy and sometimes fun to toss ideas around and not actually accomplish anything. By quickly designing and building the feature you can vet any decisions with real world tests and trials. The sooner you can get something usable the sooner you will be able to see if you are headed in the right direction.
I am not sure if it’s just me as a visual learner but here are a couple of things I do to test a design.
Paper prototype the UI
Basic paper prototyping can be a very effective and low-cost way to test out a UI without writing any code. Anyone can draw a prototype and run through it with someone else.
Spike a quick technical solution
Create a bitbucket or github repository and start throwing code ideas in there. Just trying to build something with the knowledge that it is throw-away is very liberating. You get less attached to your code. I have written a bunch of throw away code that I used to learn something and then went and used a more robust library. Sure I could use and write my own data access library but who wants to when there are so many valid options out there.
The basic idea is to quickly build something low-cost. In architecture and design there are scale models and sketches. The sooner you validate that the sketch has weight to it the sooner you know if you are headed in the right direction. The other benefit is now you have something solid for someone else to give feedback on and critique.
You’ve given something as ephemeral as an idea a shape.