I've been a software engineer since graduating from University 4 years ago with a top grade Computer Science degree. However, I feel that in my current job I may be going a bit rusty as I'm not coding as much as I would like. I don't code as much mainly because we use great tools that hide a lot of the code from us. E.g. we use Eclipse WTP to develop web services and it hides most of the low level stuff; we would just write the business logic.
I therefore went for an interview the other day for a software engineering post in another company and was doing quite well until the interviewers started asking me technical questions. I got questions like "What is polymorphism?" and "What is encapsulation?". Now these questions should not be hard for a software engineer of my experience but I found it tough answering them! I found it difficult mainly because I don't talk about these concepts day in day out. I know what they are but I found it hard to verbalise my answers. I felt stupid. I know I probably should've been better prepared for the interview i.e. looked over some typical software engineer tech questions, but then I thought a software engineer should know these types of questions off the top of their head.
How do you guys stop yourselves from going rusty if you're in a job that isn't coding heavy? Do you work on projects in your spare time? Do you read? If so, what books do you recommend?