
Testing at Airbnb - hoverkraft
http://nerds.airbnb.com/testing-at-airbnb/
======
nchuhoai
Pretty interesting that according to him, Airbnb didn't really have a
functioning testing infrastructure only a year ago. So you really can hit a
billion dollars in valuation without testing :)

~~~
TheRealWatson
Despite of what developers like to think, success is not linked to technical
competence. Achieving the former allows you to address the latter.

~~~
habosa
This should be said on HN more often. No text editor, package manager, or
library is going to make you a success.

~~~
simon_renoult
I didn't know HN was about success.

~~~
habosa
You're right it's not, but we talk about it a lot.

------
seivan
Great article!

You really don't got a test culture unless you're 'allowed' to take time to
debug errors that happens inside the test suite and not the product itself.
This is the difference between writing tests and really having a TDD-culture.

I mean those issues where the test suites requires maintenance but the actual
code base or product is "working".

Everyone has had them. I guess it that's what the article means by 'great
pain'.

Recently I've heard a few non-engineers use "continuos integration" as a way
of charging clients more as use per buzz word rules.

------
timdorr
Interesting that you guys went with Solano. We used them back when they were
TDDium and found the experience to be very bad. There was notable downtime, a
poor interface, and a crappy configuration experience (getting environmental
variables into it was very annoying). We've been happily with Codeship ever
since.

What reasons did you have for choosing Solano? How has your experience been?

------
verelo
I absolutely love this writeup! Thank you!

As someone running a company with around 50 people, and a quickly growing
codebase, introducing testing as "a bar so low you can trip over it" is an
amazing way to articulate exactly how i feel about this.

For us at first we did this by introducing tests on our most complex and
commonly used code, that could be run locally. Moving onto using pull requests
and having a more robust CI setup to enable more regular deploys is currently
the task at hand.

~~~
hoverkraft
Like testing, PRs are one of those things that seems like it will slow you
down, but once you learn how to use them they can actually increase velocity
(among many other benefits). It's been awesome to watch how good people have
gotten at collaborating/communicating via PRs at Airbnb.

------
elsbree
Does anybody have recommendations for where/how to start learning best
practices for TDD?

As (nominally) top nerd at a tiny startup (2 engineers), I feel like I should
set a precedent sooner rather than later for testing. This is currently not
possible since I don't know anything about it, so any resources would be
appreciated :)

Edit: Primarily looking for resources involving Node.js and client-side
testing of a jQuery-based website.

~~~
hoka
If you're a python developer, [http://www.tdd-django-
tutorial.com/](http://www.tdd-django-tutorial.com/) is an excellent resource.

~~~
elsbree
Thanks! Our backend is built on Node, but I'll see if I can glean some general
concepts from this.

------
hiisi
Great article!

I wonder if the guys are doing code reviews for each PR along with making sure
build is green. In our team, we've been doing code reviews for about three
years now and can't imagine our workflow without them.

~~~
hoverkraft
Yes, we're absolutely doing code reviews for each PR. Should have mentioned it
in the post. Our general policy is to have engineers merge their own PRs, but
only after at least 1-2 people have reviewed them (and obviously more for
sensitive changes). The dialog that takes place in PRs helps enforce (and
sometimes define) our style standards, teach engineers the idioms of a
languages they may be new to, and ensure that we're always moving our codebase
in the right direction. (They're also a great place to teach people how to
write cleaner and less brittle tests!)

------
trekky1700
Ironically, AngelList posted a slideshow the other day about how they don't
use tests because they increase development time and make it hard to be agile.
They instead iterate quickly, pushing out new versions and fixing rapidly as
things come up.

~~~
mattspitz
If you can test everything manually with confidence that every incremental
change breaks nothing you've ever thought about prior to the present, I
suggest you work on more complicated things. Otherwise, you're mistaken.

The irony is that AngelList allegedly generates funding for real engineering
teams.

~~~
GFischer
Well, AirBnB is a good example of a startup where the real value - and
challenge - was in its novel business model, NOT in the engineering challenges
of creating their webpage - which is very nice, but they might have succeeded
with a Craigslist-like page for all I know if they solved the problem of
creating a marketplace.

So I agree with the general idea behind what AngelList is saying. If the
startup value proposition is based on solving a "hard " engineering problem,
OTOH, it's not such a good idea... but it seems that most problems startups
tackle are NOT engineering problems.

------
5vforest
Wow. I'm surprised at how big they were able to scale, while still pushing
most commits directly to master and having a test suite that took 1hr to run.

------
mherrmann
Unfortunately, I can't read this article on my phone because the layout is so
screwed up (Samsung Galaxy SII).

------
theSshow
Is pushing directly to master still not disabled to this day?

~~~
Domenic_S
How would you even disable that in github?

~~~
davis_m
It is very easy to only allow others to pull your repository. It then
functions much the same way as an open source project where pull requests are
required to get code into the main repo.

~~~
Domenic_S
Yes, but you can't restrict push access to a _branch_ ("restrict master")
unless I'm missing something?

------
mathattack
I like that the URL for this starts with nerds.airbnb.com...

~~~
mrdmnd
Collectively, we call our engineers "nerds." That's the URL for the
engineering blog.

~~~
pdxandi
Enginerds.

