Amazon (hardback, kindle)

InformIT (pdf, epub, mobi)

中文 (in Chinese)
日本語 (in Japanese)
한국말 (in Korean)

You can also see a list of all my publications and talks, including slides, on the Publications page.

Upcoming talks

Continuous Delivery: The Case of Apple

Translations: 中文 | 한국말

The case of Apple sometimes comes up in discussions around continuous delivery and the lean startup. For example, Richard Durnall described Apple’s strategy to me on Twitter as follows:

Brilliant and unwavering product vision from a few amazing folks going to market infrequently with huge ceremony.

That seems to be the exact opposite of what both lean startup and continuous delivery preach. It’s hard to know what happens behind the scenes at Apple because of their notorious secrecy about their product development process. Furthermore, there’s no way of knowing if the information we do have accurately represents what really goes on there. But if we look at Apple’s history, there are a couple of examples that strongly suggest that the principles behind continuous delivery and the lean startup were very much in play in Apple’s early years.

Exhibit A is the Apple I. Created in Steve Wozniak’s parents’ garage, and sold without a keyboard, display, power transformers or even a case, it is – as Eric Ries has pointed out – a great example of a minimum viable product.

Apple I on display at the Smithsonian, taken by Ed Uthman

Apple I on display at the Smithsonian, taken by Ed Uthman

Exhibit B is “The Macintosh Spirit”, an entry from – the excellent compilation of stories from the creation of the original Macintosh, submitted by members of the team that built it.

This entry – which describes “The attitudes and values of the team forged the spirit of the Macintosh” – is short and worth reading in full (as is the whole site if you have the time – it’s available in book form too). Here’s a paragraph describing the Macintosh team’s product development process (my italics):

Other groups at Apple had an elaborate formal product development process, mandating lengthy product requirement documents and engineering specifications before implementation commenced. In contrast, the Mac team favored a more creative, flexible, incremental approach of successively refining prototypes. Burrell Smith developed a unique hardware design style based on programmable array logic chips (PAL chips), which enabled him to make changes much faster than traditional techniques allowed, almost with the fluidity of software. Instead of arguing about new software ideas, we actually tried them out by writing quick prototypes, keeping the ideas that worked best and discarding the others (see Busy Being Born). We always had something running that represented our best thinking at the time.

Given that we’re talking about events that were happening 20 years ago, it’s hard to improve on this as a description of how to do continuous delivery on an embedded system1. This example also resolves a common misconception — just because you’re “going to market infrequently with huge ceremony” doesn’t mean you can’t do continuous delivery (which is why I am careful to distinguish continuous delivery and continuous deployment, and also to differentiate between the terms “deployment” and “release”). Rather, continuous delivery is one of the things that enables successful “high ceremony” launches: if you’re doing it right, the high-risk technical work happens long before the product launch, which becomes purely a marketing event – in the case of the Macintosh, one of the most spectacular in advertising history.

'1984' commercial for the launch of the Macintosh

‘1984’ commercial for the launch of the Macintosh

1 For a more up-to-date example, check out how the HP LaserJet firmware team moved to a continuous delivery model, including checking in to trunk to do continuous integration, and performing automated functional testing using real logic boards to test the processing algorithms and timing.

  • Pingback: It’s not the lesson – it’s the learning « Complexity is a matter of perspective

  • jryding

    This sounds like another example of just how much more is said from code and prototypes instead of people.

    I’ve been encountering this a lot with a new project at my job. Some teams that we are working with wants an in depth design document and plan before they will start coding while my team started to write code from day 1! As a result, we’ve been able to test ideas faster (and see which ones fail) and the upper management of our product has been extremely impressed with how efficient our team has been.

    Granted, this also takes the team to know when to say “no”. We are taking our time and being very conservative with the work we are committing to – with a stronger promise on delivering solid test coverage over more features. This may force us to go slow at the start, but it will allow us to create a hockey-stick graph of productivity down the road thanks to the large test coverage.

  • Pingback: Adopting enterprise 2.0: An iterative approach | Amanda Belton

  • Pingback: 苹果的持续交付 | 持续交付