How do you manage your codebase once it gets large?
jsankey: First: you need good test coverage, so that you can refactor and restructure with confidence.Then, I would look into dividing up the code base a bit.  Usually once you get to a certain size you'll be able to identify useful bits and pieces that could be extracted as standalone libraries.  This will also render these more generic parts of your code ready to reuse.You might also find it useful to divide the application-specific parts into layers and ensure lower layers don't depend on higher ones.  These types of divisions allow you to consider lower layers independently.  And when you're hunting for something, you should have a feel for which layer it is in first, which narrows your search scope.