Failing is a part of live. Well, I prefer to think of it as not succeeded, but that’s a story for a different blog post that I’m never going to write. Anyway, the key is to accept the fact that you’re going to make mistakes. They happen to the best of us. Hell, I get called out on spelling errors in my blog posts sometimes and I have a degree in English. Early on in my career, I thought that since I had a job in IT, I was supposed to act like I knew what I was doing and that I wasn’t supposed to make mistakes. As a result, I heaped a ton of pressure on myself to succeed and when I did, eventually, fail, it took a lot out of me and I didn’t like to own up to my failures because I felt like I shouldn’t have been making them. These days, I have a different attitude about failing. Instead of trying to hide it, or at least not own up to my failures, I openly admit to them. Heck, I’ve openly admitted to some pretty stupid things on twitter and in this blog. Instead of hanging my head in shame and hiding under my desk, I go out on the internet and find the answer to the problem, fix whatever I broke, and then openly and publicly admit to it. I’ve often said that the key to learning is time, failure, and semi-public humiliation. I chose to circumvent the semi-public humiliation by openly sharing my failures and the solution in the hope that someone will learn from what I’ve done and won’t have to repeat my mistake.
Don’t be a Know-It-All
By this I mean you don’t have to know everything. Another rookie mistake on my part was to assume that I had to know everything. Every time a new technology hit the streets, or even was released in alpha, I tried to learn it. I would run out and find a book or read articles. I spent so much time chasing the new hotness that I didn’t take the time to focus on a lot of core skills and build depth of knowledge. Admittedly, as a result I can talk conversantly about a lot of technical topics that I would have no knowledge of otherwise (Smalltalk, anyone?). Others have hit on this in the past, but I cannot express the value of being a T-shaped professional. There’s nothing wrong with having a broad, shallow knowledge base to draw from, but it’s important to pick something you love and drill down into it. Master a technology or platform. Don’t take this to mean that I think everyone needs to be a one dimensional professional. Keep learning. Even when you’re mastering analysis services or WPF or whatever, take the time to learn about Flash Remoting or Processing or Ruby on Rails or whatever strikes your fancy. You never know where you’re going to find an idea that helps you solve your current work problem.
Involving yourself in the developer community is such a wonderful feeling. You get to share knowledge and converse with other smart, talented, passionate people. Whether you’re going to a local user group, answering forum questions, or having an informal meet up with local developers you’re giving back your knowledge and learning from others. I was terrified the first time that I went to a developer group. I thought that I would get noticed as some kind of fraud or n00b who didn’t know anything. Instead I met some great developers and reconnected with old friends and former co-workers. It’s been a blast and, as a result of my tentative involvement, I’ve restarted the local PASS chapter. Whatever you do (blog, newsgroup, StackOverflow, MSDN, user group), involve yourself and do it with passion. There’s nothing like giving back to the community that you’ve learned so much from.
I’m calling out these folks to play along with our fun game: