These roles gradually evolve out of existing developer roles as the needs become clear. In the beginning software teams typically consist of one or more devs who just do everything. There generally is never enough resources to get everything done, so careful management and marshaling of resources is