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