Describing the perfect developer's responsibilities, I forgot the preconditions and environment he (in rare cases she :-)) needs:
- Trust: is better, than thousands of specification pages or use cases. A good relation between the customer and developer or project manager and developer is the key to success. In general case it is better to define a minimal set of functional and nonfunctional requirements - the essential requirements, and let the developer to decide about the details. Short iterations and trust, are better than waterfall and a specification bible...
- Environment: hardware is cheap. Human resources are expensive. A developer should be able to choose a prefered hardware (even Mac, Linux, multiscreen etc.). A good hardware is good for motivation, and so also for the efficiency. From the overall perspective it is a lot cheaper to spend money on "cool" hardware, than saving money on RAM, CPU power or even design. I do not understand, why some companies still try to save money on hardware...
- Recognition: in case a project fails, managers try to find someone to blame. In case the project is successful there is no recognition or incentive. Sometimes a simple sentence: "Well done" would be appropriate...and also increase the productivity. Some managers still believe, that the real added value are the analysts, designers and architects. In their perspective developers are replaceable and can be easily outsourced (which is a very common fallacy :-)).
- Flexibility: especially in europe developers have to work in predefined working hours, which is mainly o.k. But sometimes (in the preproduction phase) we have to work more, than 10 hours which is often not allowed. It would be more efficient and also good for the motivation, working more for some period of time, and afterwards to take some days off.
- Good Teams: the best thing which can happen to you is: you are the less experienced developer in a team, so you can learn from the others. Even a motivated developer needs also motivated collegues. Otherwise the project will be infected by the "work-to-rule" mentality, which does not very well work in the software development area.
- Motivation: books, workshops, magazines, conferences and trainings should be natural and matter of course. The costs for the above activities are nothing, comparing it to the increased motivation, and so also efficiency - so they pay off shortly (sometimes in weeks).