Launch Traditions: Let them eat cake
With every launch we celebrate with a slice of chocolate cake. It has been a long running tradition and something my partner and I look forward to.
As launches have become more important and the associated products reach greater numbers, this little treat remains a nice way keeping our feet on the ground.
It is the cake that brings me to write this post.
Before that, a little aside about what is involved with a launch and the mistakes we try to avoid at DssW.
Launches are often hectic affairs. Each launch involves a hard learned sequence of tasks to complete; all with numerous odds and ends to check and double check.
As an example of the hidden complexity, Power Manager’s installer is a bundle of nine sub installers, each built from hundreds of files. One mistake and the entire installer bundle falls apart. Worse still, simple mistakes can risk messing up our users’ computers.
Going from source to shipping disk image is no small task, and launches involve far more than just building the product. Do not forget all that documentation, the press releases, and accompanying web site changes.
Over the last few years I have put a great deal of effort into reducing the complexity of launching an update or new product.
With each launch I tend towards what I know as a Japanese mentality to quality control — incremental refinement with checks being added to ensure mistakes can not be repeated. Over time the body of checks builds and an increasing core of the launch sequence becomes automated.
It is now impossible to imagine a DssW launch without the product going through an array of simple checks; checks for inappropriate files included in builds, checks for Intel and PPC support in every executable file, and checks for empty files and folders.
The list of checks is extensive and grows every time a launch mistake is made — or a potential new mistake raises its head. Below is an overview of the launch specific checks.
Build for Distribution Checks
- Strip down executables
- Check executable formats (Intel and PPC)
- Remove test frameworks and binaries
- Apply sane permissions and ownership
- Check symbolic links
- Insert build time constants (time, version, copyright)
- Check for empty files and directories
- Remove private files
Remove Files That Match
*.h
._*
.DS_Store
*.c
*.cpp
*.m
*.pl
Headers
PrivateHeaders
.svn
CVS
*~.nib
*~
*.pbxuser
*.mode1
.#*
I smile each time I find one of our previous mistakes in someone else’s product. It reminds me of an important lesson; launch mistakes rarely matter.
What matters is your response and the time taken when fixing mistakes.
As I edit this post Power Manager 3.6.1 is queued up for launch. This release includes a fix for a bug that slipped through during our last two releases. I am not happy we did not catch it sooner.
The flip side is this mistake was not critical and thus another lesson has been set out before me. Avoiding this kind of mistake in the future is going to require more automated testing — or better manual test procedures. I prefer automation because testing is error prone in itself; any boring process that subjects us, and not computers, to repetitive tasks is bound to fail.
Automated testing has a serious weakness; the pride of the engineers who put the automated testing together. Automation creates a mental blind spot in those that use or trust the results. You are as likely to have errors in your automated testing, as you are in your shipping product.
It is a problem still in need of a solution.
There is a bigger problem that maybe you can help with; finding good ’launch cake'.
In France, a country known for its beautiful pastries, I can not find cake. I can find abundant pastry and chocolate shops, but no where that sells simple chocolate cake.
In Sydney, Australia, we enjoyed fantastic chocolate cake from David Jones. In Hereford, UK, Marks and Spencer came to the rescue.
Where in Lyon, France, can I get a decent piece of chocolate cake? Please if you know, drop me a line or leave a comment!