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