"Just Ship It."
In my experience, most software-dependent startups fail because they never actually finish the software. It’s really that simple.
I’m trying to figure out how I feel about Jeff Atwood’s recent proclamation: “Version 1 Sucks, But Ship It Anyway.” As a connoisseur of Software Projects That Suck, I get Atwood’s point: you don’t really know what’s wrong with Version 1.0 until some real customers get to play with it and let you know what they think. I’ve often spent days or weeks perfecting a feature that nobody cared about! Why not save that time by getting feedback first?
Well, there can be a few reasons.
- You have a hard deadline for the finished version. The deadline was wired for a specific customer, or for an external event such as Y2K or a holiday.
- Delivering updates will be difficult or expensive, as when the product is embedded.
- It’s a component that someone else is depending on.
- The software is unusable or dangerous in its incomplete state.
Or sometimes, as is often the case with my projects, you weren’t even involved until after the customer was already frustrated with a number of iterations and you just cannot ask them to look at one more not-quite-done release.
So how bad is too bad?
To me, the breaking point is when the software’s quality isn’t good enough to waste the time of your intended users. Getting a “pre-1.0 beta” version out is good, especially if your users feel it’s justified by a low or free price. But no matter how cheap the software is, when you can’t accomplish basic tasks, that “public beta” cycle is frustrating for everyone.
When developing in-house software, I feel the same standard applies. If you can do the essential things the software was designed for, and the intended users are happy to get their hands on it, great. You can use this version as a functional preview, collect more “cards” or “user stories” or simply “defects,” and hasten the next release.
When that doesn’t apply
I say these things because most of my applications get deployed in a Web or office environment. Many of the objections to Atwood’s “ship it anyway” maxim come from programmers who lack the luxury of pain-free updates. To them, a bug fix means you have to burn new ROMs or issue a product recall.
It sounds like the contrary of an Agile situation, but it’s not really. You can still do iterative development, and you can still update the requirements and design as you go, but you have to change your conception of what constitutes a “release.” Perhaps your Version 1.0, and 1.1, and even 1.2 run on simulators or sample hardware, and what the end-user sees doesn’t come around until 2.0.
Finally
The answer to “should I ship a sucky Version 1.0?” like a lot of things, is “It depends.” But the more you’ve seeded your code with effective unit tests and the more you’ve implemented continuous improvement, the better your chances are for a non-sucky Version 1.1.
If Version 1 “sucks” because it’s interface is kind of unintuitive, do you hold up because interface is important? Or do you ship because that’s the best path to finding a better way? Tough call. Life is full of compromises. When have you intentionally shipped a release you weren’t happy with? How did that work out for you? And in what way did agile practice perhaps affect that decision point?
Tweets that mention “Just Ship It.” « Critical Results -- Topsy.com
December 30, 2009 @ 9:22 pm
[…] This post was mentioned on Twitter by Mark W. Schumann, Mark W. Schumann. Mark W. Schumann said: Your Version 1.0 sucks. Do you ship it anyway? It depends. New blog post: http://bit.ly/8GwrVx […]
David Howard
January 3, 2010 @ 5:38 pm
Great thoughts Mark. I have noticed in my varied reading over the last month that this has swung to a common trend. And I don’t just mean technology like software. One case study I read was on paper pads for teenagers.
The trend is based on a desire to get quicker, earlier feedback from real customers instead of surveys, focus groups, etc. It is one thing to ask somebody “If I could provide a piece of software that would do everything for $1000 would you buy it?”, and actually showing them the software with an offer to buy it right then. As soon as you stick your hand out with a request for money, it has gone beyond research and you now have velocity to get real feedback. I for one like this approach, but I wonder what is causing it? I cannot help but think that the economic struggles are driving people to seek real results now, instead of vaporware promises.
The Agile methodology generates this type of capability, because now you have something to show that can be touched, tasted, felt, and on occasion kicked (as opposed to a document). While I see a clear difference between the release to a business team that may represent the end users or customers, it is not as far of a stretch now to release to customers.
The results can be great, and I assume nobody willingly releases what they know to be dangerous software (your point 4 above – “oops, sorry we deleted all the contents of your disk when you saved that file”). So as long as the software (or product) is fairly well baked, the bigger concerns I would have is losing any advantage of proprietary capabilities by releasing an early version product that allows others to catch up at a point sooner in an industry’s maturation process.
uberVU - social comments
January 4, 2010 @ 6:48 am
Social comments and analytics for this post…
This post was mentioned on Twitter by MarkWSchumann: Your Version 1.0 sucks. Do you ship it anyway? It depends. New blog post: http://bit.ly/8GwrVx…
Mark W. Schumann
January 4, 2010 @ 11:12 am
Thanks for your thoughtful comment, Dave. I think it makes a huge difference that you’re getting a product into people’s hands, that they may have even paid for, as opposed to asking for an offhand opinion.
It’s a matter of investment. Don’t ask people if they like chocolate; go find out how much chocolate they actually buy and eat. My impression is that it has nothing in particular to do with macroeconomics. People are just really bad at knowing and reporting their actual values and priorities. It’s like New Year’s resolutions, right? Do you want to get in shape? Sure! Did I see you at the gym today? Hah! The people who buy and try your product are the ones actually at the gym.
You raise a good point about proprietary capabilities, but you know what though? I don’t think I’ve ever seen, up close, a really good idea that lost out because it wasn’t secret enough. People tend to overestimate how amazing and world-changing their idea is on its own; they underestimate how important it is to make it work and how hard it is to deliver. And they often miscalculate how much the market cares about the problem their product purports to solve.
Doug Hardman
March 9, 2010 @ 1:44 pm
The issue is when you have a product that the developers know they have time for NOW, but after 1.0 ships (or launches) another project will take its place immediately.
This was the problem we have had a few times. We’d get so wrapped up in launching a site, that we’d rush things under the excuse “We’ll fix it in 1.1” but that never happens. It ends up out there, broken, and (sometimes) abandoned.
Mark W. Schumann
March 9, 2010 @ 2:21 pm
Thanks for your comment, Doug. I think it’s important to go with “the essential things the software was designed for.” If those are good enough to make users reasonably happy that they’re not wasting their time working with the software, great. That’s a good pre-1.0.
You’re right about the badness of leaving important defects in the 1.0 release that people have actually paid for, and then never coming back to fix them. That’s uncool.