TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: What are successful projects that started as prototyped hypotheses?

114 pointsby vlaaadover 5 years ago
As I see it, there are 2 main ends of a spectrum when it comes to releasing projects that aim to solve problems:<p>- top-down approach: you state your problem, think it through, consider all related work in this problem space, think very hard, come up with multiple possible solutions, evaluate their trade-offs and implement the best one (a-la Hammock-Driven Design: https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=f84n5oFoZBc&amp;t=1816s)<p>- rapid prototyping: you state your problem, come up with the easiest possible solution, test it, repeat (a-la Lean Development: https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Lean_software_development)<p>I know some great examples of the first approach (Clojure, Datomic, maybe Git?), but I don&#x27;t know that many successes of the second approach. Furthermore, my personal work experience leads me to believe that the second approach, at least in practice, leads to a lot of wasted effort, so I&#x27;m interested to know whether it is so or not.

26 comments

marcus_holmesover 5 years ago
I get the feeling that the &quot;wasted effort&quot; in the second approach is about rewriting code.<p>Rewriting code is <i>good</i> in my experience. It&#x27;s always better the second time around (or third, or fourth). It&#x27;s not that my first attempt was rubbish, it&#x27;s that I didn&#x27;t understand the problem as well as I did the second time (and so on).<p>Lean is also about avoiding premature optimisation. Which is hard because it cuts against the grain of our engineer sensibilities. Doing something &quot;good enough for now&quot; is tough, when you know that with just a few more days&#x27; effort you could make it bulletproof. But I&#x27;ve had to delete &quot;bulletproof&quot; code so many times, because it turns out the product didn&#x27;t need that feature, or it needed to work differently.<p>In the long term, Lean avoids more wasted effort, in my experience.
评论 #21692150 未加载
评论 #21695879 未加载
评论 #21692444 未加载
wefarrellover 5 years ago
Twitter: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Twitter#Creation_and_initial_reaction" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Twitter#Creation_and_initial_r...</a><p>Airbnb: <a href="https:&#x2F;&#x2F;www.telegraph.co.uk&#x2F;technology&#x2F;news&#x2F;9525267&#x2F;Airbnb-The-story-behind-the-1.3bn-room-letting-website.html" rel="nofollow">https:&#x2F;&#x2F;www.telegraph.co.uk&#x2F;technology&#x2F;news&#x2F;9525267&#x2F;Airbnb-T...</a><p>Facebook: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;History_of_Facebook#FaceMash" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;History_of_Facebook#FaceMash</a><p>Yahoo: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;History_of_Yahoo" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;History_of_Yahoo</a>!
评论 #21689250 未加载
dasil003over 5 years ago
Top-down generally only works for a well-understood problem domain, and even then it only holds up for focused projects where you have the power to declare what is in scope and out of scope in a very strong fashion. This works better for dev tools, libraries, middleware or other projects that are abstract and not tied too closely to a specific business or end-user goal. In other words, the more abstract the tool and the more technical the audience, the more likely that you can drive massive impact while maintaining a simple vision and avoiding all kinds of edge cases and incidental complexity.<p>Rapid prototyping is more optimal for any end-user product or any new domain, because it’s a faster way to discover the unknown unknowns, both in terms of user features as well as well as technical challenges you may not have anticipated.
irjustinover 5 years ago
I believe Git to be actually part of the 2nd than the first group.<p>Linus built the working prototype&#x2F;self-hosted in 3 days mixing a lot of his learnings from bit-keeper and his knowledge of disk management [1].<p>To me, that&#x27;s rapid prototyping. It&#x27;s enough domain knowledge to make it work for himself well. He didn&#x27;t spend a bunch of time thinking nor coming up with solution since he was actively building Linux at the time. The key is he employed the help of others to build Git and eventually take it over since he wanted to focus on Linux.<p>This all comes with a huge caveat in that Linus&#x27;s 3 days == 1000 of mine. His &#x27;just enough&#x27; knowledge is near expert level.<p>As others have asked, what are you trying to build? A technical solution or an end-user solution.<p>Technical solutions do require a lot more domain knowledge than a twitter&#x2F;airbnb (at the early stages).<p>In the end, I believe in rapid prototyping and failing fast[2]. Learn just enough, whether technical or end-consumer to launch fast.<p>The thing I agree 100% is though, don&#x27;t break user-space [3]. I believe this applies to end users of products, whether developers or customers. Once people start consuming something, don&#x27;t break it. Doesn&#x27;t matter whether you believe it to be &#x27;correct&#x27; or a &#x27;bug&#x27;. Expectation management of slow and easy depreciation.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Git#History" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Git#History</a> [2] <a href="http:&#x2F;&#x2F;paulgraham.com&#x2F;startupmistakes.html" rel="nofollow">http:&#x2F;&#x2F;paulgraham.com&#x2F;startupmistakes.html</a> [3] <a href="https:&#x2F;&#x2F;lkml.org&#x2F;lkml&#x2F;2012&#x2F;12&#x2F;23&#x2F;75" rel="nofollow">https:&#x2F;&#x2F;lkml.org&#x2F;lkml&#x2F;2012&#x2F;12&#x2F;23&#x2F;75</a>
评论 #21689501 未加载
zupa-huover 5 years ago
I feel like the question is mixing 2 things.<p>One is using a top-down approach versus an iterative approach. The other is about the nature of your problem: do you have product risk or market risk?<p>The lean approach is about eliminating waste, which, in the context of startups, often means building something small and talking to users. But that&#x27;s only because most startups have market risk. If you have product risk, you should still iterate on your solution instead of building it in one go.<p>I feel like you are asking for examples where the market-risk was addressed. The most interesting companies would be those where the first test was a total miss and they solved a totally different problem in the end.
chubotover 5 years ago
I don&#x27;t think your dichotomy is valid.<p>Git definitely doesn&#x27;t fit the first approach. Not sure why you would state that.<p>Maybe the core of Clojure, with the persistent data structures, fits the first approach, but I doubt the rest of it does (speaking as an outsider to th eproject).<p>&quot;Implement the best one&quot; belies a lot of sweat and places where it could have gone wrong. In other words, the initial thinking is not even addressing half of the problem or doing half the work.<p>The philosophy of Clojure itself is very much based on iteration and interactive programming. You need a lot of action, feedback, and iteratino in addition to the &quot;think very hard&quot; part.
_0ffhover 5 years ago
Wouldn&#x27;t Lisp count for the top-down approach? Only that most of the thinking was done without thought spent on an actual implementation, and the actual implementation was done by different people who recognised the practicality of it?
pbiggarover 5 years ago
Dark (<a href="https:&#x2F;&#x2F;darklang.com" rel="nofollow">https:&#x2F;&#x2F;darklang.com</a>) was a bit of both. I spent several years thinking about the problem, and once I had a solution and decided to work on it, went into rapid prototyping to figure out if it could work. To a certain extent, we&#x27;re still in that phase, just with a much bigger team now.
james_impliuover 5 years ago
Two examples of rapid prototyping spring to mind:<p>* Twitch, started as one guy streaming his life then they realised lots of gamers were watching, and that they&#x27;d like to be able to stream <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FBOLk9s9Ci4" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=FBOLk9s9Ci4</a><p>* Segment, started as a thumbs up&#x2F;down tool for professors in lectures to work out when students are getting confused. They realised everyone just went to Facebook instead, then they wondered why they couldn&#x27;t tell this when they were remote! <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=l-vfn97QTr0" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=l-vfn97QTr0</a>
vmurthyover 5 years ago
One of HN favourites (?) DropBox : <a href="https:&#x2F;&#x2F;techcrunch.com&#x2F;2011&#x2F;10&#x2F;19&#x2F;dropbox-minimal-viable-product&#x2F;" rel="nofollow">https:&#x2F;&#x2F;techcrunch.com&#x2F;2011&#x2F;10&#x2F;19&#x2F;dropbox-minimal-viable-pro...</a>
评论 #21688996 未加载
johannes1234321over 5 years ago
The reality often is a mixture.<p>If you don&#x27;t know your problem there is nothing to prototype, no minimal viable product. Nothing.<p>If you spend years analysing and planning you get nowhere.<p>You need to have an idea, a problem which has to be solved, but should not be lost in the forest.
TeMPOraLover 5 years ago
At a strategy level, which one of the two points you end up doing depends on who commissions and evaluates the work. If someone hands you a spec and then disappears, only to come back 5 years later and expect to receive a finished project, you&#x27;ll be working &quot;top-down&quot;. If you&#x27;re trying to solve someone&#x27;s immediate problem with software, and are in regular contact with that someone, you&#x27;ll be working in &quot;rapid prototyping&quot;. All projects, software or otherwise, are spread around the spectrum between the two endpoints. Where exactly depends on specifics, but if you&#x27;re starting a new project, the consensus is that you should aim to be closer to the &quot;rapid prototyping&quot; end.<p>At a tactical level, feature level, you mix both. You state your problem (or get it stated to you), you think it through, hopefully considering at least some related work and doing some hard thinking, come up with multiple possible solutions and evaluate their trade-offs... by implementing their prototypes as fast as possible, because that&#x27;s the only real way to discover the trade-offs. Depending on how much in a hurry you are, you might pick the first prototype that isn&#x27;t a total disaster and build your feature from it, then test it, and repeat.<p>See how &quot;top-down&quot; and &quot;rapid prototyping&quot; is interwoven here. This approach can be expressed as: think before you do, but remember that you only learn the true scope of a problem by attempting to solve it.
muzaniover 5 years ago
I like and have successfully used the Business Model Canvas approach. You fill in all assumptions. Test the riskiest one in the simplest manner, then move on. E.g. if you&#x27;re not sure you can find the right partnerships, look for that first. If you&#x27;re not sure the value proposition would work, interview some people, make some mockup PowerPoint slides, and so on.
widforssover 5 years ago
My personal avalanche detection project <a href="https:&#x2F;&#x2F;avanor.se" rel="nofollow">https:&#x2F;&#x2F;avanor.se</a> (I haven&#x27;t started the image uploads for this season yet), seems to fit the second model. It&#x27;s very simple and small, but is successful in terms of being a prescribed tool for professional avalanche forecasting in Sweden.<p>I think it&#x27;s on it&#x27;s third rewrite or something right now, and runs circles around the only other service in this space regarding bang for the bucks (guess my budget, its smaller than that).
navdover 5 years ago
Just because you build a project with the second approach, it doesn’t mean you haven’t thought about alternative solutions or design like defined in the first.<p>A lot of times it’s useful building products by rapidly iterating because you see flaws, holes in your thinking, and get feedback immediately from people who are going to use it.<p>Immediate (or shorter term) feedback can be very helpful.<p>But to answer your question, YC talks a lot about Twitch being an example of the second approach.
jes5199over 5 years ago
A large working system must evolve from a small working system. There&#x27;s no way to start large.
empthoughtover 5 years ago
I think Django is a reasonable example of the second approach.
z3t4over 5 years ago
Human powered flight.
pryelluwover 5 years ago
Are you thinking of this as a value driven approach?
jdennahoover 5 years ago
solve a problem you have, it might now scale or spread, but you received some benefit for it.
jes5199over 5 years ago
The United States
avipover 5 years ago
Both approaches are wasteful but they waste different things.
评论 #21688683 未加载
jes5199over 5 years ago
The Internet
jes5199over 5 years ago
religion
jes5199over 5 years ago
biological life
knownover 5 years ago
PageRank