> 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.
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.
> 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
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/
> 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.
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.
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.
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.
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 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.
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.
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.
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.
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 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!
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.
Talking with developers who started their career in the early 90's, it seems to me the two biggest changes in software development over the past 30 years are:
- the rise of easily shared open source libraries and applications (supported by infrastructure like CPAN, Maven, and Github)
- crowd-sourced documentation (blogs, forums, and Stack Overflow)
It changed not just the way an individual programmer interacts with the code, but the way programmers work together.
What I love about stack overflow is that you don't just get the answer to your question (usually) but the top rated answers also include the "whys". Meaning you get to expand your understanding of the domain in question.
People who write stack overflow answers really are the unsung heroes of the open source world.
This highlights something I believe to be a deeper truth about programming in general: the whys matter, sometimes more than the hows.
So much of programming is patterns that exist for extremely arbitrary reasons (note: not acausal reasons, just reasons that are unimportant to the immediate problem domain one is trying to solve, or perhaps important in a way one doesn't yet know). Knowing those reasons can give you some mental hooks to hang the arbitrariness off of.
COM, which Joel mentions anecdotally at the top of the article, is a great example of that. I think the biggest challenge people have remembering why COM works the way it does is it's there to solve a problem that primarily the Microsoft software ecosystem had, which didn't show up in other software ecosystems as strongly: Microsoft had a vested financial interest in enabling developers to create closed-source binary blobs that could interact with each other via exposed objects.
Though COM is language-agnostic, most examples from textbooks of the mid-'90s era reveal the big problem it's solving: C++ was the hot language at the time, but C++ doesn't standardize name-mangling, so two arbitrary binary blobs of C++ code from two different compilers weren't guaranteed to be able to use the objects in each other's libraries. This isn't a problem Apple's software stack saw so often (Apple had fewer toolchains, so compiler incompatibility was less frequent a problem) and it was rarely a problem in the open-source OS ecosystems (if you're passing around source code instead of closed-source binary blobs, you don't care about name-mangling issues because you're building the source as a lump under the watchful eye of one compiler). But in the Windows world, with a pile of choices for compiler and a business need to support closed-source binary blobs that could expose objects, it was hell.
It's helpful in understanding COM to understand why Microsoft's ecosystem needed a way for closed-source libraries to expose objects in a language-agnostic way.
What are you looking up that you get "whys"? I consider myself lucky if SO returns "here's the name of the library function you assumed existed that does what you want."
Stack Overflow destroyed a lot of its social capital and pissed off its own community in the wake of the Monica Cellio affair a little under 2 years ago. (This one was touched off by the Judaism Stack Exchange moderators asking questions about pronoun policy, but ended up with basically every community involved up in arms, including many in their LGBTQ+ community.)
One hopes the new owners will do a better job of managing community relations. It will be difficult for them to do worse.
This is very true. It sidetracked nearly all the communities for a full year, triggered resignations, and caused lawyers to get involved.
They've done other things to cause various 'controversies' with their base... changing the license answers are under, hiding controversial questions, etc... but their amazingly unprofessional treatement of Cellio caused more lasting damage than any of that.
It's interesting, I'm on Hacker News almost every day and have benefited enormously from Stack Overflow yet I have no idea what you're talking about or who Monica Cellio is. My guess is that the vast majority of their users haven't either.
I only mention this because seemingly major events in online communities don't always have the impact that people involved or following closely think they do.
Monica was just the spark that lit the fire of the community-management disaster, but they'd been stockpiling fuel. Even the pronoun question itself was only raised as part of a somewhat clumsy top-down directive to move away from the "ideal questions and answers are universal and impersonal" approach that had previously served to render the matter of pronouns a non-issue. As things progressed, it soon became clear that Stack Overflow's corporate strategy was to try its hardest to stick their collective fingers in their ears and throw volunteers under the bus.
A thoughtful reader can imagine how pseudonymous moderators of the LGBT stack exchanges might be shocked by the company itself breaching an expectation of privacy, talking to the press using the volunteer's real name, and radically misrepresenting her position. What might be next? Might some of them be outed? Would a Google search for their name, too, reveal only the Stack Overflow controversy?
One open letter reads: "Stack Exchange has rewarded years of service by putting one of its volunteers in danger – and there’s now a very real feeling that we may no longer be safe on this platform." https://dearstack.artofcode.co.uk/
A resigning LGBTQ moderator wrote of the broader situation, "[Stack Exchange draws] vocal bigots from the woodwork with prompts to discussion, and then [vanishes], forcing us to decide between tacit approval through silence or defense of our own against an unchanging torrent of bigotry." https://meta.stackexchange.com/questions/334575/dear-stack-e...
A lot of volunteers just went straight out the door.
Sure. That's a little like saying you use Wikipedia regularly. I have ~10k rep on Stack Overflow from >200 answers, but I'm still a small fry compared to the volunteer moderators and the true power users.
There are people who spend an insane number of hours closing or editing basic "How do I do this" questions that would otherwise overwhelm the site (whether or not you agree with the standard these users set for the site is a separate discussion). When Monica got removed, the people who had made SO a significant part of their identity were understandably upset (the fact that she managed to raise >$25k to sue SO for defamation[0] should show just how upset). Why should anyone try to make the site better when SO was insulting its most helpful users and self-sabotaging?
I dramatically cut down on my time spent learning by answering questions. It's certainly a minority that did so, but I think it's a formerly-prolific minority.
> some things (like handing a file upload, or centering) that were, shockingly, still just as randomly difficult as they were in VBScript twenty years ago.
I don't get why the "centering is hard" trope is still being repeated in 2021.
I'm a recent new grad front end dev and have never had issues with this.
Hasn't it been years at this point since flex-box became standard?
You're not wrong, but you may be reading it in the wrong tone.
There is a certain type of joke where the punchline is something that was true for so long, it's acceptable to repeat it ironically as a sort of inside joke, knowing it is obviously not true any more. Best pulled off if you were actually there, of course. I think that's what's going on here.
To me you proved the point. Centering with Flexbox requires styling the parent and they use two different properties for horizontal and vertical centering.
Truly simple to me would not be CSS but rather an attribute on the element. But with CSS, the simplest thing would allow one to just put a style on the element you want to center.
The other aspect of this is that there are multiple other ways of doing it.
> Centering with Flexbox requires styling the parent and they use two different properties for horizontal and vertical centering
It does require styling the container, to specify that a new layout system (Flex or Grid) is to be used instead of the default. While it's useful to have separate properties for the two directions, you can also use a single shorthand property to set both at once:
I don't understand why this is downvoted. It doesn't look like top results for "how to center html element" show the flexbox method. My example of "center vertically css" also doesn't show the flexbox method.
The first result recommends the ol' "top:50%; transform:translateY(-50%)". [1]
The second result shows the padding method, the line-height method and the translateY method again. [2]
The third result is a complete guide asking you questions three layers deep about what you want to do and gives you the personalised answer for the scenario. [3]
I gave up afterwards.
But the point is people are still learning old ways of doing it. Should they read a guide to modern CSS? Yes, but we all know searching and clicking on the first result is easier.
Is stack overflow even useful anymore? I guess it must be for some.
Personally for me it feels like the content is pretty "stale". E.g. an answer from 5 years ago that uses a deprecated feature in a library that was abandoned 3 years ago etc, a reference to something only working in Chrome v12(we are on v90 now IIRC) etc etc. It seems like a lot of what I come across on there is just so out of date that I personally do not put value on it.
As such I personally avoid it now like I used to avoid experts exchange that was the stack-overflow-before-stack-overflow.
I had to figure out how to do something with videoJS and all I could find were answers for the old version of the lib, there were new answers but they were buried and hard to find.
> The biggest problem is that developers of programming tools love to add things and hate to take things away. So things get harder and harder and more and more complex because there are more and more ways to do the same thing
Kind of, but not exactly.
As a given software platform evolves rarely do the defining foundations significantly change. This means there becomes many ways to solve a problem down the line, but the original few solutions typically still work and apply just the same as they did in the early days.
I cannot emphasize enough just how important that is.
The implications of grasping this allow a developer to solve almost any problem like magic. The mythical 10x developer sprinkling their pixie dust like dropping blow at a night club. That is because the developer knows the durable solutions to most problems already and optionally may consider newer approaches when beneficial. They know what works and have the freedom to deviate at their convenience.
The implications of missing this produces infantile developers dependent upon the flavor of the moment. The developer reliant upon a late stage convention or supplemental tool has less flexibility than the developer more experienced with the foundational concepts of the given platform. This is vaguely related to the Law of Leaky Abstractions[1], but that law just describes reactive scenarios.
Went with my current company mostly because they dropped his name in the job description.
(Also: Went so heavily into table tennis that it always seems to me he's holding that table tennis racket a bit awkwardly or like a hobby player in that picture. But great hobby.)
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.
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.
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.
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.
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/
```
> 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`
?
Maybe Googlebot is reading this thread.
!python setattr
Or am I not allowed to add a character? :)
I was curious and tried exactly that. For me, Google returns python.org as the third hit, above Stack Overflow.
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!.
Ninja edit: my default search engine is DDG.
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.
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 :/
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 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.
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/
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.
It depends on the topic/domain, but I have fond memories of being on various mailing lists, and there was also usenet.
- 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
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.
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.
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.
SO changed some of that landscape, but it was mostly a better ExpertsExchange.
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.
https://en.wikipedia.org/wiki/Computer_Literacy_Bookshops
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.
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.
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.
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.
Especially since Stack Overflow was created specifically as a better expertsexchange (with a better name too).
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
Though for those of us who has been doing this for 15 years, that is not the case.
- the rise of easily shared open source libraries and applications (supported by infrastructure like CPAN, Maven, and Github)
- crowd-sourced documentation (blogs, forums, and Stack Overflow)
It changed not just the way an individual programmer interacts with the code, but the way programmers work together.
People who write stack overflow answers really are the unsung heroes of the open source world.
So much of programming is patterns that exist for extremely arbitrary reasons (note: not acausal reasons, just reasons that are unimportant to the immediate problem domain one is trying to solve, or perhaps important in a way one doesn't yet know). Knowing those reasons can give you some mental hooks to hang the arbitrariness off of.
COM, which Joel mentions anecdotally at the top of the article, is a great example of that. I think the biggest challenge people have remembering why COM works the way it does is it's there to solve a problem that primarily the Microsoft software ecosystem had, which didn't show up in other software ecosystems as strongly: Microsoft had a vested financial interest in enabling developers to create closed-source binary blobs that could interact with each other via exposed objects.
Though COM is language-agnostic, most examples from textbooks of the mid-'90s era reveal the big problem it's solving: C++ was the hot language at the time, but C++ doesn't standardize name-mangling, so two arbitrary binary blobs of C++ code from two different compilers weren't guaranteed to be able to use the objects in each other's libraries. This isn't a problem Apple's software stack saw so often (Apple had fewer toolchains, so compiler incompatibility was less frequent a problem) and it was rarely a problem in the open-source OS ecosystems (if you're passing around source code instead of closed-source binary blobs, you don't care about name-mangling issues because you're building the source as a lump under the watchful eye of one compiler). But in the Windows world, with a pile of choices for compiler and a business need to support closed-source binary blobs that could expose objects, it was hell.
It's helpful in understanding COM to understand why Microsoft's ecosystem needed a way for closed-source libraries to expose objects in a language-agnostic way.
One hopes the new owners will do a better job of managing community relations. It will be difficult for them to do worse.
They've done other things to cause various 'controversies' with their base... changing the license answers are under, hiding controversial questions, etc... but their amazingly unprofessional treatement of Cellio caused more lasting damage than any of that.
I only mention this because seemingly major events in online communities don't always have the impact that people involved or following closely think they do.
A thoughtful reader can imagine how pseudonymous moderators of the LGBT stack exchanges might be shocked by the company itself breaching an expectation of privacy, talking to the press using the volunteer's real name, and radically misrepresenting her position. What might be next? Might some of them be outed? Would a Google search for their name, too, reveal only the Stack Overflow controversy?
One open letter reads: "Stack Exchange has rewarded years of service by putting one of its volunteers in danger – and there’s now a very real feeling that we may no longer be safe on this platform." https://dearstack.artofcode.co.uk/
A resigning LGBTQ moderator wrote of the broader situation, "[Stack Exchange draws] vocal bigots from the woodwork with prompts to discussion, and then [vanishes], forcing us to decide between tacit approval through silence or defense of our own against an unchanging torrent of bigotry." https://meta.stackexchange.com/questions/334575/dear-stack-e...
A lot of volunteers just went straight out the door.
I would bet money that if I asked any of my friends or colleagues they wouldn't know either.
There are people who spend an insane number of hours closing or editing basic "How do I do this" questions that would otherwise overwhelm the site (whether or not you agree with the standard these users set for the site is a separate discussion). When Monica got removed, the people who had made SO a significant part of their identity were understandably upset (the fact that she managed to raise >$25k to sue SO for defamation[0] should show just how upset). Why should anyone try to make the site better when SO was insulting its most helpful users and self-sabotaging?
I dramatically cut down on my time spent learning by answering questions. It's certainly a minority that did so, but I think it's a formerly-prolific minority.
[0]: https://www.theregister.com/2020/01/02/stack_overflow_settle...
I don't get why the "centering is hard" trope is still being repeated in 2021.
I'm a recent new grad front end dev and have never had issues with this.
Hasn't it been years at this point since flex-box became standard?
There is a certain type of joke where the punchline is something that was true for so long, it's acceptable to repeat it ironically as a sort of inside joke, knowing it is obviously not true any more. Best pulled off if you were actually there, of course. I think that's what's going on here.
Truly simple to me would not be CSS but rather an attribute on the element. But with CSS, the simplest thing would allow one to just put a style on the element you want to center.
The other aspect of this is that there are multiple other ways of doing it.
It does require styling the container, to specify that a new layout system (Flex or Grid) is to be used instead of the default. While it's useful to have separate properties for the two directions, you can also use a single shorthand property to set both at once:
Alternately, use only Grid on the parent and place-self on the child.Do you accept this as relevant evidence about what is standard? (Or would a different search be better?)
The first result recommends the ol' "top:50%; transform:translateY(-50%)". [1]
The second result shows the padding method, the line-height method and the translateY method again. [2]
The third result is a complete guide asking you questions three layers deep about what you want to do and gives you the personalised answer for the scenario. [3]
I gave up afterwards.
But the point is people are still learning old ways of doing it. Should they read a guide to modern CSS? Yes, but we all know searching and clicking on the first result is easier.
[1] https://www.w3schools.com/howto/howto_css_center-vertical.as...
[2] https://www.w3schools.com/css/css_align.asp
[3]: https://css-tricks.com/centering-css-complete-guide/
Personally for me it feels like the content is pretty "stale". E.g. an answer from 5 years ago that uses a deprecated feature in a library that was abandoned 3 years ago etc, a reference to something only working in Chrome v12(we are on v90 now IIRC) etc etc. It seems like a lot of what I come across on there is just so out of date that I personally do not put value on it.
As such I personally avoid it now like I used to avoid experts exchange that was the stack-overflow-before-stack-overflow.
I wonder if I am alone...?
Kind of, but not exactly.
As a given software platform evolves rarely do the defining foundations significantly change. This means there becomes many ways to solve a problem down the line, but the original few solutions typically still work and apply just the same as they did in the early days.
I cannot emphasize enough just how important that is.
The implications of grasping this allow a developer to solve almost any problem like magic. The mythical 10x developer sprinkling their pixie dust like dropping blow at a night club. That is because the developer knows the durable solutions to most problems already and optionally may consider newer approaches when beneficial. They know what works and have the freedom to deviate at their convenience.
The implications of missing this produces infantile developers dependent upon the flavor of the moment. The developer reliant upon a late stage convention or supplemental tool has less flexibility than the developer more experienced with the foundational concepts of the given platform. This is vaguely related to the Law of Leaky Abstractions[1], but that law just describes reactive scenarios.
https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...
Went with my current company mostly because they dropped his name in the job description.
(Also: Went so heavily into table tennis that it always seems to me he's holding that table tennis racket a bit awkwardly or like a hobby player in that picture. But great hobby.)