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?


I like to come up with a fun idea and work on it in my spare time, or even get together with a few other like minded people and come up with an idea and build on it.

Also keep on top of blogs / podcasts will help keep your mind on track. As well as always reading books on the subjects that inspire you, you will always perform better when you are doing something you enjoy.

+1  A: 

Jeff has an article about this: For me, three things (in combination) work really well:

  • Read technical books,
  • Be active in online programming communities (SO …),
  • Do some programming projects in your free time.
Konrad Rudolph


Maintain a list of To-Read books and knock em off one by one. Take a look at bookshelved to keep a list - and check out what your friends are reading.

Learn a new language every 5-6 months or so.

If you have a 9to5(+) job, its pretty hard to do projects on the side. However sometimes you get the bug during a lull.. and its pretty invigorating to learn something new. I tried Rails that way.. never used it to earn money. But It's opened my eyes a little more. Or build Tools that scratch a personal itch.

Finally there're a lot of soft skills involved with software - that take real effort and patience to master.. Read to get better.

+10  A: 
  1. Write code in your free time.

  2. Sometimes the best way to learn is to teach.

    • Answer questions on Stack Overflow
    • Start a coding related blog or podcast
    • Teach a programming course at a community college
Chris Upchurch
+1  A: 
  • Read other peoples code. See how someone else chose to solve a given problem.
  • Write code. The best way to learn is to do.
  • Get out of your comfort zone. Pick a language you've never coded in and try it.
  • Read books, listen to podcasts, browse good programming centric blogs as others have suggested but remember its hard to keep up with the "latest and greatest" technology without getting overwhelmed. Stick with the basics, for example get a book on Software Patterns or OOP principals and build from there.

Things that work for me

  • Teach
  • Blog
  • Learn
  • Read

I think the single best thing I ever did was to learn objective C in my spare time - It made my appreciation and understanding of the object-oriented thought process (which I already thought I had a pretty good grasp of) increase orders of magnitude.

It's also great to find likeminded people and just talk about whatever comes up. You can guarantee that some of your colleagues have been learning about things you're not aware of, and vice versa, and sharing this makes us all a bit more well-rounded.

Chris B-C