In the previous episode, I introduced Kathryn, my sockpuppet.1 In order to ask questions on Stack Overflow (and earn reputation) I needed an account. I remember a few roadblocks when I did it nearly 9 years ago, but it wouldn't be too surprising if things changed in the meantime.

Since part of my goal in the race was to try out the Documentation reputation system, figured I'd start by editing a topic. Unlike Wikipedia (or Q&A posts, for that matter), we require users to be logged in to edit Documentation. So in place of the option to submit a proposed change, I saw this:

Documentation sidebar signup page.

The first thing to note is that there's no mention of OpenID. This is kinda a big deal since OpenID was one of our key technology bets. When I registered my first account, I used Blogger as my OpenID provider. I still have that credential on the site, but I haven't used it since early in 2012. Since then, I've used Google, Facebook, Yahoo and even my Stack Exchange OpenID. We still accept OpenID, but most of our users use credentials from a tiny handful of sites. Not surprisingly, Google is a very large gorilla that supplies almost all of our users' access. It's not exactly the egalitarian, decentralized system we'd hoped for.

For the purposes of this test, I figured the path of least resistance was to create an email and password credential.2 But then I hit a little snag:

What? Is my password no good to you?

Complex password requirements have been the source of contention on meta, so I won't go into too much detail about it. I will say I used 1Password to generate my password, so it wasn't hard to generate a new one. However, I imagine a new user would be more frustrated than I was.

Once I found a working password, I got a comforting message telling me to verify my email:

No, you may not see my sock's email address. But you may guess.

This is a normal and expected step when linking an account on a website to an email address, but it really takes you out of the flow while you switch over to an email tab to find the message that looks like:

Found the email! The copy is a lie!

Again, a typical transactional email. Unfortunately, I'm not almost done. Instead of taking me back to where I was before starting on this quest, Stack Overflow dumped me into this page:

Still a lie!

Ok, this is still standard. The best time to get someone to fill in their profile is right after it's created. Changing my avatar and display name are two steps that make me look less like a throwaway account and more like a real person. I can also see the value in listing a few favorite technologies. We do use this to show you better results when browsing questions. The soft pitch for Stack Overflow Jobs isn't a bad idea here either.

But the "Where do you code?" question feels just a bit, um, prying? Different people have different levels of tolerance for this sort of thing. I tend to be really open online. (I very nearly left my personal email in this image, for instance.) But thinking about it from the perspective of a new user who just wants to help out without telling the world her life story, I'm kinda freaked out. Maybe it's just because I was worried someone would discover my sockpuppet's true identity?

Luckily, I read (and already knew) that "Info will NOT be displayed in your public profile". But it's not clear which "info" would not be displayed. Certainly the avatar and display name will. I don't think my favorite tags are, but the position and employer definitely are displayed. So the blurb must be referring to just whether the user is interested in a new job. That's important in the off chance my boss finds my profile and discovers I'm thinking about quitting. But maybe I don't want my employer to be public knowledge either?

Still, there's a notice (in small print) that "All fields are optional". So I just clicked "Create my account" and got back to what I was here for. Or, rather, not just yet:

Developer story is the final step.

I'm going to get a bit ranty here3, but I want to make clear first that there are good reasons for Stack Overflow to push people to fill in their Developer Story. I spent 15 years working for my first employer and the second half of that time wasn't particularly rewarding. There wasn't enough work to keep me busy, but I had very specialized knowledge that my employer wanted to retain. Every year I'd ask for more work in my annual review and every year I'd get broken promises in return. From talking to other developers, I don't think my experience is unusual.

Nobody wants to think about entering the job market. Odds are people who are just now signing up for a Stack Overflow account are either looking for a job or ought to be. So a little prompt to start selling yourself is not a bad idea at all. It sure doesn't hurt that it helps Stack Overflow's business while at the same time finding new talent for employers and encouraging programmers improve their careers. It's a win all around in my book.

But, this form does a rotten job of selling the concept. You might have already noticed that it asks all the same questions as the previous form with minor variations. If you were uncomfortable submitting the company you work for, I don't imagine you'll care to provide the location where you live. Only this time "All fields are required." (Unless you notice the "Dismiss" link in light gray just under the big, blue "Continue" button.) And unlike the previous form, this one defaults users to the passive candidate status without any indication of who will see that.

As an insider, I know (or at least have a good guess) why this happened. There are two separate databases we keep on users. One is for the profile other users see on the site and the other is for potential employers. The second form starts users on the path toward building their CV. The name field is asking for my legal name, location is used to help me find jobs close to me and preferred technologies need not be tags on the site at all.4 But none of this is made clear to a new user. It just feels like we are leading people on without letting them get to the task at they came for.

Worse, there's no clear reason or benefit to filling in this information. Instead of "We use your Developer Story to match you with the right jobs." (whatever that means), maybe we should tell users what benefit they might get. With just a little work on their CV now, they put themselves in a position to be contacted by potential employers later. And not contingency recruiters who are often sketchy, but actual, in-house recruiters who can make attractive offers. Not only that, but when you are ready to start looking actively, you'll have something to work with so you don't need to start from scratch.

And, I don't know, maybe apologize for how long this is taking and save some time by copying information we've already gathered?

But whatever. Kathryn isn't interested and found the "Dismiss" link. Fortunately, this was the end of the signup process. Next time, I'll finally get started writing Documentation.


  1. Ok, that sounds sorta weird and vaguely sexist when I read it back to myself. I'm not entirely sure how to phrase it better, however. I'll talk more about the name I used later in the series. For the purpose of this post, let's just focus on the process of creating a new profile.

  2. Underneath the hood, that's implemented as creating an OpenID credential on our own service. Google credentials are also OpenID under the surface. So it isn't as if we don't use the technology, we just don't make a big fuss about it anymore.

  3. I promise.

  4. Don't ask me why we ask for the status twice, however.