Coordination in software development: The problem of task allocation