I have some recipes too.
Statistically, the more you commit, the more you break.
The more you play with kernel parts, the more you break.
The more you play with tools used during upgrading, the more you break.
The more you move things across packages, the more you break (things have really improved, it used to be much worse).
The more you remove things (class/methods/instance variables etc...) the more you break.
The more you rename things (class/methods/instance variables etc...) the more you break.

The fastest way to break things is having own idea how better graphics and morphic stuff should be.
Fortunately they often break before you ever got a chance to commit ;)

Changing your own leg while you are running is an art.
Some are really good at that sport, and I'd particularly liked the Colin's way for introducing environments.
If you look at changes, you'll see they described many circles, converting from SystemDictionary to Environment, back to SystemDictionary.
More a waltz than a sprint :)
So I'd say it's more about learning to dance than learning to program...


2013/11/26 Chris Muller <asqueaker@gmail.com>
On Mon, Nov 25, 2013 at 4:34 AM, Frank Shearar <frank.shearar@gmail.com> wrote:
> Ah crumbs. OK, so while System-fbs.623 re-adds the method, the
> existing method is still executing and so still fails. Hey, at least I
> broke the update stream in a _new_ way. I tried issuing a config to

No way man, I've broken it that way before.  Oh, and don't forget my
number recently that crashed the entire VM during update.  *I* am the
champion trunk-breaker!