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.
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:
.container {
display: flex;
place-content: center;
}
Alternately, use only Grid on the parent and place-self on the child. .container {
display: grid;
}
.child {
place-self: center;
}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...
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.)
Everyone was referencing blogs and google groups (usenet before) and searches.. hitting sites like ExpertsExchange etc. What code languages/scenes were active around then too -- Ruby/Rails stuff = blogs/groups. PHP? = forums, even the comment sections of the PHP docs.
Alot of what changed gradually around then was the rise in better documentation out there. So much better/more emphasis on writing proper docs etc
I've been reading Spolsky essays for 20 years, he really is incredibly talented. So much so that even today, you can reference some of his early essays on "commoditizing your complement" in the tech industry - and there is a better than average chance that the person you are speaking to will be familiar with Joel's essay on this topic.
My primary use of Win32 APIs now is to scare people away from making anything that byzantine. If the APIs don't do the trick, I start telling back compat stories. [shudder]
Understanding why we don't have flying cars will tell you how the entire world works. It turns out that "progress" has nothing to do with "want", and more to do with need, availability, and timing.
> They lack the structure to make the data they contain readily accessed programatically, so step one is miserable screen scraping and data cleanup. That’s where a lot of people give up.
> We think we have an interesting way to fix this.
RDF? OWL? SKOS?
If I'm aware of the Semantic Web, agree with their conclusions, and wish to do so, I can make my site Semantic. That's true. And if I wanted to publish data and make sure others could access it, I would.
It's not required however. And if I want to make my data only accessible through my portal, I have a vested interest in making my site as anti-Semantic as possible. Like I don't think Multiple Listing Service (MLS) companies would ever make their sites Semantic. Nor would any company that consumes their data (like Zillow or Realtor). It's the data itself that has value, so they want to put hoops in front of it.
But it's technically publically available data that they're publishing for free. Technically, if you acquire the facts themselves, it doesn't matter how, they can't do anything to you if you redistribute that data. The only thing they can do is make their site as difficult as possible to scrape.
Then there are the sites that don't care either way and making their site Semantic is only additional work. For example: Lego's storefront. All of that information is from their databases. They already have the information and don't care whether or not someone else has access to it. The information provides little to no value. So they have no incentive to invest resources in making that data more easily available to others.
So to get the information from these sites, you have to scrape. It's unfortunate, it's miserable, but those are the facts.
Looking at Hash.ai's product roadmap, it looks like they're building a "Splunk for simulations". And probably their big value-add, besides just a flashy tool, is going to be collecting and curating data. But they probably realize how much time and money it takes to constantly curate all that data. So probably what they are doing is building the tools so that individuals can curate their own data, by using a scraping tool, a transform tool, a load tool, etc. And if they want that data to be more useful within their own ecosystem, it would make sense to make all that data semantic, so that data from one customer is composeable for another customer. The more taxonomies and semantic relationships that are built over time would just make the whole dataset more intelligent over time. Enabling customers to build graphs of graphs would turn them into the world's premier crowd-sourced and curated data warehouse, netting them a trillion dollar valuation in 10 years, without ever charging a single person for access, or paying for anything but infrastructure and a couple devs.
Or maybe it's something else, I dunno.
I've been contemplating the idea of curated data and data provenance. Some data sources are easy to use but some as mentioned need clean up and thus you run into the question of original source vs. "cleaned up".
Curated data where the original source is linked, any tools/scripts used to clean it up (harder when manual intervention is needed), are also included. Maybe even a pipeline setup where original + tools = cleaned outcome is a thought.
It's a pipe dream and many data sources are still too unstructured for such automation.
The structure is “remember our past” “we got bought” “This is actually the best thing for everyone (TM)” and ends on a “Anyways, I’m off to do something completely unrelated for completely unrelated reasons and will not have any part in that”
Reading between the lines it sounds like that “this is for the best of everyone” is a contractual requirement or half hearted at best.
The truth is you got lucky with the timing and capitalized a tech help forum.
COM is not obsolete at all, it's the main way Windows APIs have been and are provided from the release of DirectX until now, where it underlies the current WinRT API.
Is COM obsolete today? For new development, yes. But Microsoft still supports it and you can still write .net code that gets exposed as COM objects.
Where is this quote from? I haven't read this one before.
I would "sell my soul" for a measley $10 million.
Anyway, congrats to the owners and shareholders I suppose.
The net effect of stack overflow was to spam the search engines with non-answers like "you asked in the wrong forum", "you didn't ask nicely", etc.
Long ago I learned to route around it.