Reverse engineer. Blogger.

If you’re a member of a fairly popular web service you’re probably becoming more and more familiar with feature roll outs.

A feature roll out is when a new feature is added to a service for a certain number of users at a time and, after some duration of time, every user on that service ends up with the new feature. This process could take hours, days, weeks.

There are a lot of reasons a company may need or want to do a feature roll out. There are also reasons a company may want to avoid doing them. Lets first look at why a company may need to roll a feature out.

Some features on these large-scale platforms are incredibly taxing on the technology infrastructure of a service. Say, for instance, that YouTube released a feature that allowed its users to re-encode all of their videos into a higher quality than they previously allowed. YouTube has billions of minutes of video. If every one of their users were allowed to do this all at once they’d bring YouTube’s infrastructure (world-class though it may be) to its knees.

Twitter’s recent roll out of a feature that allows its members to download all of their tweets in an archive is another example. While certainly not as intense as video encoding, gathering up tens-of-thousands of tweets and creating a neat and tidy archive of them does take some horsepower. They’ve decided to roll this feature out.

Another, slightly more technical, reason that a company may need to roll out a feature over time would be that they split their traffic onto many different web nodes. Or, actual web servers or clusters of servers. Each of those web nodes being updated at exactly the same time would bring the service down for a short period of time. High-capacity, “always up”, networks like Twitter can not afford to have downtime across all nodes at once. So they may roll out a feature so that their service remains up and running and they only have to pull down one node at a time, moving the traffic that would normally go to those nodes to other nodes temporarily, to update it with the new feature.

But why would a company want to roll out a new feature even if they didn’t need to? There are many advantages and I think one of the best ones that is often overlooked is hype. Remember when Instagram rolled out web profiles? It took the better part of a week for everyone to get their web profiles.

If you don’t see your profile yet, be assured that you’ll see it in the next few days. We’re rolling out profiles to everyone on Instagram over the course of this week.

A week. Even with 100,000,000 users a week in internet-speak is just about one year and three months. But with a certain number of users getting their web profiles each and every day they got an amazing amount of word-of-mouth for free. “Yay! I got my web profile!!” followed by a link on Twitter from a huge percentage of users. If for no other reason then to have Instagram on everyone’s mind for an entire week it was worth rolling this feature out over time rather than giving it out relatively immediately to everyone.

Another advantage worth noting is that by rolling out a feature the company is able to monitor the progress, effectiveness, and use of the feature and has more of a chance to correct things as the feature rolls out. If a feature has a direct impact on the stability or cost of running the service then rolling it out over time gives you a better idea of how well the feature is doing at attacking that goal. If a feature is brand-new and the company wants to see if users will A) use it and B) figure out how to use it correctly – by rolling it out you can get some sense as to how users interact with the feature. This is very advantageous.

Why would a company want to avoid feature roll outs? Announcing features that users do not have yet is always risky business. It is almost never a good idea. Some of the risk falls on user awareness. If a user learns about a feature and gets excited to use it and can not use it for a week they’re likely to forget about it a week later. You’re also likely to create higher expectations for a feature than you’re able to deliver on. I’m sure the Instagram users that got their web profile a week after they were announced had a slightly less excited response at getting them than the ones that did in the first day or two.

Feature roll outs are sometimes a necessity, sometimes a tool, and sometimes a bad idea. Choose carefully.

Any other advantages or disadvantages? Chime in on Hacker News.