Two Week Code Pushes: Fast or Slow?

I just finished reading a TechCrunch interview with Andrew Anker of Six Apart about their excellent new service, Vox. It’s a nicely conducted interview about a well-designed product that I think will be very successful, but this line struck me as a bit odd:

“Very early on in Vox’s development, we created a two week rapid iteration cycle where we made sure to push code religiously every two weeks. By doing that, we made sure that we were building a design cycle that was always two weeks away from fixing any problem.”

Do bi-weekly code pushes qualify as “rapid” these days? Even at Disney, we generally didn’t take much longer than that, and at Newsvine we push every single day. Multiple times even. We like the rapid pushes so much, in fact, that we even set up a machine to triumphantly speak out the filepath whenever someone pushes out code: click for a sample.

Maybe it’s because I’m impatient about site improvement and problem solving, but Andrew’s statement — if it were applied to me — would advocate a deliberate slowing down of the push cycle (perhaps for the better).

Does anyone else agree? With web technologies the way they are today, do you consider religious code pushes every two weeks a fast thing or a slow thing? Are scheduled infrequent pushes (meaning, much less than once a day) preferable to your development habits?

Like this entry? You probably shouldn't follow me on Twitter here. I recommend the RSS feed instead.

37 Responses:

  1. Seems slow-ish to me. At World Online, our programmers push code when there’s code ready to be pushed — which is usually several times per day, and several times per week at the very slowest.

  2. Adam Hopkins says:

    Almost sounds like Microsoft and their Patch Tuesday. Its not the first time I have heard Six Apart being compared to Microsoft.

  3. Joshua says:

    I’d consider it fast. Sure, in the realm of personal blogging sites it might be a bit slow, or companies run by people such as yourself, it might be a bit slow. But I’m very used to seeing websites retain bugs for months, let alone weeks. This is especially visible with large sites and ones that aren’t tech related.

  4. Myles says:

    Flickr, for one, pushes code multiple times per day.

  5. I guess I’m still stuck in the software mindset – monthly sprints at best. So, pushing new code live every day, let alone every 2 weeks, seems a little over the top. Why not build it up a bit and release in bigger chunks? What’s the rush all about, unless something is urgent?

  6. I think it used to be considered fast, but in today’s age I’d have to consider 2 weeks to be “slow-ish” as Jeff said.

  7. Waiting two weeks to publish code seems like an eternity.

    Granted, there might be performance/load reasons for updating code infrequently. But if that’s not an issue, my personal preference is to update code as soon as it’s tested and ready to go.

    To me, something doesn’t feel “done” until it’s actually live on the site, and I like to have things done as soon as possible so I can move onto the next task. The fewer outstanding tasks to juggle in the brain, the better.

  8. sean coon says:

    at datek, we pushed code whenever necessary. when ameritrade swallowed us, they instituted a monthly push with a two-week “maintenance” release — supposedly to help the QA process.

    i guess it was a different beast, being that we were dealing with authenticated accounts and people’s money. then again, the Tech group didn’t bend to get non-secure stuff out. it actually made a lot of us get gray hair — too much pressure, ’cause if we missed the push, we’d be waiting at least two more weeks.

  9. kareem says:

    at espn.com there were pushes by multiple people multiple times a day… it was chaos, but things seemed to work out, and the site is clearly a living, breathing thing.

    at foxsports.com, we pushed once every week or two, which killed me. if you’re building social software, i think it’s important for the the users to know that the software is dynamic and growing, like the community. if broken things stay broken for too long, and enhancements aren’t make quickly enough, i wonder why i should care about the system / community when it’s clear that the developers aren’t as passionate about it as they should be.

    kareem

  10. Fox Lang says:

    We should push every hour. We try to push things every hour, even if there isn’t any code to push, we will write some and push it anyway. It works, trust me, I used to use ‘the google’

  11. Todd Huss says:

    I think two week time boxed releases are just right for us but in my experience the “right” frequency is highly dependant on the company and domain.

    We used to push code live as soon as it was ready which was a good thing early on but as our code base and team grew we realized we weren’t embracing refactoring and our code base was stagnating because it always had to be in a highly “stable” state so projects could be moved live at any moment.

    Moving to 2 week release cycles turned out to be the right balance of encouraging refactoring (which inevitably brings a system into a less stable state even with high test coverage) while at the same time keeping the amount of change per release at a very manageable level.

    To me the bottom line is that the release frequency is highly dependant on the company and the domain. While an early phase Web startup should be pushing changes very often, an online web brokerage most certainly should not. Once a company has more than 2 developers it’s my opinion that priority driven time boxed release cycles work best which I’ve written about here:

    Time boxed versus Feature boxed release cycles

    and the discussion that ensued on the server-side is here:

    http://www.theserverside.com/news/thread.tss?thread_id=38287

  12. For where I work, it’s always been “it goes live when it’s done”. We’ve been burned on missing QA before, and so we’re a little more cautious. That isn’t to say we don’t push a lot though. There’s something going out every day except Friday, which is for emergencies only.

    In response to your “annoucement system” Mike, over here releases get “theme songs” which echo throughout the office. I believe our invitation system was given Airwolf.

  13. james says:

    It all depends on how big the client is and how much sign off’s we require. Sure the dev fix may be on avg 1-4hrs to fix a bug but then it has to be tested on staging servers… and then client sign of and go thorugh client managers etc etc.. So for a payment gateway bug perhaps as low as a day, for a trivial issue, 2-4 weeks depending on workload.

  14. Steve says:

    As always, it depends on the domain and the scope of the change. For our flagship application, we are publishing content every work-day, for several months of the year, with seasonal slowdowns to 30hr/wk, maybe. Publishing content is easy.

    On the other hand, the application platform (and therefore the code base) is very “mature” (read: several million lines of code, much of it more than 5 years old), the client is very concerned with quality of releases, and we have developers working across three countries, for about a half-dozen companies, committing to the head development branch.

    QA for platform releases is non-trivial. Rapid-response issues are often posted the next-day, but those are not where most work occurs. Our ideal incremental versioned release cycle was suppposed to be three weeks, last I heard. Reality is that the client dictates the schedule completely. What are ya gonna do? :)

    Now for our other, smaller projects, say the stuff I lead, we operate without branches in the code, and rely on continuous-integration tools to help us enforce a policy of always being stable for a release, and we set milestones to meet the needs of the client.

  15. Adam says:

    we sometimes do daily pushes but try to restrain prod to once or twice a week only for QA (not just web work). The two week release cycle is actually what my shop in a larger mothership is moving towards, but 2 weeks for new feature dev, 2 weeks qa, 2 weeks design, etc.

  16. This question completely depends on the content and application that will be pushed. I work for a company who creates very sophisticated web applications that are used by very non-technical individuals. Bug fixes get pushed immediately, features get rolled out over a longer period of time to allow for a user to prepare him/herself for the change.

  17. Tough call on this one without knowing the specifics, Mike.

    As a developer: Two weeks is slow. Again, it depends on dependencies etc., but my feeling is: slow.

    As a user: Changing my application too often makes it seem either buggy or unstable. I’ll wonder why so many changes, and at some point wish it could just be left alone, I think.

    Personally: We released two changes last week to our CMS, which ~40 people use at one company to manage ~80 websites. The changes were announced via an e-mail and a modal window, but I still received bug reports about the changes in the interface.

    So as usual, this depends on the project.

  18. People can’t seem to agree what “code” means. I find it hard to believe that a web company does not push code out to the live site EVERY DAY. But a lot of that is background code to keep the site running smoothly.

    Pushing out a client facing Feature every 2 weeks is a different story. And even if you are pushing out a feature you could be doing it in small steps. Adding functionality as the feature turns out to be more popular.

    In general I think when some people say “code” they mean little code fixes and when other people say code they mean “features”.

  19. Markus says:

    seems like a rather arbitrary goal. why not push code when it’s ready?

  20. Albeit, I feel that code-pushing is heavily dependent on what the application/site/project at hand is… I would have to say that once every two weeks for an up-and-coming deal such as Vox, leans towards the slower side.

  21. Troy Thompson says:

    Pushing out code every two weeks seems like an eternity, given the immediacy of the web. Sounds like what happens when companies move from a “small startup” to the “big corporation” mentality. Maybe it’s a side-effect of trying to appeal to corporate customers- “Hey, you can trust us, we move just as slow as you do.”

    I’m working on a project for a large wireless carrier, and their idea of innovating is creating a separate area of one building which has funky chairs and cubicles, with lots of open spaces for collaboration. Problem is, everyone is still bound by big corporation policies- limited internet access, limited user profiles, must use Windows…, etc.

    A “rapid” two-week code cycle is just par for the corporate course.

  22. I just finished a contract at a recipe site with a *lot* of users and a dev team of ~8 people. They pushed once a week for non-emergency stuff, and as needed for high priority stuff.

  23. Alvin says:

    :Mike Papageorge – amen.

    I think most of the commenters here probably confuse about ‘design codes’ and ‘maintenance / new features codes’.

    Design codes are written at the early phase of a product development. It involves a certain number of iterations, from schema design, UML mapping and writting constructors and classes for the base frameworks to building a frontend engine. Sometimes regression testing might also be carried out at such early stage. So as the quote says ‘Very early on in Vox’s development…’, i think that makes much sense.

    Mostly after releasing the product to beta testers, that’s when you will likely to see a more frequent codes pushing practice. Bugs fixing codes obviously have to be pushed out right away. New features, if they dont require any rewrites or changing the core frameworks (this can be avoided by having a robust, well-designed ‘design codes’), can also be pushed out daily.

    But i wont be suprise if there are companies out there that actually push ‘design codes’ out every hours. But in general, I would think it’s more of a team preference than being caused by any sort of technical limitations and whatnots.

  24. Su says:

    One factor to consider, for those who may be speaking without actually being a user of Vox is that their updates have pretty frequently involved not just new features but changes to existing features, and even rearranging the interface. Doing that too frequently is definitely just going to confuse people, as Mike P. mentioned above.

  25. Ty Hatch says:

    Where I’m at now, two weeks is a lightining quick respone, considering that even a small change needs to go through a monolithic approval process with consensus from all 5200 people on the committee, before it’s sent over to branding for review. Then IT needs to approve it and post it…

    (Okay, so it’s a bit of an overstatement, but we’re still not adjusted to rapidly doing anything when it comes to online stuff… Part of it’s lack of understanding interactive, in general, and fear of the unknown. At least in my division.)

  26. John A. Davis says:

    Push? What does this word mean? I update my pages where they sit on the web server. The only thing I do is “Pull” stuff over for a backup copy.

    :)

  27. Large web sites are developed on a Development Server and then the files are pushed over to the live site. We use subversion to accomplish this.

  28. krystyn says:

    At a previous job, I posted to a test server all day and pushed live once a day. I can’t imagine dragging that out to two weeks, especially if you have multiple developers as I’m sure Six Apart does. They must have an excellent testing and tracking system — I can’t imagine going over 14 days worth of work to fix any issues that arose when something went live. I would just cry.

  29. Bramus! says:

    Heh, here at work we push code whenever there’s code that needs to be pushed; yet we do set deadlines for pushing it, or wait on pushing some (not so important) code when we’re prepping out some more new code.

    Love the idea of having your machine speak whenever someone pushes code on it. Love the “thanks [user name]” even more :P

  30. I think 2 weeks is a bit slow when its a full time gig and you’ve got a team to work on it. My business partner and I are building a web app using 2-week iterations right now, but we’re in college and have little free time to build the thing.

  31. I’d call it moderately fast in the world of web development. A lot of institutional and smaller storefront apps don’t get updated for months at a time, so while not the fastest a two-week cycle is still fast.

  32. Anil says:

    I’m a bit charmed by all the backseat driving on what’s essentially a dissection of one or two sentences out of what was probably an hour-long conversation. So, is a two week schedule slow (as some have said above) or fast (as others have said above)? Probably both.

    Some constraints that might help people judge the release schedule more effectively:

    1. Vox integrates content or services from partners in many different companies, including Google (YouTube), Yahoo (Flickr), Amazon (for books, music, and movies), Viacom (iFilm), iStockPhoto, PhotoBucket and several others. That means testing and feature upgrades a number of accommodations to make.
    2. Vox is deployed in a number of different languages, including localizations for our initial featured launches in the U.S., Japan, and France. The user interface thus has to be translated and tested in each environment. A happy side-effect of this constraint is that you can win a trip to San Francisco, Tokyo, and Paris when you sign up. :)
    3. The Vox pushes Andrew is describing are major feature upgrades. There are of course smaller iterative updates when necessary, but rhythm and discipline are a great way to move towards major milestones.
    4. There’s no really polite way to put this, but we get more traffic than you. And every page on Vox is dynamic, being generated on the fly with every image, video, and web page being checked against a permissions list. That’s a whole different set of scaling concerns that need to be tested.
    5. Our users are (frequently) normal people. They’re not downloading nightly builds of Firefox, and they get worried when a link “goes away”. (Even if it only moved a few pixels.) This is a space for sharing with friends and family — if my chairs in my living room got rearranged every 3 hours, I’d get stressed, too.
    6. There’s more than one way to be fast. Business users of blogs are happy that Movable Type doesn’t do major updates more than every 6 months. Geeks like downloading nightly builds. This is a compromise somewhere in between; That seems fair to me.
    7. Vox pushes include documentation, support, public APIs and updates for partners. There are already a substantial number of third parties depending on the platform for their own applications, as well as our own services. We like to spend some time on being a good neighbor.

    I can (and have!) go on ad nauseum, but to those who are interested in this admittedly compelling topic, it’s always handy to have more information. And one last bit of love for Adam:

    “Its not the first time I have heard Six Apart being compared to Microsoft.”

    Is that in the “has millions of users” sense, or in the “is trying to make a real business that gets people to use new technologies” sense? :) Because surely contributing huge amounts of open source code, engaging in honest conversations with people all over the blogosphere, and having a sense of humor about ourselves aren’t usually traits I’ve seen ascribed to the good people at MS.

  33. Thanks for sharing Anil, it’s always nice to hear a bit about the behind the doors of a web-app… I was wondering if documentation and language issues were part of the reason for two weeks. Building a multi-language app can be orders of magnitude harder then a single language version…

  34. Mike D. says:

    Anil: Thanks for chiming in. I’m interested in it from a “rhythm” perspective rather than a speed perspective. Certainly didn’t mean to imply that two-week code pushes are a *bad* thing… rather just not something I would consider particularly “rapid” when it comes to code rolling. But, to your statement, you said that code is actually rolled a lot more frequently than every two weeks so I guess that renders my ponderings with relation to Vox moot.

    The root of my question is this: for whatever project someone is working on, is it generally a positive or a negative to use discrete time intervals for code pushes? Some people apparently think it’s good and some people would rather just push code whenever it’s ready. We’re just too impatient to wait and I think a lot of others are as well, but that doesn’t mean it’s right.

  35. Two weeks in a large company as SixApart is rather amazing. I work in a company with 150 people, and on my project there are something like 60: database, middleware, front-end, QA, deployment – if we manage to achieve two weeks = good days.
    Quick pushes like you mention are possible in smaller teams. I can’t possibly imagine daily *stable* pushes in any project involving 10+ people.

  36. Alistair says:

    I would say that the speed of deployment has to be based on what you are deploying. As an example, you couldn’t push an interrnet banking application often as it requires downtime to do so. If you’re pushing a site which doesn’t have a lot of user post data, then pushing more frequently would be more acceptable.

    The other thing I think plays or should play, a huge role in release cycles is your testing setup. For instance if you’re deploying a legacy application which sprawling code, then publishing regularly is going to burn you sooner rather than later. If on the other hand you have a well designed application with unit testing at each layer and good code coverage; then by all means release frequently.

    Al.

  37. beef says:

    I think it’s about average. Best to push small changes often than huge chunks at once. Where I work now the words agile and the like are akin to ‘cowboy programming’.

    Saving up all your changes and pushing every 6 months is a huge undertaking and a recipie for disaster. Trust me, they do it where I work now.

    I’ve got to find a new job.

    Beef

Leave a Reply

Shared

Hundreds of headlines wash over us every day. And part of why many of us engage in this flow is because we have faith that over time, this torrent of episodic knowledge is going to cohere into something more significant: a framework for genuinely understanding an issue. And we live with it ’cause it sort of works. Eventually you hear enough buzzwords like “single-payer” and “public option” and you start to feel like you can play along.

But mounting evidence indicates that this approach to information is actually totally debilitating. Faced with a flood of headlines on an ever-increasing variety of topics, we shut off. We turn to news that doesn’t require much understanding – crime, traffic, weather – or we turn off the news altogether.

- Matt Thompson on why the way we report and consume news is precisely wrong. Matt is, of course, precisely right. If you’re at SXSW next week, I don’t know how you could justify missing this talk.

Cameron’s Colosseo letterpress poster is now available: The only question is, black or white? The black is oh so tempting!

Jon Stewart Skewers Media’s Obsession with Chat Roulette: Funniest Wii Craps reference ever, as well. It’s really interesting to me that Chat Roulette is getting this much “attention” when TinyChat has been around so much longer, essentially does the same thing and more, and is much more useful to the average person. Just goes to show how viral public sex acts can be.

"Add features and customers forever and rake in the dough.":

The 2005 email that spawned Picnik, Google’s latest buy. If you’re thinking about launching a startup, you should study this e-mail carefully. It’s a perfect example of exactly how a crazy little thought becomes a big idea, and even on its own, it’s better than most “official company business plans” people present to VCs.  I gave a talk at Webstock in New Zealand a couple of weeks ago about creating a startup and I wish I had this to dissect at the time. Really good stuff.

Tumblr Finally Rolls Out Comments. Sort Of. Trolls Not Welcome. :

I actually really like how clubby it is.  Unfortunately it means I won’t be commenting on any Tumblrs since I don’t officially “follow” anyone besides via RSS, but that’s probably ok. Maybe the answer to the world’s wide-open commenting problem is something like this.

Episode 2 of Dan Benjamin's "The Conversation" is Live:

I was a guest on Dan Benjamin’s new weekly radio show last week, along with Merlin Mann, Christina Warren, Adam Keys, and Dave Nanian. Subjects discussed include Newsvine, keeping your own identity after becoming part of a big company, and the RADICAL concept of only publishing stuff to your readers and followers that is actually true.

LESS - Leaner CSS:

Given that pre-compiling CSS is an official “best practice” these days, why not use that compile step to extend CSS in powerful ways? LESS lets you use variables, nested rules, and other niceties at author-time to clean up your rules and keep everything tidy. I believe The Wolf made something like this a few years ago, but I haven’t heard about it since.

How 3D works, and why it's back:

Great article on the ins and outs of three dimensional imagery. Still doesn’t change my opinion that well-shot conventional cinematography is more impressive than the novelty that is Avatar.

The Importance of Removing Features:

This is one of the most useful articles I’ve read in a long time. As we work on focusing, strengthening, and simplifying Newsvine, the concepts discussed by Lukas ring true. “Saying no” has never been a strong suit of mine. It’s very helpful to remember how important of a quality it is. (via fullstopinteractive)

Newly released video of the space shuttle Challenger disaster: It was 24 years ago, I was in 5th grade, but I remember it like it was yesterday. School was stopped immediately and they wheeled out televisions in every classroom for us to watch the news footage. It’s great that this video has been released, but holy crap, how do you tuck something that away for two decades???

A nicely done british parody of 60 Minutes style video journalism. It’s easy to miss how formulaic our news is sometimes. (via B-Tizzle, originally via E-Chizzle)

Colosseo: This is why Cameron is a king and we are all just pawns in his world. I can’t wait to get my hands on this poster. I will point out, however, that the outro credits on the video need some kerning. Someone is going to lose their right hand for that.

Spezify:

New ways of searching are almost never as useful as old ways of searching. Spezify is pretty awesome though. It’s a visually interesting, never-ending, horizontally and vertically scrollable, topic explorer. I don’t think I’d use it for digging deep on anything, but to get a quick visually rich sampling of a topic, it’s quite fun (via tiff, a long time ago actually, over email).

Realism in UI Design:

Reminds me of my favorite logo design advice: “Never waste a stroke”. (via gruber)

Overshared
At the first Doughty show of the night at the Triple Door. If you're in Seattle you should come down for the 2nd at 10. Excellent!
This Kindle ad is cute and Applelike but misses the mark. Advertise what you do well: price and battery life http://bit.ly/cFBw70
@codinghorror Aliased Monaco 9 should be in the Smithsonian.
Why does the media continue to cover what Rob Glaser thinks about the future?
@Trenti Ummm, the Timex Sinclair came out after the VIC-20, beeeeeeeayatch! I will out-old you any day!
@paulsmith Wow. I love the user manual shooting out from Shatner's shoulder at the perfect angle. http://j.mp/am10eU
@paulsmith You have me beat by mere months there! I cut my teeth on a Practical Peripherals 1200 bauder.
@roblifford Probably a 10% chance I fly in at the last minute for a couple of nights. Other than that, planning to skip this year.
I can't believe @shauninman's first computer was a G4. I feel ancient. Mine was a VIC-20. http://5by5.tv/pipeline/5
Wow, how did I not know about Lala until now? Tons of great full albums, free: http://bit.ly/dBrdLw
Thanks for everyone who suggested Brizzly. Going to fire that sucker up again...
Is there a way to unfollow people but still allow them to DM you? Like a "mute" setting or something?
@levifig Burn-in was a bigger issue with first-gen plasmas. They are much better now. LCDs have their own lighting issues as well.
@horsedreamer The black isn't quite as good as some other top plasmas, but it's better than all LCDs. At an inch thick, I'll take it.
@levifig Isn't ghosting mainly an issue for LCDs? I've had a plasma for four years and no ghosting whatsoever.