There is an endless discussion in the startup community about the value of ideas versus the importance of execution. Here is a timeline showing Hacker News community submissions with the idea(s) keyword in the title:
Magic Chart
This is an exercise, you must be objective to fill in your chart, and dabble in the black art of time estimation. The idea of the magic chart is to fill in a scatter plot chart. The x axis shows the time you expect it to take to execute the idea (you can limit it to development time first), and the y axis the potential of the idea. You can easily add other dimensions like cost, to the graph by using the size of the point plotted or colors. Add a vertical asymptote to the chart at the outside time limit which is feasible for you.
Here is my magic chart:
As you see it’s difficult to came up with ideas which can be executed in a short time and many of the ideas fall on an uncertainty beyond some time point. If you think that having a minimum viable product is key, then you must think very hard about how to reduce your product execution time, and this is an art more than a science. The need to generate profit is a serious constraint. Your idea may be excellent and your software may be used by millions of people, but you may lack a business model.
How is your ideas execution magic chart landscape?
HNSearch Script
Here is the Python script for retrieving Hacker News posts with the words idea and ideas in the title. It includes a legal hack (what else?) to bypass the ThriftDB’s HNSearch API imposed limit of 1000 items.
#!/usr/bin/python # -*- coding: utf-8 -*- # Done under Visual Studio 2010 using the excelent Python Tools for Visual Studio http://pytools.codeplex.com/ import urllib2 import json from datetime import datetime from time import mktime import csv import codecs import cStringIO class CSVUnicodeWriter: # http://docs.python.org/library/csv.html """ A CSV writer which will write rows to CSV file "f", which is encoded in the given encoding. """ def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): # Redirect output to a queue self.queue = cStringIO.StringIO() self.writer = csv.writer(self.queue, dialect=dialect, **kwds) self.stream = f self.encoder = codecs.getincrementalencoder(encoding)() def writerow(self, row): self.writer.writerow([s.encode("utf-8") for s in row]) # Fetch UTF-8 output from the queue ... data = self.queue.getvalue() data = data.decode("utf-8") # ... and reencode it into the target encoding data = self.encoder.encode(data) # write to the target stream self.stream.write(data) # empty queue self.queue.truncate(0) def writerows(self, rows): for row in rows: self.writerow(row) def get_hackernews_articles_with_idea_in_the_title(): endpoint = 'http://api.thriftdb.com/api.hnsearch.com/items/_search?filter[fields][title]=idea&start={0}&limit={1}&sortby=map(ms(create_ts),{2},{3},4294967295000)%20asc' incomplete_iso_8601_format = '%Y-%m-%dT%H:%M:%SZ' items = {} start = 0 limit = 100 begin_range = 0 end_range = 0 url = endpoint.format(start, limit, begin_range, str(int(end_range))) response = urllib2.urlopen(url).read() data = json.loads(response) prev_timestamp = datetime.fromtimestamp(0) results = data['results'] while results: for e in data['results']: _id = e['item']['id'] title = e['item']['title'] points = e['item']['points'] num_comments = e['item']['num_comments'] timestamp = datetime.strptime(e['item']['create_ts'], incomplete_iso_8601_format) #if timestamp < prev_timestamp: # The results are not correctly sorted. We can't rely on this one. if _id in items: # If the circle is complete. return items prev_timestamp = timestamp items[_id] = {'id':_id, 'title':title, 'points':points, 'num_comments':num_comments, 'timestamp':timestamp} title_utf8 = title.encode('utf-8') print title_utf8, timestamp, _id, points, num_comments start += len(results) if start + limit > 1000: start = 0 end_range = mktime(timestamp.timetuple())*1000 url = endpoint.format(start, limit, begin_range, str(int(end_range))) # if not str(int(x)) then a float gives in the sci math form: '1.24267528e+12' response = urllib2.urlopen(url).read() data = json.loads(response) results = data['results'] return items if __name__ == '__main__': items = get_hackernews_articles_with_idea_in_the_title() with open('hn-articles.csv', 'wb') as f: hn_articles = CSVUnicodeWriter(f) hn_articles.writerow(['ID', 'Timestamp', 'Title', 'Points', '# Comments']) for k,e in items.items(): hn_articles.writerow([str(e['id']), str(e['timestamp']), e['title'], str(e['points']), str(e['num_comments'])]) # It returns 3706 articles where the query says that they are 3711... find the bug...
Resources
- Are Ideas Getting Harder to Find? (2016)
- Science as Art
- Thinking Skills Instruction: Concepts and Techniques (Anthology)
- De Bono’s Lateral Thinking
- TRIZ
- Schumpeter’s Creative Destruction: A Review of the Evidence
- Google Query: “ideas vs execution” OR “execution vs ideas”
- Google Query: site:news.ycombinator.com AND (intitle:idea OR intitle:ideas)
- Startup Ideas We’d Like to Fund
- My list of ideas, if you’re looking for inspiration by Jacques Mattheij
- Startup Ideas We’d Like to Fund by Paul Graham.
- Ideas don’t make you rich. The correct execution of ideas does excerpt from Felix Dennis book.
- Ideas suck by Chris Prescott.
- Execution Matters, Ideas Don’t by Fred Wilson.
- What Is Twitter’s Problem? No, It’s Not the Product
- 1000 results limit? (HNSearch NoAPI limits, bonus hack included in this article).
- Year 2038 problem
- How to use time > year 2038 on official Windows Python 2.5
- Solr FunctionQuery
- HackerNews Ideas Articles
- Execution Is An Order Of Magnitude Easier Than Opportunity
Even though have passed more than 4 years I have to say that I enjoyed reading this article Sebastian and thank you for this elaboration https://vimeo.com/143233507