Matching Between Heterogeneous Workers and Firms