Something that Mitch Walker and Jim W touched on is the portability and reusability of code. XNA has gone a long way in embracing these concepts with GameComponents and Services, but very few of the samples actually prescribe to this model.
I agree with Jim, things like the base objects from the GSM should be bundled into a library where it makes sense. (ScreenManager, GameScreen, etc) I've done this myself, and its quite usable. Then, new developers could simply reference the GSM library and build on it from there.
Similarly, with other samples, if they were written as stand-alone GameComponents, then new users could simply drop them into their projects and go. A good example would be the ChaseCam sample - having a ChaseCam or FirstPersonCam game component / service would help a lot of new developers get off the ground quickly.
Changing the subject slightly, I'm also a little worried about the samples and starter kits being thrown together haphazardly. While a particular sample may be about one topic, the rest of the sample still gets looked at for examples of how to do things. The author may have simply hacked together a quick workaround to get their sample working, and new developers learn this as 'the right way'. I'm sure you see the problem here. Also, if starter kits are meant to be 'base' from which developers build their games, surely they should be written extremely well and optimised. You dont want someone's game to get poor performance because of something thats not quite right in the base.
I am in no way trying to insult any of the developers of the starter kits or samples - you guys have done a great job so far and all your hard work is very much appreciated.
--
Ruina et Stragos
XNA SA--