I can tell you now that the first sacrifice of coding to a deadline is cleanliness - it's all very nice having a well planned system, with nice hierarchy, design patterns, encapsulation, etc - but after about an hour of coding you'll find youreslf having to squash in some specific optimisations, or adding specific case checks into general case methods, or plain ;fudging' for effect.
And i'm talking about a system that is miniscule in comparison to the FS2 codebase, and which uses (at least) OO functionality..... any large scale system will - unless given inifintie time and budget - degenerate into alphabetti spaghetti.
Sure it'd be nice to have a dedicated framework with nicely defined hotspots, etc, but we don;t have it and never will. some things just can't be done, and people have just got to accept it..