10 - You don't know that you don't really know anything.
9 - You're just bragging, and you probably aren't as good as you think you are. Even if you are really this good, you lack the political skills to see what picking a "9" says about you. That, or you're pretty well-known/worshiped in the industry (i.e. you wrote a book once, and it has a nickname like "The __ Book" or an acronym that most developers would recognize instantly), and not afraid to throw your name around.
8 - You're damn good and you know it, but you're smart enough to realize the stigma of picking 9 or 10. You'd better be able to back it up.
7 - You're very good, but you know you have a lot to learn.
6 - You're competent, and have a lot to learn, but aren't very confident in your abilities. Are you sure you aren't a 7?
5 - Decent junior dev. You're just out of school, and smart enough to realize you don't really know anything about real-world programming, but you know how to hack together code.
4 - Mediocre junior dev. You're just out of school, but your basic coding skills leave something to be desired. You had a hard time just passing most of your programming classes, but for some reason decided you still want to pursue a career in software development. You also don't really believe in yourself, so why should an interviewer?
3 or below - If you have so little confidence in your programming ability, why are you applying to programming jobs?
So the "correct" answer is probably 5-7, depending on what kind of job you are interviewing for. An 8 has enough experience that she wouldn't be asking this question.