As a co-founder of a startup, I struggle with this question at least a couple of times a week. Every so often as the technical cofounder, I feel overwhelmed at the sheer magnitude of what the problem or the solution could be or how clueless I am on “where to start”!!!
Most often as you start working on the most glamorous “next cool idea that will change the way the world works”, we almost always underestimate what needs to be done to get it working. Yes a prototype is easy, the tough parts are just waiting ….
What platform do you use?
What cloud provider do you go with?
Do you use a known language or pick up a framework?
Do you stick to grand pluggable design or something that just works?
When do you worry on scale/performance, when do you start on UX?
Do you just hardcode the little stuff or a whole path to get your MVP out?
Every turn seems to have options, possibilities and because you are building the “next big thing” there is almost nobody who has done something similar unless you are just cloning an app or an service.
As easy as it seems to find others who could have gone your path, most information does not give you a definitive answer. And, as you start piecing the parts of the puzzle together you realize your puzzle is unique and some of the pieces need to change.
My basic rule of thumbs that have helped:
Lean on: Go with a language or a framework that you reasonably know, or think you can learn. Example, even if you have never done JSP, but know java, JSP is better option than PHP because eventually language familiarity helps to move quicker.
Learn quickly: In totally unknown domains … read, read, read. Read developer blogs, Stackoverflow, Github repos, to get a fair understanding of how things can be structured. In my case, coming from an enterprise software background of 15 yrs, cloud services and the whole infrastructure almost stumped me. It took a lot of reading and experimenting to get the mind around what is possible in the new domain.
Dump quickly: Be prepared to dump code, framework, platform anything. Which means, your mantra should be, just get the “code to work”. You will almost surely hate your design architecture unless you have done similar stuff earlier.
I think “where do I start” even in a tech domain, has the same universal answer, “get started somewhere and find your way”
How did you overcome your hurdles?