Imagine for a moment you have a mechanical engineer friend named Bob. Bob works for a company designing the hydraulic car lifts used by auto mechanics. Bob's good at his job. He's a great engineer and knows everything there is to know about hydraulic lifts. His team develops and designs all sorts of lifts and he's been doing this a long time.
Would you go to Bob for advice when your car stops working? "Hey, Bob! My power steering pump went out, could you take a look?". Being a mechanical engineer I'd bet Bob would be able to pop the hood of your car, reverse engineer the entire steering mechanism and eventually determine what's wrong with your power steering and how to fix it. If this is his idea of a good time... Does this mean Bob is qualified to do this work for you? No, fixing this part requires a working knowledge of how all the pieces in this system fit together. You need experience with this make/model/year or a general understanding of how this design is intended to function. You need to know what commonly breaks under the weather conditions in your local area. You need to call a mechanic, this is what they do and this is what they're good at!
The same is true with software/computer engineers. Just because I know how to make computers do things and do it really well doesn't mean I have any clue whatsoever why your computer stopped turning on. I design and test software targeted at enabling developers to produce software applications for Android on their Windows/MAC PCs. This in no way qualifies me to help you root cause your runDLL error. I know plenty of computer engineers who can barely turn on their PCs but when they go home at night they have to stop at their in-laws and setup a new wireless router. This makes no sense to me, there is an entire industry of people who do this for a living, they're called "Tech Support".
This is a completely different field of Computer Science and requires intimate knowledge of commonly used software/hardware/makes/configurations. People do this for a living full-time and it can take years to get good at it. There are people who specialize in Windows, they've spent decades learning everything they can absorb about how it works and how to fix it. They'll never be done, there are literally millions of lines of code, which means billions of ways it can break. Did you know there is not a single person on the planet who can build a smartphone or laptop from scratch? These modern technological marvels are SO complex they require entire legions of people to maintain, develop and improve. Even the simplest components, for instance your WiFi radio: You might be able to pull 10 of the word's foremost leading experts into a room and between them understand generally how the thing works and how it's built.
(Image credit: http://xkcd.com/627/)
I've done what we suggested Bob do above, I've taken people's computers apart (software and hardware) and analyzed each moving piece, tested it and familiarized myself with it enough to deduce what was wrong. "Ah ha! This part shouldn't be doing that... I'm not sure what it's supposed to do, or who made it, or who should fix it, or what part to replace it with ... but I know this part is causing your problem!" It's not my idea of a good time, I would rather watch paint dry.
Anyways, my rather rambling point is that most of us software engineers are about as qualified to figure out your computer problem as Bob is to fix your power steering. There's not some magic knowledge, or secret club that grants us unlimited access to all things that can go wrong. Just a tried and true method for resolving the issue and you'd be surprised how effectively you can help yourself.
No comments:
Post a Comment