As a tech consultant to some of the IT companies, I’ve always felt that the companies(and employees) could have minimized or eliminated many of their headaches if they had implemented some of the ideas given below…
Here are some straight lifts from The Pragmatic Programmer
Provide Options, Don’t Make Lame Excuses
Instead of excuses, provide options. Don’t say it can’t be done; explain what can be done.
Be a Catalyst for Change
You can’t force change on people. Instead, show them how the future might be and help them participate in creating it.
Make Quality a Requirements Issue
Involve your clients in determining the project’s real quality requirements.
Critically Analyze What You Read and Hear
Don’t be swayed by vendors, media hype, or dogma. Analyze information in terms of you and your project.
Program Close to the Problem Domain
Design and code in your client’s language.
Always Use Source Code Control
Source code control is a time machine for your work—you can go back.
Test Your Software, or Your Clients Will
Test ruthlessly. Don’t make your clients find bugs for you.
Gently Exceed Your Users’ Expectations
Come to understand your users’ expectations, then deliver just that little bit more.
Work with the Client to Think Like a Client
It’s the best way to gain insight into how the system will really be used.