Electronics DFM is one of those things that's really, really hard to learn. Most of the resources out there are lacking; they're either really basic stuff, really advanced stuff, or just plain incomprehensible. I am only aware of two ways to learn it that actually work:
1. In-person reviews with an expert. Offline reviews can be useful for getting a design out, but to understand the problem space, you need a back-and-forth conversation. Sample conversation that's easy in person but very hard over email: "Why not do it this way?" "Well, that would work, and it's a good solution a lot of the time, but you have this thing over here which makes this other approach a lot better...."
2. The hard way: sometimes there's just no substitute for experience.
At quantity 200, I think contract assemblers make a lot of sense (but do shop around: the economics of this particular supply chain can get weird), but factory-programmed parts really don't. Maybe if your firmware is final final I'd advise a client of mine to do it, but in any case where you're going to want a later firmware update, the best ROI is going to come from getting the debug port hardware perfect. That means the right connector (standard pinout, standard part, from a good quality manufacturer), level shifters where appropriate, pull-up and pull-down resistors, and all the rest. (Making sure this stuff was all explicitly spelled out on our review checklist was one of the first things I did when arriving at my current employer, and it's saved us and our clients a lot of money!)