1. A computer implemented method for developing schedules comprising the steps of: (a) acquiring a scheduling period, consisting of a plurality of planning periods, a plurality of contact groups, one or more service level targets for the plurality of contact groups, contact volume forecasts and average service time forecasts for each contact group of the plurality of contact groups over the scheduling period by a computer; (b) acquiring skill groups including a plurality of agents together with their skills and skill levels, and scheduling rules by the computer; (c) acquiring initial schedules for the plurality of agents in each skill group and designating the generated initial schedules as current schedules for the plurality of agents in the each skill group by the computer; (d) selecting a first skill group of the skill groups by the computer; (e) updating the agent requirements for the first skill group selected in step (d) by un-scheduling the plurality of agents in the first skill group and discarding the current schedules, maintaining the current schedules for the plurality of agents that are not included in the first skill group and using a staffing model to determine the minimum agent requirements for the first skill group to most closely meet the service level targets by the computer; (f) generating new current schedules for the plurality of agents in the first skill group selected in step (d) using the updated agent requirements found in step (e) by the computer; (g) repeating steps (d-f) for the each skill group of the skill groups until every skill group of the skills groups is unscheduled, the agent requirements are updated, and the plurality of agents in every skills group of the skill groups is re-scheduled by the computer; and (h) repeating steps (d-g) in one or more iterations until a set of final schedules is found for the plurality of agents in every skill group of the skill groups after satisfying one or more stopping criteria conditions by the computer.