I think Ness's point is about rule contamination; without using an unambiguous intermediate representation, poorly-defined environmental descriptions can cause conflicts, e.g.
pʰ > p
p > b | m_
...when one desires that original mp > mb, but original mpʰ > mp (Presumably real examples are somewhat more complex.) As a programmer, of course, that just looks like an order-of-operations mistake, but, then, the standard formalism for representing sound changes seems designed to cause such mistakes, and it can be daunting to understand how to break a sound change into multiple steps to avoid such collisions and conflicts.
tl;dr oh god you're all terrible programmers and the entire history of the field of linguistics is to blame