Naming things is hard. When naming my classes, variables, and methods I strive to avoid collisions with reserved words or keywords in my languages (MSSQL, VB.NET or C#, HTML, CSS, jQuery) and framework (.NET).
Too often I make mistakes and don't realize it until it's too late to easily go back and rename.
A scenario: (1) first create a database schema and then (2) realize a table or column name isn't a good choice for a C#/.NET object.
What techniques do you use?