Working in the computer field is a challenge. You are constantly chasing a moving target. In most jobs, once you learn the basics of your job, you can pretty much do the same thing every day until you retire. Not with computers. The field of computers changes so fast that you have to constantly try to keep up with the latest developments. If you don't keep up, then the job you are doing today could very easily dissapear and you will find yourself without a job. I often tell anyone who is considering the computer field for a career "If you are afraid to learn new things, don't get into computers. You are going to be learning something new every day." People who prefer the same old routine at work every day for the rest of their lives are bound to be dissapointed. You have to constantly be able to adapt to the changing landscape. There will always be something you don't know how to do, but will have to do anyway. You have to figure out how to do this. This often requires a lot of logic. You have to look at a problem and reason out, step by step, what the problem is and how to fix it. This is not an easy skill to pick up. It requires practice. I don't think you need to be any more 'intelligent' than the next guy to do this, you just need to practice at it. It's a skill, just like any other. The more you practice, the better you become at it. I've been doing this stuff professionally for 12 years now. It comes fairly easy to me now. This is just because I've had a lot of practice at it and I know what mistakes to avoid. It doesn't make me any smarter than the next guy, just more experienced.
When I first graduated college, and for the first few years after that, I constantly worked in a state of panic. There was so much I needed to know to do my job, but I didn't know it! My God, if I don't learn this stuff, I could lose my job! These days, my point of view has mellowed to the point where I don't worry about it. I know enough to do my job. If I need to know something else, I can learn it. That's why I'm not afraid of tackling new, unfamiliar things - such as the guitar. I know that as time passes, I will get better. You just have to get past that point at the beginning where you feel overwhelmed by all the stuff you have to learn. I'm beginning to think I'm entering this stage again at work.
Lately, it's become clear to me that my skills in SQL are sadly lacking what they should be. Every job that I've had for the last 6-7 years has required the use of SQL - some of it very complicated SQL. Considering how long I've been doing this stuff, my knowledge in the area is very basic. I have come to the conclusion that I need to greatly improve my abilities in this area. I think I need to spend a lot of my spare time over the next few weeks/months brushing up on my SQL skills. I'm trying to decide the best way to approach this.
Back when I was first learning .NET I got it into my head that I would need to earn a Microsoft certification in the subject, in order to prove on future jobs that I could do the work. The first certification you can earn in .NET requires the passing of three certification tests. I passed the first two. I never got around to taking the third test and getting that certification. The reason I never finished that last test was that around the time I was studying for it, I found a new job that did not require .NET. I was back to doing what I know and what I love - C++. I figured, why bother with the certification if it is not something I'm going to use in my job anyway.
I had always had a low opinion of certification tests in the past. Why the heck should I have to take a test to prove I know how to do something? Just give me the work and I'll do it. I can figure it out! When my circumstances at the time forced me to reconsider this outlook, I began to realize just how useful these certification tests are. While studying for these tests, you are forced to learn a lot about the subject. If you are going to be tested on the subject (at a cost of >$100 per test), you are going to make damn sure that you don't waste that $100 you spent on the test. I could very well have just started doing the work and muddled along, and things would get done. The problem is, I would not have been doing them well. In other words, I may have done the job, but I would be doing it poorly. There is a right way and a wrong way to do things. I was doing it the wrong way. By taking the tests, you learn the right way to do things, thereby becoming a 'master' at things. I think the test it self is largely unimportant. It's the effort of studying for it that is important. In retrospect, I'm glad I took those two tests. They made me a MUCH better .NET programmer than I would have been had I continued to muddle through. I've been at my new job now for 9 months. In those 9 months I've largely ignored .NET. I've often considered going back and taking that last test and getting that certification so at least I can say that I finished what I started.
So how does my need to learn SQL and my past experiences with the .NET certification tests relate? Here is how. I've been seriously considering pursuing an MSDBA certification (DBA is short for Database Administrator). DBAs are generally known as experts at databases. By pursuing this certification I can solve my problem with my lack of good SQL knowledge. There is some overlap when it comes to the certification tests for MSDBA and the MCSD (the .NET certification). This means that if I take the tests in the right order, I could conceivably acheive the MCSD certification, then the MCDBA certification. This would not only 'finish' my knowledge of .NET, it would solve my SQL knowledge problem, and give me a potential new career path to boot - DBA! I've already got the books I need for this. I'm just not looking forward to the months of studying and the hundreds of dollars worth of tests.
I need to give this some serious thought.