I've never felt that I had the same "goals" as other programmers. I like to make stuff that solves a real, concrete problem. I like it when my code runs for a long time and doesn't make any logic errors. I'm great at docs, debugging and code maintenance. I love to learn, but I love to make stuff work.
I'm really good at reverse-engineering. I'll use netstat to see who is talking to what, and on what ports, and at what times. I like to create documentation when it doesn't exist or it is wrong. I like to share what I've learned. I'll go to great lengths to get factual information.
I feel that I can do almost anything. If I don't know something, I'll go to great lengths to learn. If I need resources, I'll find them. But I struggle to get my knowledge, talents, and passion across to other programmers.
For example:
Interviewer: Tell me about a project you did.
Me: I saw a need in our business. There was valuable data in a system that no one could get to. The data was of great use to the business if the right people could see it. I wrote a Java program that connects to API and loads the data into database. I wrote some PHP pages to display charts and graphs based on my knowledge of the business problem domain. I profiled my code for memory leaks. I made it very fault-tolerant. The code I wrote stayed up for months at a time. I wrote several layers of monitors for the application. I get paged immediately on my phone if anything goes wrong. Everyone was thrilled.
Interviewer: What version of Java did you use?
Me: 1.7
Interviewer: Why didn't you use Java 1.8? It has lambda expressions. Why PHP? Why didn't you use AngularJS? Clearly you don't know how to code and are useless.
-----
I don't know how to "defend" myself when the interview goes this way. What should I do?