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