A couple of years ago I read something Richard Schwartz wrote about "Second System Syndrome". I can't seem to find the original now, but here's a link to the topic on wikipedia. Since reading it, an understanding of this topic has been directly responsible for saving my backside about a dozen times.
The general idea, is that you build something that by chance, luck, and a little skill turns out really useful. As a reward, you get the chance to do it again. You resolve that this time you're really going to do it right. What you end up with, if you're not careful, is something so grossly overengineered and poorly suited to the actual problem that you design the very utility and flexibility right out.
Think of all the "Second System" projects you can recall that never even get finished. The thing to remember when you go to do your rebuild, is that you're not solving the same problem again. You're solving a similar problem in an entirely new context. Go back to the basics that made the original successful. You need start with the reason you're building it. From the design goals, plan your solution. Borrow from the original but don't copy it. Trust that you've learned something along the way and those original ideas will end up rolled into the new solution along with the fresh thinking and economy of design that made your first work succeed.
I plan to revisit this topic from time to time, because it has become so key to how I work.
Today I moved into test with one of the largest "second system" rebuilds I've ever done. It has nothing to do with Second Signal, but rather is traditional Notes work related to design I've worked on for years and years. As I said, its in "alpha" test on my own servers tonight, and by Friday I will have it in the hands of my client. The work represents something like two months of revenue, and if I hadn't really pounded my head and forced myself to avoid making those "second system" mistakes I'd really be underwater right now.
Comment Entry |
Please wait while your document is saved.