IamA Software Developer at Stack Overflow. AMA!
My short bio: I live on the upper east side in New York City. I grew up in the north of Israel. I also lived through the Argentine economic crisis of 1999 – 2002. Fun times.
I’ve been working at Stack Overflow for over 2 years now. You can learn more about my time there on our company blog.
If your are curious, you can find out more about me on my personal blog
Look at my twitter handle (which is @arie_speaks) on this page. See that? Okay, I’m going to tweet about this AMA in a few minutes.
What was the most surprising aspect of Stack Overflow’s backend architecture for you?
How efficiently we run our web stack for the amount of traffic we serve — ~148 million requests in 24 hours (and that’s a November of 2013 stat). Once you remove a layer of redundancy (a “backup” copy of every box and router), we only need:
2 SQL servers (SO is on one, everything else on another) 2 Web Servers 1 Redis Server 1 Tag Engine server 1 elasticsearch server 1 Load balancer 1 Network 1 ASA 1 Router
Source: I was aware of most of this, but I took this from Nick Craver’s blog.
Has the Team at StackOverflow ever seeked help from others on StackOverflow for issues on StackOverflow? If yes, did you guys consider hiring that person?
TL;DR on wokring at Stack Yes, if a candidate has a really strong Stack Overflow profile, it can definitely increase his or her chances of getting an interview at Stack Overflow. But it’s only one factor out of many.
On our developers using Stack:
The reason Stack Overflow is so great and so helpful is that the community makes it a great place to be (despite the ocassional grumpy programmer). Our developers were also users on the site since day one (naturally), so we’ve always used Stack Overflow to build Stack Overflow which is why Stack Overflow is awesome (this may feel like a tautology, but it makes sense if you think about it for a bit). I think I’ve seen screenshots where Jarrod Dixon or Geoff Douglas asked questions about .NET and C# back when Stack Overflow was still wearing diapers. (Not sure exactly what specifically it was – I would have to dig through a lot of chat history for this)
The point is that by sharing our programming knowledge with others, we avoid wasting time on quirky bugs, tech idiosyncrasies, or simply the lack of documentation and knowledge around new technologies. (Some people are naturally curious about those things, and they use Stack Overflow to explore those interests by answering other people’s questions) We have some interesting stats about how many people the community has helped on Stack Overflow.
To fully answer your working at Stack Overflow question:
A lot of reputation on Stack Overflow is a public artifact, just like an open source project or a great blog; however, it is not a sufficient condition to work here. There are other factors that come into play: 1) Is their application properly written and targeted to our company. 2) How many years of experience does she or he have? 3) Do they have a deep knowledge of certain technologies (as opposed to just a high-level understanding of a language/APIs) 4) Is the candidate passionate about programming? 5) Does the candidate get things done?
Sure, we would hire Jon Skeet if he were interested.
Where do you copy-paste your code from?
Like most developers, I copy and paste it from other parts of our internal code repository. Unlike some, I usuallycritically evaluate if the piece of code actually makes sense for what I need it and just pull the parts I need.
This is more common when I’m working on a new technology stack, since I learn best by seeing lots of examples (and most humans and computers do). It doesn’t always happen if there is a deadline I’ve imposed on myself and I just want to SHIP IT. Every situation requires a different optimization.
Oh yeah, and this little site called Stack Overflow. I hear it’s great for copying code since it’s all under the cc-wiki – with attribution required license. If you actually bother to answer people’s questions, you get points too!
What does your work life balance look like? Are you constantly around technology, playing sports,frolicking outdoors, etc.. ?
This is a GREAT question, and something we talk a lot about as employees at Stack Overflow.
TL;DR Life / Work balance (note the order) is generally good, but as you get better, you spend more time doing work that you enjoy.
I have a really, really flexible schedule, but of course your mileage depending on the season (Am I building a new proudct? Am I paying technical debt? Did I just ship a big new feature?). I used to work a steady average of 40 hours a week, but lately I’m working a little longer because I enjoy what I do so much. I also play the guitar and drums, and I’ve started taking singing lessons with Jim Fredericks.
I’m married and try to spend quite a bit of time with my wife, who also works full-time. We love to cook and do that several nights a week.
I run up the east river a lot. Exercising makes a big difference mentally and physically. This is something most productivity people (say, Tim Ferris) know and preach about, yet most people find really hard to get in the habit of.
I think the longer you do something, you learn to become more effective, productive, and leverage your time correctly. For example, I might work from home in the morning, avoid the morning rush hour of the subway/traffic, get in the office by 10am, answer some e-mails, and then really only start writing code after lunch (so around ~1PM). This works because I eliminate distractions earlier in the day, so I can really focus in the afternoon. It’s mostly about being organized and engineering your day to be effective AND efficient (these are different). All the little things make a big difference in the end, just like in programming.
If a developer relies on StackOverflow to do their job, do you think that makes them a bad developer?
Not at all. Stack Overflow is a great tool for people who are new to programming; more seasoned developers who are looking to sharpen their skills; as well as professionals looking to create an online presence. It’s just like any other learning tool — if you rely on it too much, it could become a crutch – but that’s up to you.
Most developers naturally will rely on it less and less as they become comfortable with the language/technology stack.
What’s the hardest bug you’ve had to fix? Tabs or spaces? Vi, emacs, other?
Hmmm…. I have to say I don’t have any super impressive stories like you find on the Daily WTF where some source of electromagnetic interference on a wire under a floor causes your printer to fail.
Most of my professional experience has been dealing with buggy and mediocre third-party code (much of it on iOS, a lot of it dealing with ads or some video platform). When mobile was just gaining momentum in 2010, most open source and third party libraries were pretty buggy.
Oftentimes my work involved getting around iOS quirks, usually by some magical incantation of
performSelector: before GCD).
But, since you wanted a story:
There has been one instance of a bug report where a customer was being redirected, logged out, and sent back to our login page. I spent a considerable amount of time with our sales support team trying to isolate it down to one variable (so: try a different laptop, try internet at home and a work, disable VON, new careers account…) but still haven’t found an explanation. I’m still theorizing if someone at her workplace modified something on both her work and personal laptop or if it’s some malware.
Or aliens. Probably just aliens.
Tabbbbs all the way My current favorite setup is Sublime + the Kinesis Contoured Keyboard + Sony MDR 7506 while standing and listening to classical music (or whatever I’m optimizing for — classical for concentration, EDM for getting stuff done)
Is it true StackOverflow has done this data analysis which tells approximate time in which a question will be answered correctly in any tags/category?
I haven’t heard of this, but it would be an interesting metric. If anybody would know, it would be Kevin Montrose, the lead on our Data team.
How have you moved to USA? I live in Israel also and I’m curious how you’ve done that. Could a degree help? In October I’m starting a degree in CS. Is there an importance where I learn? And could you give me some advice please about my studies/future?
I moved to the USA from Argentina because my parents were able to get an H1-B visa as ESL teachers. If you are a great software developer, have good communication skills, and a great online portfolio, most companies can sponsor you and pay your legal fees. Sometimes it’s easier when you come here for a few months or a tourist visa and network. Sometimes you can do it remotely if you know the right people and companies. Just don’t be shy, and don’t give up.
Given your Joel connection, does the development team at Stackoverflow make use of the development tools from Fog Creek software. Do you guys do code reviews and how is that process structured? Do you do it for every feature, does everyone need to review every feature?
Yes, we use Trello and FogBugz, but we experiment and try other project management and tools as we see fit. We recently began using an external ATS (applicant tracking system) when people apply to work at Stack Overflow so we can respond more quickly. (See below about this)
We are currently split into the Core (Question and Answer) team and the Stack Overflow Careers team, and, although the two teams collaborate, they run more or less in parallel. This could change in the future.
We don’t do formal code reviews – although sometimes you might get a comment in GitLab (we host our own instance) if somebody sees a problem. Millions of people use the Question and Answer (what most people know as Stack Overflow), so the community really helps by reporting bugs on http://meta.stackoverflow.com. This is why Core has a relatively low tolerance for errors, but doesn’t need a Quality assurance team.
The Stack Overflow Careers team is a bit more experimental and runs fast and loose with their products. It’s a good balance.
We also use Google docs for creating internal Request For Comments (RFC) documents that we send out to a mailing list. Then, people can pick and choose and collaborate asynchronously (anytime they want, any place)
(p.s. If you don’t get a respond immediately when you apply to work at Stack Overflow, it’s because we have a queue of several thousands applications at any given time and we only have 2 full time recruiters. We try to evaluate everyone fairly.
Is Stack Overflow a genius attempt at blackmail? E.g. a few years in the future, do you intend to paywall it, and then hold the tech world to ransom? If so, do you intend to do an IPO before this?
Interesting theory, but totally unfounded. All of our content is open-sourced, which means that, no matter the catastrophic event (like hurricane Sandy in 2008) or, no matter how bad of a change the company might undergo with its philosophy about our content (another unlikely event), some very smart person out there could decide to run their own version of Stack Overflow. And small clones do exist for this very reason.
Why is stack overflow so rude to newbies, instead of giving them advice on how to ask better questions? (Personally I’ve had huge problems getting into it)
This is an excellent question.
TL;DR: When grumpiness and hostility occur, a new member may be afraid to join and thus he or she either A)leaves and creates his or her own, new community, or B) are sadly excluded. I think we all agree that having large numbers of programmers on Stack Overflow is what makes it great (for many reasons), and, logically, we should try hard to educate and be nice to newcomers.
First, we should try to make a clear distinction here between Stack Overflow the company (SOC) and Stack Overflow the site (plain SO). At our company, we’re working really hard to make sure SO is the most welcoming, friendly place on earth, by teaching people how this very big and intense community behaves. Every new user should make an effort to read our “How do I ask a good question?” and the On-Topic page before asking a new question.
Unfortunately, working to understand our community is not as fun and interesting as just asking one’s question, so that’s this may be an explanation to the question you pose. It’s simply a matter of game theory and what’s more fun and interesting to the average Stack Overflow user.
However, that’s not the full story. In most online and real-life communities, long-time members have created a culture and a place that they love and treasure. They’ve worked hard to make it the best place to hangout, and have a pretty strict set of rules.
When a new person comes in, and isn’t as familiar with the rules, older members can either A) be friendly and try to explain to the new person how he or she should behave B) Get frustrated that this is the millionth time (true on our site) that a new person comes in and doesn’t even try a little bit to follow the rules. This frustration could lead to grumpiness, or worse, making a hostile comment to the new person, at which point that person just leaves. These are relatively well-understood phenomenons of communities (especially online ones).
Now, having read that, go back and read my TL;DR again by adding the word “Thus” to its beginning.