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