I'd argue the opposite. A programmer that only writes code is a waste of a paycheck, oxygen, and air conditioning.
- Manage his own time and resources against the things which need to be done. Given a list of tasks and priorities he needs to complete those tasks in the given order. If there are resources he needs, he needs to make those needs known to his management and those peers who can fufill those needs in a timely and effective manner so they can be met.
Appropriate meetings will be attended (in the hallways, conference rooms, on the phone), issues raised, and isses resolved.
- Devise tests that cover the portions of code he's reponsible for and execute those tests. Catalog problems found at the edges of his code, report them to others responsible for them. Find and fix problems in his own code and improve the tests appropriately.
- tech support/customer support
- Provide assistance to others on the project that need to access the API for the programs he's written. This takes the form of API documentation, error message divination, and possibly demonstrations. If the customer is the actual end-user for the code, when the phone rings and the customer rep wants to know why the particular module that the programmer wrote doesn't work, the programmer should be prepared to give a customer-friendly explanation of why it's not working, work-arounds, and possibly a preliminary estimate of when it will be researched and/or fixed.
Very little useful software is written in a vacuum.