The Heart of Stack Overflow's Bad Vibes

Stack Overflow recently made a series of announcements that focus on fostering a positive community, making it a safer forum for new and underrepresented developers. While I certainly support this newfound focus, I think its success will be muted unless they revisit their achievements program. They’re changing a few rules, which is great, and they are kindly suggesting that privileged users stop their bad habits. But a fundamental part of the issue is the incentive structure, which doesn’t appear to be in their plans for change. I’m not saying it’s the only thing to worry about, but I’m saying it’s a foundational detail.

The irony is some of these structures, I suspect, were built to prohibit trolling. But as it stands today, the best way to join the site anew and fully participate in the community is to troll.

Privileged Users Only

The rewards concept, originally built in 2008, means the site is only populated with “privileged users” by their own definition. Using their wording, literally if you are underprivileged, you cannot participate. In order to participate (and I define “participate” as “post things”), a new user must unlock various actions. To do so, s/he must acquire points (which to me, means wealth). Unfortunately, the most effective way to acquire points is through some dedicated trolling. In fact, in its most basic form, the default mode for fuller participation for a new person is through maneuvers that are classic troll maneuvers.

Consider the wiki. To edit the wiki on StackOverflow, you need to have 100 points accumulated. This is counter to the very definition of a wiki, which according to Merriam-Webster is “a website which allows visitors to make changes, contributions, or corrections.” I assume a “visitor” can be anyone, but in the case of the SO wiki, you need to gather points first. Ergo, visitors are not welcome to edit the wiki. Now, a new user can create wiki pages with fewer points (10). This means that if an underprivileged user wants to improve a wiki page, s/he must create a new, competing page with better content. Indeed, as a newbie who wants to update a wiki page, if you have 10 points, but not 100, your only option is to troll whoever the poor soul was that last edited that original page, with something like a page called “FooBar_Corrected”. In any wiki, this is not an acceptable maneuver, which leaves the underprivileged in a difficult position.

Other kinds of basic transactions require points, like adding comments (50), voting for an answer (15), or even creating tags (1,500). The only things a new user can do is ask and answer questions. If we want a robust and helpful community, unfortunately, a new user…

  • cannot give props to a good question (say, by voting up)
  • cannot ask a clarifying question on someone’s SO post (for example, to better understand)
  • cannot make a clarifying comment on someone’s answer (for example, to help other users better understand)
  • cannot ask questions on the meta site (for example, to say, “gosh this points system is tough!”)

Basically, new users are cut off from the usual, collaborative activities that power a site like StackOverflow. Indeed, some of the incentive structure seems driven by the need to repel trolls, but the barrier to entry for an engaged, new user, remains high.

Similar to the wiki, if you see an answer that is perhaps 98% correct, but that last 2% is important to you, your only option is to create a new, competing answer. If you do this, you’ll get slapped with an “already answered” or “duplicate answer” from a privileged user very quickly. Nevermind the fact that this is your only option as a new user.

Becoming Privileged

There is another layer to the point system here, which is bounties. If you are a more established user (75 points), you can make your own question special by placing a bounty on it. This means you award more points to the person that answers that question. In this case, if a user is lucky enough to be online when it’s asked, and is able to answer it, that person will get more points. The idea of course is that there are some questions which are hard to answer, so answering a “good” question (as defined by someone who has enough points), will be more richly rewarded. It’s meant to be an incentive. When I was complaining to a friend about how hard it is to get access to make a clarifying comment, he told me he could post a question for me with a bounty. This buddy is not a bad person, but rather someone that wants better engagement on the site. The bounty system, however—intended to reward the helpful folks—turns into a special inside track to get full site access. If you “know a guy”, then you can get in through the back door.

In regular flows, how hard is it to get points? There are various activities that allow someone to gain points, but keeping in mind that a new user only has access to ask and answer questions, we have to look at it with only that rudimentary tool. Remember this is the only entryway for someone new.

Good questions

The act of asking a question doesn’t get you points. It must be a “good” question according to their incentives. A user gets points if the question is voted up (by people that have at least 15 points) and not voted down (by folks with at least 125 points). An upvote for your question is +5. So, you must ask a question that’s good and has never been asked before. This means if you’re someone that’s getting good at java, you’re useless to this site, since so many of those questions have already been asked and the language is so popular that you’ll be racing against other users to get a good question out before someone else. Instead, you need to pick a niche technology or rev version in order to have a chance at asking a unique question.

Good answers

An answer must likewise be voted up in order to receive points (+10). Important to note, it is not appropriate to answer questions that have already been answered (you may even lose points by down votes). This makes sense because it repels trolls. However, this system turns into an even more competitive rat race. You must answer a question adequately, quickly, so that the user accepts it, votes it up (if they have enough points for that) and closes that question as answered.

As it stands, if you want to pat someone on the back, vote up a good question or answer you found, or otherwise give props to the content on the site, you will need to troll for that luxury. You must watch the questions flow in, and jump all over a question you think you can answer, then hold onto your seat thinking, “pick me! pick me!” in the hopes the person that asked the question is still online and agrees with your answer. The only way to win the battle is by dedicated significant time—time away from doing your job and acquiring skills as a full-time developer.

How Bright Is the Future?

One concrete update I saw mentioned was: “We’re planning to test a new ‘beginner’ ask page that breaks the question box into multiple fields.” So, new users will fill out a form. Just new users. In various blog posts and tweets, I’ve seen nothing about actually leveling the playing field or lowering the barrier to entry (in fact that one suggestion just puts up another barrier: underprivileged users would get their own special form). The only adjustments I have seen for the already-privileged users are: some coaching. That roughly translates to, “be nicer to those lesser than you.” I do not see any suggestions for coaching the new users, other than raising those kinds of new barriers. There is no mentor-mentee relationship planned. If you really are someone that just wants to learn and improve, you now need to fill out a form and otherwise suffer the same feedback mechanisms and -1s that are in place today. Once someone has cleared those and the training wheels come off, it’s fair to say that some of the users that are still engaged will arrive at their privilege frustrated, and ready to put the tenure system onto someone new.

Similarly with comments, the ones allowed today come from privileged users, and those comments are building a reputation for being pedantic, sarcastic, and condescending. Granted, SO is trying to tackle that through flagging and some user-driven moderation, which is great. However, without touching the incentive system, it will simply be the ruling class bickering with itself.

Like any developer that wants to touch it once, I find that I am most engaged when I’m deep in a problem. It’s at that moment where I’d love to participate, whether that’s clarifying information I see posted, actually asking a good question, etc. However, I am an unprivileged user. As an attentive lurker, I can see there are clear social norms for asking and answering questions, commenting on things, etc. But I simply don’t have access to follow those norms, and my only choice is considered either boorish or stupid (re-answering a question or re-asking with a new question). So: it’s better for me to continue lurking and focus on my job. I have little doubt that I am but one of thousands of users sitting on the outside unable to fully participate because the barrier to entry is too high. Hopefully SO can take a look at their incentive structure and realize that while the attitudes on the site are oftentimes unhelpful and unwelcoming, that behavior has been encouraged. It has been encouraged not just by the people, but by the very structure itself.

On top of all the positive messaging, to foster the kind of community that everyone wants, the awards system needs to change.

Firing someone

It’s not exactly a joyride, but if you want to manage, you have to get comfortable firing. This post isn’t about the mechanics; it’s about the mentality. How you handle it mentally can be the difference between a straightforward, successful firing, and a long, painful, and highly disruptive firing.

I’d like to illustrate with two anonymized examples: Bip and Bop. 1

Bip was the one of the first people I had to manage out. When he arrived at my company, he’d had high marks, almost as if he was going to slot in as our best engineer. He came into the company and he was…ok. And really, depending on your standards, maybe that is fine. Didn’t meet the high expectations, but he was contributing and helping the train move. Over time though, that worn gloss began to tarnish. Feedback from his teammates began telling a different story, of a person who often undercommitted, who frequently put in poor quality work.

Bip’s teammates started pulling me aside and telling me how Bip was not really helping the overall cause. In fact in some situations, they just did the work for him so they could avoid delays. Here is where I got more deeply involved, nearly micromanaging him to ensure his work was getting done. When leaning in more, even when he executed on his tasks, the quality was pretty poor, and important things were getting missed. We entered the Managing Out phase at that point. The mechanics of managing out someone depends on the company you’re working for. Regardless of the company policies, I prefer being as direct as possible (I’ve seen other managers take passive aggressive tactics and I strive for a person to leave a job with an understanding of why.)

In the end, I was somewhat methodical about it. I wanted confirmation that Bip simply wasn’t going to cut it. Firing someone is a cost–the lost productivity (however small), and the time and effort of finding a suitable replacement. But with care, the decision can be made with a clear conscience and a confidence that the team will be better off. In Bip’s case, once I was certain there was no repairing his performance, I immediately dug into getting him out of the company. This was because, in my heart, I knew this was the right thing.

Now let’s take Bop. Bop had been at the company for awhile, and I’d seen him present on a couple of things here and there. I’d been pretty pumped about what he’d presented. Things changed at my company and I ended up managing him and a few others. At the time of transfer, my immediate supervisor pointed out how bad Bop’s contributions actually were, and that he needed to be managed out. This was surprising to me because I’d seen those snazzy presentations and felt like he was making meaningful contributions. Because I trusted my supervisor, I started the process of managing out Bop.

But I’ll be honest: at first I did not do a great job. I lagged on my timing, I took it slow on gathering paperwork and getting help from HR. Correcting any personnel issue should be the first item on a manager’s list, but mentally this was the third or fourth one.

When I first started managing Bop, I didn’t believe this was the best move. However, as I started paying more attention to him, my faith began to crack. I’d come by and find him snoozing at his desk. I’d ask for things because I needed them for reporting or planning, and they would arrive late or not at all. Over time I could see: Bop was streaky. He’d pull an all-nighter and spin up something that was fascinating but it was thin, and when looking at the problems the group was trying to solve, it was tangential. He was not advancing the cause. When I gave him feedback, he promised improvement, but let me down after a few days. I also noticed his coworkers were staying later to pick up the slack, and one of them was starting to get frustrated. Morale was now starting to sag because of this employee.

It was around this time that I began to believe. Once I’d turned that corner, I put more of my heart into managing him out. It became not only easy, but it started getting done. As we communicated over the next week or two, Bop seemed to understand it, too. At least, he was in the same universe of thought: this situation was not the best thing for anyone, including him.

I’ve had to let people go, let them move on, fire them. I’m not an axe guy, but I’ve had to manage out nearly a dozen people at this point in my career. The best advice I can give: you have to believe. You have to know that this is the best move for the company. In my experience, it is often better for the employee, too.

Any firings or layoffs that you have to execute, you’ve got to take time for yourself to fully understand it, and buy into it, yourself. I realize not everyone will have the luxury to go through that exercise, but when you invest the time into really thinking it through, then getting it done becomes easier. You have to believe.

  1. Due to gender imbalance in my side of the industry, I’m purposely listing these as both male to make them feel even more anonymous. :\ 

Winter, 2001

Early 2001 was a rare time in my life where I liberally used the snooze button, and on the morning of March 9th, I reached out from my bed and tapped it a couple of times. It wouldn’t turn off. This is when I looked closer at the time and saw it was too early. I was hearing the fire alarm.

I got up to see why it was going off, and when I opened the door to the 2nd floor apartment, I saw gray smoke drifting up the stairway from Al’s apartment. I put on my otherwise unused bathrobe and my roommate Willie and I walked down to the first floor. The door to Al’s apartment was ajar, and Willie pushed it open further and questioned out his name. There was a rush of choking smoke, and we backed away and went outside. At this point, I was on the sidewalk wearing my bathrobe, a t-shirt and boxers, and my sneakers. Soon the flames began twitching out of the front door. I was now wishing I’d done more, but I had gone straight to the emergency action plan, and walked outside like a good fellow. Now I was staring at a fire that was making me technically homeless because a man had fallen asleep with a cigarette.

I am not from the Boston area. My parents are from Pennsylvania and, via schooling and the army, my family landed in West Texas where I was born. My grade school was a mile from the border, and at several different points, my family was the only white one. I was sworn at, laughed at, spit at, pantsed, had rocks thrown at me, summarily picked last for any activity, and otherwise alienated or taunted by schoolmates and even complete strangers passing by during recess. My only defense was to pretend it didn’t bother me.

When I moved to Boston, I was not welcome here, either. At least, that’s how it felt until the apartment fire. If I was in the wrong part of town I was called scum by strangers, and I found unbreakable circles of friendship all around me. My build was strange to my work colleagues, constantly pointing out how skinny I was, and when they got an idea of my political leanings, a superior started calling me professor in an uncomplimentary way. It was hard, but I did manage to find some friends who were likewise from out of state. The feeling of being an outsider however, seemed unpenetrable.

I did not have a cellphone in March 2001, and our next door neighbors let us into their house as we watched the firemen arrive and push their way into the entrance with a blowing hose. I used the neighbors’ phone to call work, where I left a message explaining that I wouldn’t get into the office because the house where I lived was on fire. I saw the paramedics pull out Al on a stretcher, somehow performing CPR while the cot was in motion. Later that night I would access the voicemail we had associated with our landline, and I would hear the guys from my office laughing, chanting “the roof is on fire,” and asking me to produce the body to prove my excuse.

After the amublance left, we went back outside, still in our robes. Cars slowed down to stare, and a newscaster came up to me and pointed out the man Al had died, and did I know him.

Soon after, still standing outside in my sockless sneakers while a light snow began to fall, a woman in her forties walked up to me, unwound her scarf and gave it to me, saying I needed it more than she did. I never saw her again. We headed over to the Rosebud nearby, laughing-crying over our newfound lot. We had no wallets or credit cards, and the diner gave us the meal for free, turning off the local news on our behalf. Later, we would get a pair of sweats from the Red Cross, along with food vouchers that were only valid at the local grocery store chains. My friend Michael put me up at his apartment, where I slept on his floor for several weeks until I could find more permanent housing.

We gained entrance back into the building after the fire inspector had done his work. Everything was wet and blackened. A painting I had bought on a solo trip to a beach in Maine was still on the wall, but only the frame remained. My work badge was on the table face down, melted. My room had not been on fire, but most of my belongings were ruined by smoke damage. We stood inside the charred apartment with three other people: an insurance adjuster for our landlord, someone that wanted to represent us in court, and a man who specialized in cleaning damaged clothing. This man offered to save what he could for free, and we were able to produce two bags of clothing that had a chance. Two weeks later, there was only one thing left from my childhood: a blanket from Mexico. My roommate and I insisted on paying something, and the man told us “just get me some nice Scotch.”

I returned to work a couple of days after the fire, wearing borrowed clothes from my friend, and I shared the melted badge. After leaving the voicemail message, they had seen the news, and realized that my call had been serious. They were sober and thoughtful, and the following Friday my immediate supervisor produced an envelope flush with cash and personal checks. I could see that many of them were significant dents into personal budgets, including from people I barely knew and even their parents. I did not have insurance simply because I had never heard of tenant’s insurance, and it was this bundle that allowed me to get some clothes along with a dresser and mattress for the floor. The fire erased much of my past, but I discovered that mythic New English resilience and the kindness that’s tucked inside scarves and winter hats.

I was born outside of New England entirely, raised outside of the state, and I did not know how to get to Hough’s Neck or even Malden without buying a thick road atlas of all the state towns. Being “from New England” is a very high standard, one that perhaps my children will meet. After the fire however, I stopped feeling unwelcome; I even felt accepted. Maybe that’s too simple a statement, but it’s something that many folks take for granted. I do not.

The Truth about Hackathons

Unlike leaking gas or a hand twisting a doorknob, one of the most threatening objects we see in movies is the mirror. The way it reveals information to the viewer, when harnessed properly, can carve deeply into our minds. It’s not necessarily the imagery that remains, but the notion that can strike the heart. A keen example of this is in 1984’s Neverending Story, when our hero confronts himself in a mirror. Another character comments, “Kind people find that they are cruel, brave men discover that they are really cowards. Confronted with their true selves most men run away screaming.”1

This is how I see hackathons.

Atreu seeing his reflection in the Mirror Gate

I believe hackathons are outlets for the deepest desires of the participants. I honestly enjoy reading about proposed projects more than I do seeing the demos. I love to participate of course, but that’s only because I have desires that I keep bottled, myself.

A hackathon is the ultimate risk/reward, or perhaps the ultimate proof-of-concept. It’s meant to be throwaway work. The byproduct is not supposed to be something that is shipping to production; it is enlightenment.

In his analysis of hackathons put together through a wing of the National Science Foundation, Arlin Stoltzfus, summarizes hackathons the best2:

Typically, when the hackathon ends, and team members disperse and return to their day jobs, the team’s code repository and other tangible outcomes become inactive: no further work is done and there is apparently no direct productive use of the hackathon products.

In terms of tangible outcomes and their impacts, the value of hackathons lies in the exceptions to this general rule.

He points out though, how much value is obtained from the intangibles:

[T]he direct impact of tangible outcomes does not tell the entire story…[T]angible outcomes may have intangible impacts…Hackathons often provided a venue for participants to take risks, foregoing ordinary demands of productivity to experiment with a new approach that might not pay off.

In other words, the true power of hackathons is in the intangibles. The greatest intangible, to me, is The Truth. That truth will be different depending on who is looking in the mirror.

The Truth

Let me put it to you this way. In the past several years, I’ve participated in many hackathons, and have seen patterns that point to the inner-most desires in the given organization.

One company’s most successful array of projects was upgrading a framework version. Think about this. When they were given the freedom to do whatever they wanted, they upgraded a framework. There was something telling about this. In some ways it was television-poetic, how the band of engineers from different teams came together for this upgrade. This hackathon project actually conjured itself multiple times over a year’s worth of hackathons. Each time, a new team got code merged that set the stage for the next hackathon where the work could continue. The implications though are fascinating. Was this simply the one item that was just off of the backlog? Or perhaps there was a disconnect between organization sleeves? Whatever the cause, this is the thing that engineers were spending their time between tasks thinking about.

Other examples:

  • I was in a hackathon that featured 4 projects tackling the same problem of system writes on centralized configuration. It had spawned numerous bugs and was a hassle to work with as an engineer. That hackathon was an obvious statement on the breadth of this problem.
  • Once I saw a plethora of hackathon “ideas” which were already bugs in JIRA. They were customer-facing, were small, and had been open for a long time. To me, this meant that the customer-facing teams were hearing streams of complaints from users, and somewhere between hearing the complaints and fixing the problem, priorities got messed up, ownership got lost, process didn’t do its job.
  • Yet another hackathon series I participated in, kept asking for front-end engineers. “We’d love some help from a FED!” was almost a mantra. This was at a community hackathon, whose engineers vary from week to week, but the theme of needing FED developers was consistent. Perhaps they needed to draw more front-end developers, or perhaps the originators of these applications should have chosen a framework they were more comfortable with.

Indeed to me, hackathons are special times. Maybe this is a strange comparison, but as a descendent in a line of alcoholics, I’ve attended some AA meetings, and they are special in a similar way. When an average-looking person in an average-looking outfit stands up and tells you extraordinary things about him or herself, unleashing tempests of regret, fear, anger, and on, I not only learn about the person, but I learn about myself. In both of these forums, safety wraps around the participants, who can openly cry out because they will be heard without being judged.

Hackathons, to me, are best when we listen.

1.: Quotation and photograph ultimately are the property of Warner Brothers and Neue Constantin Film, 1984. Hat-tip to Finding Faeries for a great pic that is well-optimized for the web.

2.: “Community and code: Lessons from NESCent hackathons” by Arlin Stoltzfus Google Doc. Grabbed from Hackathon Workshop

Commuter Rail Parking in Acton

Although the data can be found, I couldn’t find all the info on parking for the South Acton Commuter Rail in one consumable place. I’m attempting to solve that problem with this post.

Summary: It’s complicated.

Overview

The South Acton Station in the Boston-area commuter train system (MBTA’s Commuter Rail) essentially travels down the Route 2 corridor into Boston. Acton is about 25 miles outside of the city.

–> Brief aside: Here’s what the commute looks like by car: If I leave in the morning before 6 a.m., I can get there in roughly 40 minutes. During rush hour, it varies widely, between 1 hour and 1.5 hours. After work is about the same, with at least 30 minutes of that just getting through Cambridge.

For this post, we’re taking the train. Before we even hop on the train, we need to park somewhere. This post is dedicated to that: logistics for parking for South Acton Commuter Rail lot.

Here’s the deal

There are 7 parking lots that I’m aware of. There are 3 permits & there are also meters. Annual cost for permits varies from $50 to $200. (Quizzically, it gets more expensive the farther away you park.)

Systems

There are 3 parking systems.

  • Resident permits: You can pick these up at Town Hall. As-of this writing, the cost is $50 per year. More details on the town website. Stating the obvious: it’s for Acton residents only. More info on the Town Website

  • Reserved spaces: This is a special system for one particular lot. You can pick these up at Town Hall and as-of this writing, the cost is $100/month. Also residents-only. More info also on the Town Website

  • MinuteVan parking: You need a permit for these spots, and you can get them via mail or from Town Hall. Your permit can be daily, monthly, or annual. Anyone can get a permit. More info at MinuteVan

Lot Location (Description) System Quick Summary
1 At station Resident permit or meters for non-residents Fills up quickly pssssh
2 At station, down a side street Resident permit Doesn’t fill as quickly, but hard to know if there’s a space until you’ve really invested in getting there
3 Across from Exchange Hall. 5 min walk Resident permit Small, not as close. Timeconsuming to turn around if it doesn’t work out
4 Next to Jones Field. 8 min walk Reserved space It’ll cost you but it’s solid.
5 At South Acton Fire Station. 8 min walk. Resident permit Typically the last resort for residents.
6 At Mt Calvary Church. 10-15-min shuttle ride. MinuteVan permit Reliable, far.
7 At West Acton Fire Station. 10-15-min shuttle ride. MinuteVan permit Reliable, far.

A map to test your strength

This map is taken from the Acton map of public parcels.

Map pointing to all the parking lots

Even more verbage if you want it

Parking lot 1 is at the station itself. “The main lot.” As I write this post, that generally fills up by 6:45 a.m., with folks waiting around for approx 25 minutes for a train. It really is the best lot though. When you get off the train, it’s a short walk. (For some people, it’s literally a run because getting out of the lot can get heavy with traffic so they sprint to their cars to get ahead. Don’t judge!)

Parking lot 2 is also at the station, but its access point is different. This is called the Railroad Street lot and you get it via a small road at a nearby light. I’m not sure how quickly this one fills up. Because of its location and the light, it’s a high investment just to see if there’s an open space. This lot is only for cars with resident permits.

Parking lot 3 is about a 5 minute walk. Assuming that you park your car and intend to go inbound, you have to either cross a street with somewhat heavy traffic, or you go under a bridge and take a long walk all the way to the back of one platform, cross over, then walk back on the inbound platform. This lot is also only for resident permits.

Parking lot 4 is reserved spaces only. I believe you have to be a resident to buy a permit. Permits at this lot cost $100/month and it is an actual reserved spot. That space is yours. The signage is very unclear though. I parked in a space here once because I thought my resident permit counted, based on my read of the signs. Instead I found out that someone threw a big fit and I got towed. So sorry, lady! I had no idea! So, this is the risk profile: you will pretty much have a guaranteed spot but occasionally some dufus like me will unwittingly take your space. At that point you can do various things, including taking a spot built just for this situation, calling the police and waiting for a tow, etc. This is one of those things where if it goes wrong, it’s rough, but it’s almost always right and very smooth. It’s about an 8 minute walk which is not well paved.

Parking lot 5 is at the South Acton Fire Station. It’s about an 8 minute walk, is for residents only, and comes with the same street-crossing caveats as Parking lot 3. This is the last bastion of resident parking spots. If this one’s full (and yes, this does happen), then you have to drive to one of the MinuteVan lots, and–SLAP–you need to be at those lots early enough to catch the van (typically 15 mins before the train departs). This lot fills at approximately 7:20 a.m. as-of this writing. Please see the site for more information.

Parking lot 6 is at the Mt Calvary Church, which is roughly 1.5 miles from the rail station. This is a MinuteVan lot. Note: The resident permit will not work here. You need another permit for this lot. The good news though, is that you can buy a one-day pass. You can also buy monthly and annual passes.

Parking lot 7 is at West Acton’s fire station, which is roughly 2 miles from the rail station. It is also a MinuteVan lot which means everything I said above in lot 6.