Never say never – I don’t know how many times I swore something couldn’t be so in the code, only to find out it was so. It helps me remember to try not to be so absolute about my opinions. Whenever you declare that something couldn’t be so, you’re setting yourself up to look foolish.
Talk it out, take a break, walk away – Sometimes you just need to get away from a situation for just a second, and then a solution occurs to you. This works for writing too, it’s almost like you need to let the subconscious take its crack at it. I don’t know how many times I’ve had a solution pop into my head all obvious-like when I’m in the middle of trying to explain to someone else what the problem is. Personality-wise, I prefer to just keep grinding away at a problem relentlessly until it is solved, which, at some point it turns out, is not the best way to go.
Take things with a grain of salt – The next big thing often isn’t (Silverlight comes to mind). You can’t always be ready to jump on each new thing as it comes out, whether it’s buying the latest iProduct only to have it supplanted by the new one with the 48″ screen next week, or rearranging your whole life around swing dancing. Yeah, maybe there are some advantages to Linux, but I think at this point we can all agree it’s not going to happen, alright? (Same goes for swing dancing.)
But not too much – Well, it turns out sometimes the next big thing really is, like java or tablets or the Internet. Don’t be the guy in the corner screaming about how the last real language was C++. (Says the last man on earth without a smart phone.) I think it would be easy for me to become an everything-was-better-in-the-old-days-luddite if I let myself.
Patience, patience, patience – The devil is in the details, be methodical, persistence pays off, never give up, etc. etc. etc. Debugging issues is the quintessential exercise in patience. Sometimes you have to spend hours digging into obscure pointer references. If you make any assumptions about what is happening, the error will inevitably turn out to be hidden behind those assumptions. I think (I hope) that doing this day in and day out has taught me the importance of being methodical, not making assumptions, and questioning everything.