Remember when you were in school? They'd assign homework like, "Read chapter foo and answer the questions at the end of the chapter"... projects consisted of, "Do this, you have 2 weeks."
Let's face it. Anyone in the real world for any amount of time knows that's not the way things really are. Dates move, requirements change, and oh yeah... the answer isn't really something you can ask about because you're typically doing something new... that no one else has done. No checking the end of the book. No blowing it off and taking a bad grade. The rules are different.
So, on top of this is the interview process. This is where they ask you a series of academic minutia to see how you work under pressure. By the way, if you admit to the fact that you don't like academic minutia or that work would not typically be like this, "BZZZT" sorry game over.
In software engineering... academic minutia comes in the form of algorithms. An algorithm for those of you outside the industry is a small piece of code to take care of some ridiculously small simple function in the most mathematically quick manner.
Example. I have two long lists of numbers. Find me the numbers that match between the two lists. In mathematics we call this "the intersection of two sets."
Sadly, when asked a question of this ilk; the answer, "Um, use the "FindIntersectionOfTwoSets function" isn't good enough. No, that's apparently be a smart ass, even though... the advanced programmer knows that someone has already solved the problem and it's best not to reinvent the wheel.
So, you start asking questions... see this isn't a test of whether you can belch out an answer, they want to see how you think. Under pressure. Because sure enough, if you write software to categorize web images, at some point, you will need to solve this problem under pressure and explain how you did it. (Savants be warned, your talents are not requested)
In all honesty, I think our industry and in general the professional world is broken. Younger and younger managers and dev supervisors who don't understand the technology and the people they are managing. As a result, you hire in kids who can belch an answer because they can't think for themselves or worse... can't solve a simple problem.
So... one final question I've recently heard asked of an interviewee:
You are in a boat in a pond. You throw a large object out of the boat which promptly sinks. Does the water level of the pond go up or down?
If I were to give my gut shot response: That depends entirely how much splashing around she does when she realizes you've thrown her out of the boat.
Anyone want to start a real software company with me?