Stack Overflow's Utility
While writing a recent developer journal post, I realized that I started answering questions on Stack Overflow with an actual plan—unlike how I approached Quora, which was mostly just to kill time—and haven’t really bothered to try to assess that mission. So, my hope is to deal with that in this post.
As background, while I have used Stack Overflow since the beginning—like just about every other developer—I only went to the trouble of creating my Stack Overflow account in June 2014.
I signed up, because I was thinking about opening an educational institution of some sort. I don’t remember if the goal was an unaccredited graduate program to replace Polytechnic when it withdrew from Long Island, an adult education program to help people modernize their skills, a boot camp (trendier at the time), or some entirely novel system that was probably doomed to fail. Certainly, I considered all of those options, at one time or another, but my point is that answering Stack Overflow questions was originally intended as research for that project.
That is, especially for programming, I’ve always looked at education as requiring certain parts that aren’t necessarily reflected in a formal education.
- Learn the bare minimum ideas, so that you have the capacity to hold a conversation and learn more. This is the most formal part of things, at least for introductory levels. If you’re “learning Linux” or whatever, you have grossly misunderstood the definition of “minimum.”
- Learn by doing. Work on a project and pick up whatever new ideas and techniques are required to get the project out the door as the need arises. The “basics” should be just enough to help you talk about what you’re doing and ask for help.
- Teach and/or mentor others.
- Integrate into the broader community.
There are easy solutions to the first two items on that list, and I’ve talked about the basics—the same for infrastructure—and finding a project in past posts. The third can partly be handled by requiring students to literally take on teaching or administrative duties as a part of their education—which has the added benefit of making the school sustainable—but it doesn’t scale to large numbers of students, because there aren’t enough positions to fill, unless you have an exponentially increasing student body.
However, Stack Overflow serves as both a kind of education platform and a community hub. So, my thought was that this hypothetical school might require students increase their reputation points by a certain amount and earn certain badges, as a part of the educational process.
That’s where my account came in. My personal question was fairly simple: Is this worth it? Specifically, I wanted to know:
- Does answering questions on Stack Overflow actually prove anything?
- Is there any real benefit to the person answering questions, beyond feeling the usual satisfaction from any accomplishment?
- How easy is it to game the point system, assuming that a student isn’t outright cheating?
Fast-forward seven years and change to today. I’ve answered…hang on, by the time you read this, anything I typed might have changed, so let’s try Stack’s “flair generator,” instead.
Wow, that is utterly hideous. Why are the bolded characters not weighted right? Why is it a fixed size for the browser to figure out? Is it both pixelated and blurry? Why wouldn’t it just be an SVG? And there’s all that dead space in the middle. I’m so confused.
Anyway…I have over a hundred questions answered, dozens of badges, two asked questions, hundreds of cast votes, over 1,750 in reputation, and that reputation has put me shockingly close to the top-fifth of Stack Overflow users. And in all that time, what have I learned…?
Hey, What Have I Learned?
That’s an excellent question. And I’m not sure that I have good answers to that question, largely because I forgot to keep asking them fairly early on in the process.
However, I think I can assemble an approximate answer from the data and just thinking about my feelings toward the site.
Does Answering Questions Prove Anything?
Maybe it’s because I have a broader background than some people, but I don’t think that looking at my Stack Overflow profile will tell you much about how good a programmer I am or how well I’ve learned any specific material. There are many low-quality questions that don’t require much more effort than a web search or even just a Stack Overflow search for an identical question. Those questions seem rarer now, but you can see that many of my earliest answers almost follow a template.
As you can see in this answer from a few months ago, you can solve your problem by…
[Quote or paraphrase of the original answer, maybe with a summary of what needs to change for the problem.]
That’s useful to the person who asked the specific question, obviously, but I suspect the reason that those easy questions are less common is because Stack Overflow has figured out how to search itself, heading off the people who couldn’t find the existing answers on their own.
Even without those low-quality questions, though, I could plausibly rack up hundreds of points troubleshooting web server configurations, which might not illustrate any ability in tasks that I’m supposed to care about. Likewise, the lack of feedback means that I have dozens of answers on questions where nothing has received a single vote and none of the answers has been accepted, without even a comment that the person with the problem has figured anything out. So, point value doesn’t necessarily reflect effort, ability, or anything else. Or, rather, it reflects some unknown combination of those things and some combination of traits of the people who asked the questions, which confounds most easy analysis.
Are There Any Benefits?
I’m tempted to flatly say “no,” here, there is no benefit of substance to answering questions.
No colleague, recruiter, prospective employer has ever referenced my Stack Overflow profile in conversation. I’m definitely not more famous than 78% of other developers. I haven’t built any relationships, there, like I have on other networking platforms. And I don’t believe that I’ve learned anything or solidified any knowledge in the process of answering a question, like I would expect from in-person discussions.
In my website analytics, it’s currently pretty rare for someone to click the link to my Stack Overflow profile from my homepage. Even going all the way back to the start of the analytics database, Stack Overflow has only been about half as popular as the GitHub or LinkedIn link, and more than half, but still significantly less popular than Twitter . Quora and The Practical Dev are an order of magnitude less popular than any of them, for comparison. The Practical Dev is probably the most surprising, since I only joined there far more recently—March 2020—suggesting that it might be gaining popularity somewhat quickly. But my point is that it’s not common to see someone care about a Stack Overflow account, and they seem to become less common as time passes.
So, it looks like a decent Stack Overflow profile doesn’t provide any advantage. My profile doesn’t even seem to be in the first page of search results for my name, so even if your goal is to “drive traffic” to your website, there are better options.
However, despite the lack of a benefit, there’s a downside to the work, because know-it-alls will come along and try to nitpick answers, and at least in my experience, it’s rare, but it’s also rarely a legitimate complaint. Most of the people trying to pick fights over my answers have wanted to argue about terminology and don’t want to admit that jargon is specific to a group and usually diverges from terms used by everybody else. It’s not painful, but it’s an unnecessary hassle, since they invariably fly off the handle when you respond with answers like this.
While it’s definitely true that this language calls this feature X, the more common term outside that community—like in a Computer Science class or at a company where the developers work in a different language—is Y. And since the question was more likely written and is more likely to be read by someone coming from those places than someone who has read the language specification, I’ll keep the more general term.
No, they don’t like to hear that at all…
Maybe it’s just how I approach the platform, of course, but it seems like the only benefit is that you’ll probably feel good after helping someone. That’s not nothing, but it’s also exactly the same reward as posting to Twitter or picking up litter in a parking lot.
Turning the Tables
Despite the lack of utility in answering questions, there is certainly value in asking questions.
I mean, the system tries to teach you what a good question looks like. The ask a question page models a good headline/question for you. Then, it provides an outline of the list of things that a colleague is going to need to know to help you. Finally, it tries to direct you elsewhere if the question isn’t about code, and also explains tags.
Every developer—heck, every worker and every hobbyist in every field—should understand this formula inside and out. Granted, the Stack Overflow community has an unfortunate tendency to at least feel like they treat the list as more of a shibboleth to suggest that someone doesn’t deserve help than a useful tool, but “here’s what I want, what I tried, and what I saw as a result” makes it easy to see that you’re not trying to get someone else to do your work for you, while also making it easy for someone to follow—and correct—your line of thought, and give you the help that you want. That’s true whether you need help with a project or are dropping your car off with a mechanic for repairs.
Even when providing code, which is obviously specific to programming, the advice of providing a minimal example the reproduces the problem is extremely valuable, because you’ll often figure out where the problem is when the example that you think is minimal turns out to not have the same problem.
After initially posting the question, you then need to draw attention to it and engage in useful conversation clarifying yourself without frightening readers away.
However, while asking questions on Stack Overflow is almost certainly worth the effort and provides some proof of ability, it’s much more difficult to contrive a reason to ask questions. Asking for help with a problem requires having a problem to have help with. And some problems are easier to solve or more attractive to solve than others.
It doesn’t matter to me—and I assume that it won’t matter to most people—but increasing one’s reputation gives that person more access on and authority to the site, with a list of privileges earned at various reputation point thresholds.
Because of my reputation, I see less advertising, can get more details on vote counts, create semi-private chat rooms, review questions, and offer new tags. With a little more work, I’ll be able to edit other people’s answers. At the top tier, users get access to key site analytics.
So, if a person wants power in the community, or if they want Stack Overflow to be more transparent with them, that is an advantage to answering questions regularly.
Gaming the System
I don’t know whether it’s possible to manipulate the point totals to minimize the amount of work required to achieve a designated number of points is the hardest for me to answer, because I quickly stopped trying to “score points” to test the system and started just treating Stack Overflow as a place that I check in the mornings to see if there’s an interesting and unanswered question; there usually isn’t, so I move on instead of hunting for something to answer. In the early days, I wouldn’t leave the site until I had found at least one question that had no answers and was simple enough that I knew off the top of my head or could just look it up.
That said, there are obvious ways to game/cheat the system, for unethical people. Developers who are popular on social media can certainly post links to their followers—some comparable platforms, like The Practical Dev , even recommend that writers promote their posts on Twitter, Reddit, and among colleagues and communities, so I’m not suggesting this is necessarily bad, just less ethical—which will get additional up-votes. It’s riskier if it’s detected, but it would be fairly easy to organize colleagues or fellow students to all vote up each other’s questions and answers; the same is true for fake accounts with less coordination, though the risk of exposure is higher, there. It’s even possible to have someone ask a series of questions, with the intent of only accepting the student’s answers.
I want to be clear that nobody should actually do any of these things. Data analysts love to expose tricks like this, and Stack Overflow has historically been good at removing points and changing how points get counted, to head off those exposed problems and walk back the damage. If you’re caught violating the Terms of Service, they’re also well within their rights to delete your account, too, which makes for a pretty bad way to increase point totals.
However, my point is that it’s not a hard system to game, especially if you only need your high total of points to be persistent long enough to get it recorded on your (hypothetical) school transcript as successfully doing your part for the community.
Maybe an interesting point worth noting, here, since I just noticed that the Wayback Machine irregularly archives profiles. Well over a quarter of my current points were gained within the first two weeks of signing up, and I had almost half my current points within four months. The rest of the seven years have been the balance. To me, that sounds like either gaming the system or aggressive changes to my priorities.
Of course, it’s worth being clear that Stack Overflow hasn’t been only a question-and-answer site in a long time.
The next-most important aspect of the site is probably the Jobs board, which I called out recently for doing a lot of the work that changed job postings from guessing games into proposals that job-seekers can meaningfully respond to.
I have some quibbles about how the job applications work—I don’t like the fact that it remembers the last cover letter that you sent, but not all of them, for example—but getting a morning e-mail with job openings that include company names and salary ranges is useful, regardless of whether I’m actively looking for a job.
Update: As of April 2022, Stack Overflow will discontinue access to its Jobs service…or has discontinued, depending on when you read this. So, consider the service a significantly less useful part of the site.
Less important—largely because there’s no visibility into whether anybody has ever looked at it—is the user’s “Developer Story.” If you’re not familiar, here’s my page for an example. Basically, it’s an attempt to build an overlapping timeline to describe software development experience.
Again, I have complaints…many complaints.
- When dealing with Free Software projects, it only understands GitHub.
- Related, it doesn’t consider the possibility that maybe a project that hasn’t been maintained in a few years is less relevant than a product launch a few months ago. I need to specify that the project is “done,” which seems like it signals that I don’t care about it, rather than I’m just not currently working on it.
- Despite being a kind of timeline, there’s no sense of scale or length. While it has some verbiage to describe duration, everything is either a project launch or an ending, so nothing takes up space on the line. The shortest time that I ever stayed at a job looks identical to the longest time I stayed on a job, even though there’s an order of magnitude difference.
- There are only two ways to access the data, the “story” timeline and a CV.
- As I mentioned, there are no metrics available, so I haven’t the foggiest idea if anybody—prospective employer, childhood friend, recent colleague, or random stalker—has looked at it.
The last is interesting, because it’s easy to point to other networks with job boards to say “well, a person might spend a lot of time keeping their LinkedIn work history up to date, too, and it’s not entirely clear how much of that effort is rewarded.” But the real value of keeping a LinkedIn profile current, for most people, is that colleagues can find them. Listing my early jobs means that those high school interns who helped me in 1999 (or whenever they were around) and are probably now running their own multi-million dollar companies, can search the company to find me, even if they don’t quite remember my name after a couple of decades.
Stack Overflow doesn’t do that, though. There’s no spot to click on the “card” talking about my Colagioia Industries work—using my own company as an example, so that I don’t need to watch what I say—to find other Stack Overflow users who I’ve worked with, or even if I worked with anybody, in that context. If someone wants to find the brilliant developer(s) who created All Around the News, they can’t search profiles for matches, either. Because of that, it’s entirely possible that the Developer Story is just a “digital crafts” project, the equivalent of a scrapbook that I might try to show a friend, while I’m bored, over their protestations.
Because of all that, I don’t really know what the point is of the Developer Story. I like the premise enough to update mine every few months, but it’s just as possible that it’d be better kept on my local computer.
Update: As of April 2022, Stack Overflow will discontinue access to its Developer Story feature…or has discontinued, depending on when you read this.
Still Other Services
There are also Teams and Collectives, which I haven’t looked out to any degree.
I get into all of this to say that there are definitely uses to having a Stack Overflow account. However, I’m interested in the use of the central feature, whether we should recommend to developers that they volunteer some time answering questions.
Conclusions…to the Extent I Have Any
The big take-away from this (arguably botched) experiment is that Stack Overflow is not a good tool for educational purposes. Or, rather, it’s a good tool for educating yourself by getting answers to questions from people who know better than you, but it’s not a good way to test or instill acquired knowledge. It’s too opportunistic, has an inconsistent feedback mechanism, and can be subverted to (probably temporarily) make someone look more knowledgeable than they actually are.
A system like this is mediocre—at best—for enabling people to teach each other. It’s terrible for fostering community. I don’t believe that any hiring manager is going to check your profile before interviewing you.
That said, I’d still recommend that developers—especially newer developers—open an account and answer some questions. It does feel productive, and despite my nay-saying, there’s probably some small benefit to exercising knowledge that you haven’t thought about in a few (depending on how long you’ve been at this) months or years. It’ll also give you a better sense of what problems people really have when working, and (if you’re any good at answering questions) force you to polish your communication to get at underlying problems.
Credits: The header image is untitled by an uncredited photographer, made available under the terms of the Creative Commons CC0 1.0 Universal Public Domain Dedication.
By commenting, you agree to follow the blog's Code of Conduct and that your comment is released under the same license as the rest of the blog.Tags: education career