August 21st, 2020
I've created a new development process with my most recent project that I've taken quite the liking to, not only because I feel so much more productive in its implementation, but how much time it's saved me in the form of rework. To preface, I by no means claim this as a revolutionary process or one that hasn't already been stated or outlined by another professional. I just felt this was worth sharing mostly because of how productive I've been in my own interpretation of this process.
Create a prototype in the form of a rough if not medium fidelity mock. Download a free prototyping program like Figma. I prefer using InVision Studio, which I used for this project. Create a few designs that put your ideas on a screen. Even if you aren't a great designer I think it's best to try your hand at visualizing your design, else ask a friend to help out.
If your basic structure seems too complex to express with the tools available, you might want to think about pairing back your feature set to keep your MVP slim. Remember that your prototype should resemble the minimum functionality necessary to express the value your providing to your potential users.
Once you have a rough prototype and a well defined pitch, something that's concise (2-3 sentences), workshop the idea with some friends. It would be better to seek out some people who would fit into your target audience and ask a few questions about what you have so far and get that critical initial feedback. Don't worry about someone stealing your idea. If you have a good product or service, it will be successful because of the vision you have for it and the work you put in.
Iterate on this rough prototype in the same manner until you have a feature set that satisfies the underlying problem the project is solving.
“Think about it this way: If you had to launch your business in two weeks, what would you cut out?” ― Jason Fried, David Heinemeier Hansson, ReWork
The one thing that has made my most recent project so smooth is the time I took creating my user interface in InVision Studio. It was a laborious and iterative task, but the payoff was invaluable in development time.
Much like the previous step, take the time to try your hand at flushing out the design to the fullest extent. If you end up hiring someone to finish the designs for you or having a friend do it, at least they'll have a good base to work from.
Make sure these designs get seen by a few people. It's probably better that you ask someone who is less savvy with technology, so that you can confirm if your design informs them on how it should be used. Less "techy" individuals will help you pinpoint the parts of your design that make the least intuitive sense.
Also, this step is really critical because it is here that you are creating the design language for your product. If your UI/UX is clunky, then no one will use it, and if someone does they won't make it past your login screen.
For the software developers among us, this will be the easy and more enjoyable part.
Start your by programming just the ui elements, screens/pages, and routing between your views. If you need to display data, stub that data in way where you can easily replace it with database data while refraining from architecting stateful logic. Focus on the layout and UI.
Time to program the guts of your app. Fetch your data, add state, and update your models with that precious user input. Much like test driven development, if you've done the previous steps, the UI you've programmed should easily inform the logic you need to add to make your app function as you intended.
Another important thing to remember, you spent the time creating design for your MVP and workshopping it with potential users, don't be tempted to let scope creep stall you from reaching the finish line. Focus on the logic you need and think of "lacking" functionality as your next version's features.
“Find a judo solution, one that delivers maximum efficiency with minimum effort. When good enough gets the job done, go for it.” ― Jason Fried, Rework
Now I admit, my most recent project hasn't reached this point yet, but there's no reason you can't use the previous steps to proof the next feature in a mock, design it, get user feedback, implement, and repeat.
Get started now. Do something. When you're up and running with your product, iterate and test good ideas. Also, don't be afraid to pivot or abandon your project. It's not worth your time if it takes all of yours and gives you nothing in return.
“Reading is good, action is better.” ― Eric Ries, The Lean Startup