So I saw an interesting conversation today on Twitter between @DHH and @thijs this morning. They were discussing the NewRelic IPO and the subject got around to running ancient Rails versions, and the fact that a lot of the migration projects from Rails 2.3 have been driven in large part because of the movement of the surrounding ecosystem (read, gem updates).
Articles on Antifragility
Imagine an application to run a business that is one method, 10,000 lines long. Worst thing in the world, right? Just thinking about such a think makes me shudder because you can look at it and know it's bad. But let's play with the idea a little bit.
So let's say the function of this application is to generate an invoice for a purchase with lots of line items. Cool, you may think if you like thinking about how software solves problems, an obvious thing that we could separate (to make this system a little more robust) is have the invoice built in two "phases". Phase 1 is preparing individual components (header, lines, footer) and then Phase 2 is composing them into an invoice.
Now you have a dramatically more robust system. You can fiddle with one part (say, the footer) feeling pretty safe that you are not going to change the "guts" of the invoice.
No problem there, let's go a little further -