2  Creating a Productive Programming Environment