This morning I read an article on Michael Hyatt's blog by Jon Acuff, the author of Quitter: Closing the Gap Between Your Day Job and Your Dream Job, in which he said something that really inspired me. He begins the article by talking about a recent experience he had as a guest on Dave Ramsey's radio show. He mentions how nervous he was and how he felt like he doesn't do such a great job when he's on the radio, especially compared to Dave, who just seems so calm and natural doing the show. After the show Jon came to the realization that, while this was only his second time on the radio show, Dave has been doing it for 17 years. That's when he came up with this principle:
"Never compare your beginning to someone else's middle."
That is a powerful statement, and one that I think we should pay attention to as software developers. You see, Dave is a seasoned professional. He's done the radio show enough that it's no big deal for him, it comes naturally to him now, and he knows what he's doing. Jon, on the other hand, is what we in the IT industry would call a "n00b". He has only been on the radio a couple of times and has not yet reached his comfort level with it, much like someone just getting into the world of development.
It's easy to look at a seasoned professional and say, "I want to be like that." It's also just as easy to get discouraged when it doesn't happen. You shouldn't compare the beginning of your development career to the middle of someone else's. You're not going to jump on a bicycle and beat Lance Armstrong the first time you try, and you're also not going to be able to out-code the likes of Ben Nadel or Sean Corfield the first time you open Eclipse. It takes practice, it takes experience, and it takes making a whole lot of mistakes so you learn how not to make those mistakes in the future.
As a newcomer to the development industry, you should certainly aspire to be like the advanced programmers you look up to. Read their blogs. Hear what they have to say. Learn from their examples. Don't be afraid to ask questions. I can say that we, as a ColdFusion community, are pretty good at helping folks.
But we could be better.
I've seen developers who are eager to answer any question they can on a web forum or mailing list, but get annoyed every time the new guy in the cube next to them asks them something. As seasoned professionals, we should also step up and take notice of those around us who are aspiring to be good developers. Take the time to work with them, to "show them the ropes" so to speak. It's easy to say "just use createObject and pass it to the CFC", but we sometimes forget that the person on the other end of that conversation may have never even seen a CFC before. Things that are no big deal and come naturally to us may actually be scary to someone who's never done it.
Here at my office we have a good mix of developers. We range from guys just out of college who have their first job, to guys who have been doing this for a dozen years or more. As one of the more seasoned developers, I'm going to make a point of trying to help the "n00bs" more. Instead of just saying "use createObject()", I'm going to take the time to explain what createObject is and how you use it. I'm going to get in front of a whiteboard if someone doesn't understand something and draw it out and explain it as best I can. I'm actually kicking around the idea of starting a weekly training session where we all get in the conference room for an hour or so to go over some new programming concept or feature.
Jon's blog post really made me think, not only from the perspective of a beginner aspiring to be a good developer, but also as an experienced developer who works with beginners. So while it's true that you should never compare your beginning to someone else's middle, I also think that those of us in the middle have the opportunity to help shorten the gap.