No, I can't fix your computer!
"Hey, do you know why my computer won't boot up?"
"I keep getting this error message, what's the deal?"
Have you heard any or all of these before? Well I have, and if you have a job in computers or are a student in computer science/engineering, chances are you have too. I spent a good part of my college years trying to help people with their computer problems, but then I realized something...I am not a computer repairman. I am a software engineer (with a degree in computer engineering), so I spent my college years learning algorithms, design principles, programming, web development, architecture, etc. I did not spend my time studying computer diagnosis, network troubleshooting, virus prevention/recovery, Windows specifics, nor anything associated with computer repair. So get it through your head, I can't fix your computer!
This may come as a shock to many people, because they believe that if I cannot fix their computer, then I don't know a lick about computers. I'll get the usual responses:
"Aren't you an engineer? Obviously not a very good one!"
"Don't people pay you to do this?"
"What the hell do they teach you computer people anyway?"
All this time I've been working towards being a "computer expert", but I'm really just a know-nothing with a degree. For a while I mistakenly believed this, and thought that I should know how to fix a computer. So, I started reading up on some troubleshooting practices and the like, but I didn't do it because I liked it, I did it because I thought I should be doing it. I learned a little, and might be able to diagnose simple problems, but I grew tired of learning how to repair computers and gave it up, cursing myself for not being good at something I claim to be in my area of expertise, that being computers.
After joining the professional world, I learned a very valuable lesson. "Computer expert" can refer to a very wide range of occupations. There are network experts, processor architecture experts, web development experts, platform development experts, database experts, the list goes on. To be a software engineering expert, does not require that I be an expert in fixing computers, it doesn't even require that I be an expert on anything else related to computers. Sure, I'll want to be aware of network protocols, and database principles, and operating systems theories, but I don't need to be an expert in them. What I do need to be an expert at is programming, software architecture, design principles, algorithms, data structures, web frameworks, etc. That is what matters, but it turns out that in my quest to be an expert in my one niche, software engineering, I'm learning a lot about computers in general, perhaps even enough to troubleshoot certain problems that may arise with windows, or a piece of software, or my machine's hardware. These are usually simple problems, but when it comes to the really tough problems...I'll leave those to the experts.