Cisco released a new wireless LAN controller last week, the 5760. Blake and Sam have a great discussion about it over at the NSA Show. It’s the next generation of connection speeds and AP support. It also runs a new version of the WLAN controller code that unifies development with the IOS code team. That last point generated a bit of conversation between wireless rock stars Scott Stapleton (@scottpstapleton) and George Stefanick (@wirelesssguru) earlier this week. In particular, a couple of tweets stood out to me:
Overall, the amount of features missing from this new IOS-style code release is bordering on the point of concern. I understand that porting code to a new development base is never easy. Being a fan of video games, I’ve had to endure the pain of watching features be removed because they needed to be recoded the “right way” in a code base instead of being hacked together. Cisco isn’t the only culprit in this whole mess. Software quality has been going downhill for quite a while now.
Our culture is living in a perpetual state of beta testing. There’s lot of blame to go around on this. We as consumers and users want cutting edge technology. We’re willing to sacrifice things like stability or usability for a little peak at future awesomeness. Companies are rushing to be the first-to-market on new technologies. Being the first at anything is an edge when it comes to marketing and, now, patent litigation. Producers just want to ship stuff. They don’t really care if it’s finished or not.
Stability can be patched. Bugs can be coded out in the next release. What’s important is that we hit our release date. Who cares if it’s an unrealistic arbitrary day on the calendar picked by the marketing launch team? We have to be ready otherwise Vendor B will have their widget out and our investors will get mad and sell off the stock! The users will all leave us for the Next Big Thing and we’ll go out of business!!!
Okay, maybe not every conversation goes like that, but you can see the reasoning behind it.
Google is probably the worst offender of the bunch here. How long was GMail in beta? As it turns out…five years. I think they probably worked out most of the bugs of getting electronic communications from one location to another after the first nine months or so. Why keep it in beta for so long? I think it was a combination of laziness and legality. Google didn’t really want to support GMail beyond cursory forum discussion or basic troubleshooting steps. By keeping it “beta” for so long, they could always fall back to the excuse that it wasn’t quite finished so it wasn’t supposed to be in production. That also protected them from the early adopters that moved their entire enterprise mail system into GMail. If you lost messages it wasn’t a big deal to Google. After all, it’s still in beta, right? Google’s reasoning for finally dropping the beta tag after five years was that it didn’t fit the enterprise model that Google was going after. Turns out that the risk analysts really didn’t like having all their critical communication infrastructure running through a project with a “beta” tag on it, even if GMail had ceased being beta years before.
Software companies thrive off of getting code into consumer’s hands. Because we’ve effectively become an unpaid quality assurance (QA) platform for them. Apple beta code for iOS gets leaked onto the web hours after it’s posted to the developer site. There’s even a cottage industry of sites that will upload your device’s UDID to a developer account so you can use the beta code. You actually pay money to someone for the right to use code that will be released for free in a few months time. In essence, you are paying money for a free product in order to find out how broken it is. Silly, isn’t it? Think about Microsoft. They’ve started offering free Developer Preview versions of new Windows releases to the public. In previous iterations, the hardy beta testers of yore would get a free license for the new version as a way of saying thanks for enduring a long string of incremental builds and constant reloading of the OS only to hit a work-stopping bug that erased your critical data. Nowadays, MS releases those buggy builds with a new name and people happily download them and use them on their hardware with no promise of any compensation. Who cares if it breaks things? People will complain about it and it will get fixed. No fuss, no muss. How many times have your heard someone say “Don’t install a new version of Windows until the first service pack comes out”? It’s become such a huge deal that MS never even released a Service Pack for Windows 7, just an update rollup. Even Cisco’s flagship NX-OS on the Nexus 7000 series switches has been accused of being a beta in progress by bloggers such as Greg Ferro (@etherealmind) in this Network Computing article (comment replies). If the core of our data center is running on buggy unreliable code, what hope have we for the desktop OS or mobile platform?
That’s not to say that every company rushes products out the door. Two of the most stalwart defenders of full proper releases are Blizzard and Valve. Blizzard is notorious for letting release dates slip in order to ensure code quality. Diablo 2 was delayed several times between the original projected date of December 1998 and its eventual release in 2000 and went on to become one of the best selling computer games of all time. Missing an unrealistic milestone didn’t hurt them one bit. Valve has one of the most famous release strategies in recent memory. Every time someone asks found Gabe Newell when Valve will release their next big title, his response is almost always the same – “When it’s done.” Their apparent hesitance to ship unfinished software hasn’t run them out of business yet. By most accounts, they are one of the most respected and successful software companies out there. Just goes to show that you don’t have to be a slave to a release date to make it big.
The culture of beta is something I’m all too familiar with. My iDevices run beta code most of the time. My laptop runs developer preview software quite often. I’m always clamoring for the newest nightly build or engineering special. I’ve mellowed a bit over the years as my needs have gone from bleeding edge functionality to rock solid stability. I still jump the gun from time to time and break things in the name of being the first kid on my block to play with something new. However, I often find that when the final stable release comes out to much fanfare in the press, I’m disappointed. After all, I’ve already been using this stuff for months. All you did was make it stable? Therein lies the rub in the whole process. I’ve survived months of buggy builds, bad battery life, and driver incompatibility only to see the software finally pushed out the door and hear my mom or my wife complain that it changed the fonts on an application or the maps look funny now. I want to scream and shout and complain that my pain was more than you could imagine. That’s when I usually realize what’s really going on. I’m an unpaid employee fixing problems that should never even be in the build in the first place. I’ve joked before about software release names, but it’s sadly more true than funny. We spend too much time troubleshooting prerelease software. Sometimes the trouble is of our own doing. Other times it’s because the company has outsourced or fired their whole QA department. In the end, my productivity is wasted fixing problems I should never see. All because our culture now seems to care more about how shiny something is and less about how well it works.