employees product management tests developers content design programs needed work user programming create customers programmers solution operating specific applications requirements good process project open customer instance name person education developer business important time language cost needs computer number application domain testing option code support systems type source java data projects program practices company development