Computing is all around us. From helping us find songs we like on Pandora to describing how DNA encodes information in living things, computing is a huge field:
"The old definition of computer science -the study of phenomena surrounding computers- is now obsolete. Computing is the study of natural and artificial information processes." - Peter Denning
It's a fascinating field with incredible potential, but it typically sells itself short by being thought of as "just programming."
I bring this up because I'm wondering if Stack Overflow, a site that describes itself as "a programming Q&A site," can help people explore the magic and beautiful parts of computing?
I'm looking for a place that spawns computing curiosity just like a well done photo on Flickr sparks a torrent of "How'd you do that?" questions that the photographer is happy to answer.
It would be a place where all of computing could be explored and where new ideas would be welcomed and celebrated for their creativity. I'm thinking of a place that understands that computing is still a young field; a place that understands that we're just at the start of a huge revolution and the best days are yet to come and most of the land is still unexplored.
I'm looking for a place that has good ideas but isn't overwhelmed by academic spam. As Luis von Ahn laments:
"Given the number of people working in computer science and the fact that publishing papers is considered the goal of our work, there is an insane number of papers written every year, the vast majority of which contribute very little (or not at all) to our collective knowledge. This is basically spam. In fact, for many papers (including some of my own), the actual idea of the paper could be stated in one paragraph, but somehow people manage to write 10 pages of it."
Ideally, this place would include opportunities to have TED and Presentation Zen style presentations from folks in the trenches with the chance for Pecha-Kucha style presentations from amateurs. It would foster local face to face group meetings in your own city but also allow online groups to form for discussing a single book or good paper. It'd capture the collective wisdom of the crowd by offering recommendations of what else to explore in computing just like Amazon with books, Netflix with movies, and Pandora with music.
I don't want this to be an elitist or arrogant place. I want the culture to realize that skill distribution often follows a power law curve this implies that almost everyone is below "average." A single individual working in the computing field can never master the whole field, but I want a place where exploration is encouraged.
If done well, it'd be a place that could benefit people in middle school with a interest in computers (and to a lesser extent, their guidance counselors) as well as developers in industry. In addition, it'd be a place where smart researchers would love to participate.
I have searched the web for years without finding such a place although I've found some places that have elements of what I'm talking about:
- Stack Overflow - this site is a great way to ask programming questions, but it doesn't have the exploration aspects that I'm looking for. The closest it seems to have is browsing by tags and searching.
- Videos: Google Tech Talks, Facebook Tech Talks, Channel9's Going Deep Series, and some on specific technologies like Anders' PDC talk on the Future of C# and Douglas Crockford's JavaScript Introduction. In addition, I'd like the site to have a respect for history sort of like the Computer History Museum Channel.
- Online exhibits, sort of like the Computer History Museum's online chess exhibit.
- Online courses like the Computer Science ones on Academic Earth.
- Print publications like the updated Communications of the ACM that feature a wide swath of our industry, including accessible research highlights.
- Wikipedia: Its Computer Science Portal and many articles on topics on various topics are pretty good, but the sense of community isn't there like it is on Stack Overflow. Additionally, there are some authority problems (but on the whole, it's usually better than an "authoritative" source)
- Google Knol: It makes it easier to identify a single source which makes it sort of more comfortable to cite, but the content isn't as broad as Wikipedia.
- Tagging sites: de.licio.us makes it easy for people to tag certain articles, but there doesn't seem to be good recommendation systems built on top of it based on content that'd be helpful for recommendations.
- News sites: Hacker News and the Programming Reddit highlight new things in blogs and sometimes gets good comments, but it doesn't seem to have the exploration quality that I'm looking for.
- Book sites like Goodreads and LibraryThing are good for sharing books and reviews, but don't seem to have the exploratory feel that I'm looking for and tend to focus just on books and not other media (e.g. papers, blogs, videos, and courses)
- Academic libraries like ACM's Digital Library and Google Scholar - great source for research, but they don't have the community aspects I'm looking for. In addition, there tends to be some "academic spam" as mentioned above.
- Local user groups including .NET user groups, Ruby Meetup groups, etc - these are good for asking specific questions or learning a specific technology stack, but don't offer the exploratory breadth that I'm looking for. Some local ACM chapters get closer to what I'm looking for.
- The Great Principles of Computing project (and its video overview) - it's a great framework for showing the deep connections across computing by highlighting 7 "great principles" in computing: computation, coordination, communication, recollection, automation, evaluation, and design. These principles would be a great connector of ideas on the site.
The ideal site would have the best elements of all of the above sites.
Can Stack Overflow become this type of site? Is what I'm describing too far beyond Stack Overflow's charter? If so, what's the next best choice?
If it was Stack Overflow, I envision something like a person starting out looking at a regex programming question and then going into sort of a browse/explore mode that might show them other graph related programming issues that might highlight how Pandora, Facebook, and Google Maps works. Maybe a deeper exploration would use the Great Principles to see connections to other fields like biology.
Creating a site like what I'm describing will take a lot of work. I'd like to leverage existing tools if at all possible. Building on Stack Overflow would be great.
I'd really like to make this place a reality. It is the goal of my team for our Rebooting Computing project that I described on my blog. We'll have support from academia, industry, as well as organizations like the ACM. This will help get us started, but ultimately we'll need your help to make it a success.
I'd love to hear your thoughts and suggestions. Would you participate in the place I'm describing? What can we do to make it a success?
Update: I realize this probably sounds too grandiose and needs to be broken into smaller parts. I'll vote up and possibly accept an answer that best describes what part should be attacked first. Thanks!