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