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