I think it’s important to reason from first principles rather than by analogy. The normal way we conduct our lives is we reason by analogy. We are doing this because it’s like something else that was done, or it is like what other people are doing. Slight iterations on a theme.
Meaning: we usually take something that already exists and innovate within that paradigm. In the startup world, entrepreneurs create “Pinterest for kids” or “Foursquare for hikers”. In design, we put our own spin on whatever design patterns are in vogue right now. In programming, we code mostly in the same way that other programmers code, using the same tools.