1. A computer implemented method performed by one or more processors for balancing a workload, the method comprising the following operations: receive a workload comprising a plurality of work items for processing; identify a subset of a plurality of work items; assign one or more work items of the subset to each of a plurality of work packages based on an amount of empirical evidence available for generating an empirical parameter associated with the workload, the empirical parameter indicating an estimated processing time for work items in the workload, the estimated processing time based on an application dependent algorithm and used as a proxy for estimating a complexity of each work item of the one or more work items; assign each work package to a different work process of a plurality of work processes for processing based on the application dependent algorithm; receive an indication of availability from a particular one of the plurality of work processes that has completed processing of a particular work package assigned to the particular work process; update the empirical parameter associated with the workload based on the processing of the particular work package to produce an updated empirical parameter; and assign a new subset of the remaining work items comprising the workload to the particular one of the plurality of work processes in response to receiving the indication of availability, the indication of availability based on the application independent algorithm and the updated empirical parameter.