Hacker News new | ask | show | jobs
by tdeck 1849 days ago
> almost anyone I talk to is too young to imagine The Days Before Stack Overflow, when the bookstore had an entire wall of Java and the way you picked a Rich Text Editor was going to Barnes and Noble and browsing through printed books for an hour, in the Rich Text Editor Component shelf.

I remember the "Days Before Stack Overflow" and Joel is giving himself a bit too much credit here. Before SO, when I googled a problem I would often find a solution on a blog, personal website, or some community's PHPBB/vBulletin forum. Remember, this was 2008 we're talking about. The UX was undoubtedly less consistent, but it's not like we were rushing off to the library to look up PHP functions and CSS 3-column layouts.

21 comments

To be honest, Google returning SO answers for something that is exactly not what I am looking for instead of language/library reference documentation as it used to is one the most annoying things for me as a developer today. Though I think that's mostly on Google "optimizing" my queries by dumbing them down.

As an example, try looking for "python setattr" in your search engine of choice, and look for python.org documentation: none of them show it on the first page for me.

I also frequently run into the situation where I Google something, there is a perfect match on a SO question, but then the answer is "Actually, you don't want to do that thing you asked about, here is a different solution for your specific scenario". But often that alternative solution is not relevant in the general case, and there really are good reasons to want to do the thing as originally asked in the question.

Basically there are all kinds of situations where the specific question/answer format is actually at odds with generating good long-term documentation.

But that makes me all the more impressed with the success Stack Overflow has had. In my opinion their key insight is that it can be good enough. If I had come up with the idea for the product I probably would have been discouraged and given up way too early based on the fact that it is and will always be messy and imperfect.

> there is a perfect match on a SO question, but then the answer is "Actually, you don't want to do that thing you asked about, here is a different solution for your specific scenario".

That describes seemingly every Stack Overflow question I've found in the past four years. SO is basically useless for anything advanced enough to need SO.

Perhaps there’s a point at which you become advanced enough to not need SO. I’m certainly not there after a decade of software development. Do I have to dig a bit sometimes and go beyond the first few results on google? Sure. And if that doesn’t work I submit a question. I normally get an answer fairly quickly.
> Perhaps there's a point at which you become advanced enough to not need [something like] SO.

Not really, no, which is why it's so infuriating when people ruin it with "How do I do X?" "You aren't supposed to do X, here let me tell you how to Y instead.". The HTML/regex Zalgo rant at least had some style, even if it was utterly useless at answering the question.

I think the subset of programmers who don’t need something like SO’s value proposition is vanishingly small. Surely there are a few hundred people who have near perfect recall bolstered by perfect reference techniques.

At least speaking for myself, almost two decades in, I didn’t outgrow SO because I don’t need that kind of guidance. I outgrew SO because it doesn’t provide it effectively anymore.

There are topics on which Stack Overflow is worse to useless to me, mostly because I could probably name most of the experts who are better than me in the field and of course have ways of getting in touch with them on that. But I doubt there is anyone out there for which this is the situation for all topics.
Ironically the biggest problem I have today is that a lot of Q/As on SO are old, so it's hard to know if the answer I found is still canonical or if there's a better/different way to do the same thing, and I didn't perform the right incantations into google to find my answer.
> Though I think that's mostly on Google "optimizing" my queries by dumbing them down.

I'd say it's become a lot worse than it was just a couple years ago when you could massage the queries to get you exactly what you want. Now google seems to think it's more clever than you and turns every question into an entry level one.

I’ve used Google’s custom search engine (cse) to help solve this, when working on a project, just make a cse with the main sources of official docs for the stack you’re using; instead of getting 20 possibly related questions with half solutions that you have to wade through, you get straight to the source docs. I guess it works best when those source docs are good, eg postgres, but it’s certainly been a big win for me
On Chrome, go to chrome://settings/

Search for "search engines"

Open "Manage search engines"

Under "Other search engines" click on "Add" (on the right)

Add this custom search engine:

- Search engine: Python docs (first result)

- Keyword: p

- URL with %s in place of query: {google:baseURL}search?q=site:docs.python.org%2F3%2F+%s&btnI=I%27m+Feeling+Lucky

Install the "Redirect Google Redirects" extension https://chrome.google.com/webstore/detail/redirect-google-re... (otherwise you'll see a "Redirect Notice" page)

You can also add this search engine:

- Python3 docs

- pp

- {google:baseURL}search?q=site%3Adocs.python.org%2F3%2F+%s

Now, when you need to search for the Python documentation, just type "p setattr" and it'll go straight to https://docs.python.org/3/library/functions.html or you can search "pp setattr" and it'll show you the search results, filtered only for docs.python.org/3/

Thank you for your elaborate answer. Now please provide it for Firefox.

And Postgresql. And Flask. Now I am using aiohttp here. SQLAlchemy please. Pytest. Sorry, now in the Rust world. Get me some MDN for Javascript. w3.org for CSS3 spec, pleaaaseee!

You see where this is going? Python.org was an example to illustrate a point.

If you’re using a Mac, you might want to try Dash[1]. I’m sure similar tools exist on other platforms, but I’m not familiar enough to recommend them.

1: https://kapeli.com/dash

I have a few suggestions:

- Dash, the macOS app for language and library documentation is really nice. This is the first thing I go for.

- Chrome notices when you visit a page with a "Search" box. Next time you start typing python.org you can press tab to search the domain. I wish Firefox had this.

- AFAIK, Firefox's version of this is to RMB on a search box (for example on python.org's main page) and "Add a Keyword for this Search..." Set it to something like "py" and you can now type "py http" and it would search Python.org for "http"

- I honestly get better results from DuckDuckGo for stuff like this. Even better, they have bang! shortcuts. "subprocess !py2" will search Python.org's Python2 documentation for "subprocess" https://duckduckgo.com/bang

Those bangs look great. Really useful to know.
I'm not responding to your criticism of Google Search. I'm suggesting to anyone who shares your sentiment something that improved my dev experience.

I also use the uBlacklist extension to hide W3Schools et al. https://chrome.google.com/webstore/detail/ublacklist/pncfbmi...

I actually make these whenever I get frustrated by Google a few times. I have "m" for MDN... It's not hard you just need to pick a keyword. How to modify the URL in the search string should be pretty obvious. I think you'll find you don't need them for every library. It's mostly general tools with large user bases, like Python, where people are trying to make a living shitting up the search results.

If you use DuckDuckGo as your search engine you use the bangs that you add to your query, e.g.

  !w bang
searches for bang on Wikipedia. The list of bangs can be found here [0]

python: !python !python2 !python3

Postgresql: !postgres

Flask: !flask

SQLAlchemy: !sqlalchemy

Rust: !rust

Javascript: !javascript

CSS: !css

Currently there are 13,564 bangs and you can suggest new ones.

[0] https://duckduckgo.com/bang

Alternatively: set DuckDuckGo as your default search engine and type `!python setattr`.
But if you're looking for something as specific as the documentation in Python itself for setattr, why wouldn't you do

```

> python

Python 3.7.4 (default, Aug 13 2019, 20:35:49)

[GCC 7.3.0] :: Anaconda, Inc. on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> help(setattr)

```

Or if you want the documentation on specifically Python.org, use Google search but type

`setattr site:python.org`

?

The third hit for me is https://docs.python.org/3/library/functions.html

Maybe Googlebot is reading this thread.

Remember that Google is not showing the results the same way to everyone. Maybe others near me are more likely to click on the SO response so I get that one ranked higher, and less likely to click on the reference documentation, so I get targeted the same way.

Maybe if I let Google learn my patterns instead of disabling all the tracking I can, it'd give me better results.

FWIW, I get similar results with DDG, but Google wins hands-down on non-English searches.

I’m still trying to train Google to stop giving me W3Schools results and... I don’t have high hopes.
I see docs.python.org as result 9 (of 10) in duckduckgo. And there's a helper box at the top right, with the summary from and link to docs.python.org
7th on DDG for me.
> As an example, try looking for "python setattr" in your search engine of choice,

!python setattr

Or am I not allowed to add a character? :)

> try looking for "python setattr" in your search engine of choice, and look for python.org documentation: none of them show it on the first page for me.

I was curious and tried exactly that. For me, Google returns python.org as the third hit, above Stack Overflow.

Zeal (if on Linux) or Dash (if on Mac) are a lifesaver for that stuff.

It's ironic that I use Zeal so much but it really does just give me the answers quite often with less hassle than figuring out the search term to tell the search engine to get out the way!.

The sample you gave (and my experience in general) has official docs on the first page, but unfortunately below the fold. Top answers include various tutorial sites and an SO answer.

Ninja edit: my default search engine is DDG.

I just tried this, and the official python language docs came in third with SA just after. Now, for sure, it should be first, instead of the dumbed down tutorials, but it's certainly on the first page.
I've found DuckDuckGo better for searching for specific terms or functions like this. OTOH, google seems better for more vague concepts (like "python add attribute").
I think you might be giving Spolsky a bit too little credit! I remember the days before SO as well, and while you might luck out by finding your answer in some obscure niche blog, there was a relatively high chance that that error message you were staring at wouldn't have an accessible solution online (or at least not one that Google could provide). You could really just get stuck on a problem for a day, or never find the solution at all and have to work around it otherwise. SO was really a night and day change in how readily accessible it made programming information.

And I really did find myself buying a lot more programming books than I do now. When's the last time you picked up a book just to learn how to use a language - just the ins and outs of the syntax? I used to do that all the time, and then I immediately stopped when SO became popular because I could just google for what I wanted and SO would always tell me.

How people differ: before SO, I've rarely bought language books because most of them had reference pages readily available. I've learned and used heavily all of Python, Perl, PHP, SQL (with MySQL and Postgresql), a bit of assembly (NASM and GNU as), low-level details of C too (from ISO C9x draft), JavaScript, HTML and CSS and plain TeX, not to mention structures of x86 and VBE programming (I played with writing minimal kernels).

This was all before 2001 while I was in high school, with books being very hard to get in Serbia, so internet was my go to resource.

Now to be honest, even after SO, I only use it as a last resort. Somehow only 1/20th of the problems I hit match what people seem to hit on SO :/

> And I really did find myself buying a lot more programming books than I do now. When's the last time you picked up a book just to learn how to use a language - just the ins and outs of the syntax?

Perhaps this is an age difference thing? I'm 29 - I learned to program between 2003 and 2010 from online resources, mostly in the pre-SO era. I learned BASIC, Perl, PHP, and Python entirely online. My impulse was always to just Google things, although I fully admit finding results was more time consuming and frustrating back then. The only language I learned from a book was FORTH, and that's mainly because it's an older language and Starting Forth is one of the few good resources on the language even today.

I wish I could say my experience matched yours, but SO is an extremely frustrating place for many of my errors and problems. I don't think it made programming worse, it did make it better...but it's far from a panacea, and often a question has answers that are so outdated that the solutions no longer work, the solutions aren't complete or have bugs, or it's close to my error but not the same error, or a different solution. I'd say that's my experience about 1/2 the time I use SO.

I picked up a book last month to learn Clojure...how does SO help to learn a language start to finish? I don't even typically refer to SO for syntax questions, I'm sure it has that information but it doesn't seem like a very convenient place to index it. But maybe that's my subset of languages...

I probably end up on stack overflow a few times a week, and it is helpful...but I'd be fine without it if Google would just return better results.

> I remember the "Days Before Stack Overflow"

Yes. In the early 1990s I relied on Usenet's comp.lang hierarchy and the awesome FAQs that accreted there. A thorough reading of these could head off a huge number of problems before they manifested as bugs. Here are some examples [0, 1] to give people the flavour, admittedly from about 10 years after I had moved on.

[0] http://www.faqs.org/faqs/C++-faq/part1/ [1] http://www.faqs.org/faqs/C++-faq/part5/

The contrast from bookstore to single site Q&A is exaggerated, but I was around before Stack Overflow. The problem was not just that there wasn't a single (popular, highly active) site, and not just that you had to sift through search results. It's that if you didn't find your answer, you didn't know for sure where to post your problem, and actually expect to get answers. You might post it on a personal blog or forum, and then wait a very long time to see if a response would appear. Often it would not (or it was something you already tried or something else that didn't work), and you'd be on your own, and if other people were lucky, you'd document the eventual solution (but often, you did not.)

Stack Overflow gave you a central place for you to ask questions, and (within a pretty reasonable time frame) start to get suggested solutions to try and consider.

> you didn't know for sure where to post your problem

It depends on the topic/domain, but I have fond memories of being on various mailing lists, and there was also usenet.

Came to say this - the more niche usenet groups were full of helpful people that didn't mind answering questions, and discussing fuzzy issues.

I don't think of the developer eras as pre-SO vs post-SO, more pre-Google vs post-Google, though SO has definitely been a net positive.

For me there were three phases:

- pre-web: experts concentrated on Usenet

- early-web: Usenet decline and counter-productive decentralization

- SO (and others): recentralization

I think the SO guys just had a good-enough formula at exactly the right time and everybody jumped on fast enough

Google was a miracle in 2001. By 2008, ExpertSexChange and others had SEOd the blogs and phpBBs off the first page.
It’s weird he even frames it this way, when the original SO pitch was that it was better than an older, competing website (which they derisively referred to by the disambiguating punctuation in its URL).

On the one hand, there is a slice of history in which SO absolutely deserves this much credit, even if this particular hyperbole is anachronistic. Early on, and for several years, SO did genuinely provide a single place to find relatively high quality/trustworthy answers to a huge range of programming questions.

On the other hand, I think that shark has been jumped for many years since. At least for my usage, I deliberately avoid clicking SO links until I’ve exhausted other promising resources (first party docs, reputable forums and blogs as you’ve mentioned). Because the quality of SO content is generally not just terrible, but because the gamification design they touted as producing quality can’t keep up with volume or time.

Nearly every SO link I’ve clicked in recent months has either been full of garbage answers (with maybe something helpful buried in comments), has an accepted answer years out of date prominently displayed over several more correct answers with no/few upvotes, or tumbleweeds because apparently even moderately difficult questions just aren’t interesting to contributors.

And I’m certainly not retracing my breadcrumbs to try to fix that, which would probably make me feel guilty if I didn’t find the whole enterprise of SO/SE skeezier and skeezier as it grew.

Honestly it’s a shame. I don’t care a bit for their solution, but it was really great to have such a reliable resource when it was one.

I remember the "Days Before Stack Overflow" and Joel is giving himself a bit too much credit here. Before SO, when I googled a problem I would often find a solution on a blog, personal website, or some community's PHPBB/vBulletin forum.

yep, Stack Overflow eliminated a whole ecosystem of fantastic personal blogs. I get a ton of value out of SO, I'm not trying to hate on it unthinkingly, but there's tradeoffs in everything.

Yeah, between various forums and blogs and the later-renamed expertsexchange you could often find answers. It was SO before SO until they started to plaster it with ads.

I've seen plenty of examples on SO where the accepted answers are actually wrong. Not wrong as time has moved on, wrong even at the time. Early SO is especially guilty of this kind of cult of personality that built up around certain people, so whenever they answered they would be given the accepted answer, even if it was wildly incorrect and/or low effort.

It's an incredibly useful resource but it's not as though if it disappeared tomorrow people wouldn't find a way.

Yup. I remember in 2005 I was teaching my fellow students a “debugging” course, which was of course not normally part of a curriculum. It basically involved “copy / paste your compiler error into Google and tada.wav, you’ll have mailing lists or Usenet or blog posts about your issues”.

SO changed some of that landscape, but it was mostly a better ExpertsExchange.

I remember ExpertsExchange. What a PITA. SO is a better ExpertsExchange in the same way a car is a better horse. Not showing me the fucking answer would probably be #1 usability issue for a site I visited to "show me a fucking answer".
I also remember the "Days Before Stack Overflow" and you're not giving Joel (et al) enough credit. It's not like there wasn't any information on the web; it's just that it wasn't anywhere near as organized or as complete as what you can find today on SO. And what you definitely couldn't be sure of is that you'd ever get an answer to a new question if you couldn't already find it somewhere else. SO really did change that overnight.
Am I the only programmer who finds Stack Overflow to be highly overrated? I used it recently for the first time in several years as I was learning a new technology, and the most valuable answers should have just been in the documentation (or maybe they were in the documentation but Stack Overflow covered up the results.) But the majority of the time I find the documentation just significantly better and give up on SO.

To say nothing about how outdated some of the results are. I tried exactly what Joel suggested. I typed "Rich Text Editor" and searched stackoverflow.com. All top three results were at least a decade old (okay, the youngest was like 9 years 7 months, but I'm going to round it up). They were closed, jut clogging up search results with deprecated answers.

In the time before Stack Overflow, I agree there were many good sources online. I also agree that the printed PDFs of sources that some people passed off as books were horrible. But I do remember a lot of very good books at Barnes and Noble.

Even to the extent that was true, you almost certainly could not get back there. Today, a search query that has no good answers tends to throw up lots of SEO tarpits leading to pages containing nothing but the search keywords, some connecting verbiage, and ads/trojans/popovers.
For me it was usenet and IRC... I still remember discovering usenet and the incredible resources on comp.lang.c++.moderated... those were the good ol' days where reputation was based on people recognizing you and not based on some score / number of followers...
I still miss browsing at Computer Literacy in Sunnyvale and San Jose.

https://en.wikipedia.org/wiki/Computer_Literacy_Bookshops

I think you're onto something. I remember myself, as a young developer and a fresh university student mostly reading programming forums or browsing newsgroups. Even more so official documentation for a programming language or a library.

Only know, having 10+ years of experience behind me, I find myself stumbling upon SO because I know exactly what I'm looking for. In other words, my path to finding the answer is shorter. So it's just a time saver.

I find issues on Github (for open source software) to be frequently of a similar value to me.

> Before SO, when I googled a problem I would often find a solution on a blog, personal website, or some community's PHPBB/vBulletin forum.

Even more likely, you would get links to Experts Exchange, which was ad-riddled with the actual answer behind a paywall. I'm glad that SO was able to at least kill that business model. Someone should do the same for Pintrest and their dominance of Google Images.

The actual answer was always at the bottom if you scrolled down far enough. Lot of dark patterns on that site.

I personally disagree with tdeck, Joel and Jeff deserve a lot of kudos, as an oldie myself SO was an absolute game changer for programmers.

I think it used to be, but IIRC some time after Stack Overflow became popular they started actually gating it. Probably because there were people researching questions posed on SO and answering them from info on EE.

If so, that was a catch-22 for them. Either leave them available and watch the only thing making your site useful be rapidly transcribed onto a different and now more popular site (whether by people playing into the gamification or scraping as used to be the norm doesn't make a difference here), or close it off and allow their more use hostile experience to force them into irrelevance. That's a tough place to be. By the time it became an obvious problem SO was probably too far ahead to catch even if they pivoted immediately, as I'm not sure anyone ever really felt any loyalty to EE with it's poor usability bordering on UX hostility.

I remember listening to the podcast where they announced Stack Overflow, and cited exactly the problem of walled communities like Experts Exchange as who they wanted to drive out of business.

Stack Overflow ain't perfect, but it's amazing to see how impactful it's been. Especially the unix/superuser stack exchange sites for having useful tips that would be a pain to find elsewhere.

> Joel is giving himself a bit too much credit here

Especially since Stack Overflow was created specifically as a better expertsexchange (with a better name too).

Spolsky and Atwood had a podcast when they were putting Stackoverflow together and they talk at length about what they wanted to achieve. Its amazing actually to see they had a very precise idea of what they wanted to do and they absolutely hit their own objective.

Podcast 1, April 2008

https://stackoverflow.fogbugz.com/default.asp?W6

One thing we are noticing is that the book market, the programming book market has just completely vanished. It is falling apart, catastrophically. The programmers I know don't really learn new technologies from a book any more. What they do is they find a tutorial on the web -- maybe -- and they try to do something and then they page fault in knowledge. Basically, they get stuck on something and they either post to a discussion group, or they type their question into Google.

And those are the two things we want to serve basically is the posting to the discussion group and typing things into Google. Our longer term goal, if we’re successful, is that you're trying to figure out how to do something in Python like how to merge two arrays in Python and you go to Google and you type "merge two arrays python" and submit that, and our goal is to be the number one hit that comes up with a really good edited answer to that question that some individual has contributed and maybe other individuals have edited.

-----

So then you go search on the Internet for "Mac remote desktop connection beta expired" and you get all kinds of discussions; people discussing what to do and how to work around this problem, and "how stupid is Microsoft that they can't solve this problem." What's interesting is that within five days Microsoft had indeed released a new version of it with the expiration removed. So, it is still the beta because they’re still late but it’s not actually telling you that it’s expired anymore.

So that's fine, but here's the point: in the mean time, all those previous blog articles about this thing being removed are still the results you're getting from Google. And so the number one result from Google doesn’t know about the new thing – the fix. In other words, there is something that happens when something is broken and then gets fixed. The brokenness gets into Google and gets page ranked and that tends to sort of dominate the results for a long time because it’s got the earliest dates on it and a lot of the times you're trying to solve something and you find a discussion on the Internet that says "the solution to this problem is there is no solution and you are borked" and you can't do anything about it. And that's wrong, that's no longer correct, you're not looking at the correct information anymore.

One of our goals is to have a place where if somebody posts a wrong answer or they post an answer that used to be right but it becomes wrong that there is a way to remove that and to get that out of the site and to get the new right answer at the top of the page.

--------------------

Podcast 4, May 2008

https://stackoverflow.fogbugz.com/default.asp?W781

So what are we actually going to bring to the table that actually makes us better, or at least different, than these other programming communities? And I think one of the things we have going for us - and it sounds kinda obvious - is when we have pretty large audiences that we're gonna say, "Hey take a look at this thing we're doing." Right, so... you know, it's kind of like when Nine Inch Nails did digital music distribution, and when Radiohead did digital music distribution, all the commentators, when they talked about that, said, "Yeah, that's no problem, you can do exactly what they did if you have a band. Just one: be Radiohead, right, two: put digital music online." So, we've built up...

... Yes, yes, so we're hoping that having large audiences that we're involving in this process, through this podcast and through the blog and so forth, is one of the reasons that it's going to be different...

------

Spolsky: So that was the question, I guess, that everybody keeps asking, "why another one, and how are you going to hit that so called critical mass?"

Atwood: Right, well, first a bit of terminology. So, it's not exactly a forum. I mean, when I thought about this and Joel and I were initially talking about this, I framed my mind in a way that said, "OK, this is a forum that we're building." But the more we looked at it, it's not really a forum. It's more focused than that. Cause forums have a problem, and I've discussed this on previous podcasts, where you can talk about anything, right? And that ends up sort of, you end up chasing your tail in some way. When you can discuss anything, you end up discussing nothing. So, there's a very laser-tight focus on question/answer that I think sets us apart from forums right out of the gate. And then also, and I don't think we've actually discussed this publicly, but there's going to be a Wiki-like aspect to the pages as well. So the questions won't, hopefully won't go totally stale over time. Because once you get enough trust in the system, you'll actually be able to update the questions, point people to different areas as questions get old, and so on. So those are my first two observations out of the gate. What would you say, Joel?

----

See also this "Google Tech Talk" by Joel Spolsky in April 2009 when he talks in detail about the design decisions they made with StackOverflow - https://www.youtube.com/watch?v=NWHfY_lvKIQ - again they knew exactly what they were trying to do

I definitely used to buy and read more books back then, and documentation in general. Maybe that was a good thing.
I feel like this argument is akin to "back before cars, I used to walk all the time, and I was in much better shape." There's nothing to stop you from going and doing it again!
Well, yes and no... As an Apple developer, I used to be able to rely entirely on Inside Macintosh books because Apple’s docs were the best in the business, probably the best ever. Nowadays, even if I wanted to rely on Apple’s own documentation, I can’t, because the docs are just no good any more.

(Their header files are still very informative! But much less so in the Swift era, sadly...)

To use your analogy, I’d really like to walk as much as I used to, but they ripped up all the walkable districts to build highways!

I don’t think things are bad across the board, at least. For example, you can get a very long way in Javascript purely from MDN rather than needing SO.

I think that now, more then ever, any programmer that has started in the last 6-8 years will have the experience that Joel states.

Though for those of us who has been doing this for 15 years, that is not the case.

Most Unix admins will suggest you check the manpages for a utility before Googling what you need. The answer is often on your system, you just don't know where to find it.
Right. I taught myself how to make web sites (both front and back) in 1999 purely online without much difficulty.