after reading the following blog: http://blogs.techrepublic.com.com/10things/?p=262 at work, we were all trying to pin different stereotypes to our teammates and i decided to pin one on myself and that was the evangelist.
Now, I do already realize these traits in myself and have been working on keeping to myself with my flamboyance for evangelizing but still put in words from my experiences and readings.
Coupled with focusing more on my own tasks and projects and less on other people, One thing that i feel is helping me right now is asking questions instead of telling solutions....
Try asking questions to that get the person to realize what it is they're doing wrong or at least notice that what they're doing isn't working and they'll start looking for answers to that problem.
One thing that might be an easy example is "every time i change something in my code it breaks the application and i have to go into the debugger to find the problem". So i might ask something like "how many responsibilities does that object you're working on have?" "What is the code supposed to be doing?" "does the code communicate what it's doing really well?". Some of these lines of questions could bring you around to an opportunity to tell them about TDD(test driven design), simple desing, single responsibility principle (SRP).
Something that might be a little more complex is an issue that can be 'more easily' blamed on someone else. For example: The customer keeps changing their requirements for this functionality. "Did you work from a use case?" "Did you work from a requirements document?" "Did the customer specify a test case for the functionality?". Try to bring the talk around in such a way that they're asking for solutions like User Stories, face to face collaboration with the customer, moving changes to the product backlog, letting the customer know that their changed request will cut into the velocity of the team's current work.