I just finished college a couple of months ago and I'm taking time out to improve my knowledge. I love programming but I feel like I don't know enough to be confident if I went for an interview. Last night I was browsing through questions and came across a question that asks interviewees how to work out a linked list. I learned these at college but if I was asked on the spot how to do it I wouldn't know. So that's another thing added to the list of what to learn.

This is when the anxiety hit me because I have so much to learn in so little time (at least it feels that way). Upon introspection, I think this anxiety is related to my perfectionism even though being perfect isn't rational e.g. Shakespeare and Einstein failed 80% of the time.

So the questions are, have you felt this anxiety of not knowing enough? If so, how did you deal with it? I suppose there's a point in time when you begin to feel comfortable in your abilities?

  • 1
    There have already been several questions asking about not knowing enough when leaving uni or college. – gablin Oct 26 '10 at 14:23
  • 1
    This reminds me of Monsters vs Aliens - "There's a jar you couldn't open. What was in it? Pickles" – Skizz Oct 26 '10 at 15:53

12 Answers 12


It's not about knowing everything. It's about knowing where to find the information.

I try to keep the core language I am using in memory. The rest I am merely familiar with, so I use MSDN a lot to look up things. Lately, I have been trying to get through the C# specification so that I can think more deeply about the language itself.

But I learn best by doing. Which means ultimately I am doomed to re-implementing Linq to learn lambda expressions, and such.

As a programmer, I am capable of doing anything that the top developers can do. It just takes me a little longer. :)

  • Correct. You don't have to know it, just where you read it and the concepts – gbn Oct 26 '10 at 18:36
  • I agree, but how do you use this insight in the interview situation? – LennyProgrammers Oct 27 '10 at 8:51
  • 7
    @Lenny222: just be honest. If you don't know something, "I don't know" is a perfectly legit answer, especially if you can follow it up with "but this is how I would figure it out." – Wonko the Sane Oct 27 '10 at 13:00

Some people:

  1. Thought they know and they do
  2. Thought they know but they don't
  3. Don't know they know but they do
  4. Don't know they know and they don't

To me, 1 > 3 > 4 > 2

The fact that you know that you don't know everything is already knowing something. Learning takes longer than a lifetime, pace yourself and convince yourself that you can never learn everything; so is the genius in the next cubicle.

Knowing is one thing, applying it is another. Apply what you have learnt and be open-minded for new ideas and let the passion leads your way. Sounds philosophical? Maybe, but life is too short to be so tensed up. :P


90 % of programmers don't know they don't know stuff. So you are already in the top 10%.

The jobs that you will be going for are junior positions. The people looking at you don't expect you to know everything that they ask, if you did you would be a senior programmer. They aren't looking for an already knowledgable programmer, but one who has a grasp of the basics and is willing to learn.

So a third of the questions they will expect you to know, a third of the questions they expect you to not know, but have an idea what they are talking about and have a good try at answering. And the last third will be questions that try to figure out your personality, your learning ability, and willingness to learn. If you get the first third right, and show that you are enthusiastic about programming then you'll do alright.

Disclaimer: statistics are completely made up. :D


The best way to learn, is to do. Admitting to your self that you don't know something is the beginning of knowledge. If I were you, instead of taking time out trying to learn what you think you need to learn I would put myself out there and try to find a job. Get some interviews under your belt, then you can get an idea of what you need to know to pass an interview. Who knows, you just might get a job and then you can have a corporate-funded learning experience surrounded by experienced people who can help you on your journey. Remember, knowledge is a journey, not a destination.


This is when the anxiety hit me because i have so much to learn in so little time.

Granted, you have a lot to learn, but you have all the time in the world. You are only 21 according to your profile. I'm 63 and still learning. Sure, I worked out the linked list thing a few decades ago, but there was (and is) always something else.

Always having new stuff to learn is what makes programming still fun for me even though I've been doing it for 40 years. If I knew it all at your age, it would have gotten a little boring by now.


I'm surrounded with a lot of really good programmers, and I've only been programming professionally for a year, so I feel this stress.

When these guys are getting excited about learning Clojure and Scala, I can feel overwhelmed. After all, I'm still confused about jQuery, only passable at Hibernate, and clueless with web services.

What I find important to remember is that I don't learn much at all in a day, but I can learn a lot in a month. And as the months pile up I find that I'm turning into a knowledgeable programmer in certain areas.

As long as you are committed to continue to learn, you will surpass many of your classmates, even if you forget everything you ever knew about linked lists.


Interview anxiety is natural. You're going to be under a spotlight in the interview. If they're doing their jobs, the interviewers will ask you questions you don't know the answer to. That's the only way to test the boundaries of what you know and also to gauge how you react when faced with a problem where you don't have the information. This will be true regardless of how much you study.

Knowing that, there's only one thing to do: take the interview. What's the worst that can happen? They'll hire someone else (which is what they're going to do if you don't apply) and you will have interview experience to build on.

Remember, the interviewers are not trying to embarrass or belittle you (if they are, they're not doing their job). They have better things to do with their time. In fact, the reason they're hiring is because they have more work than they can handle without someone. They just want to find the right person to do that work.


Expect that you don't know enough. That's a sure thing. Either because you have gaps or because people just want to see how you handle situations you're not familiar with.

Break problems down into solvable or familiar pieces. If you don't know something important, try to direct the talk to something you know.


There will always be more stuff to know than you, or anyone else, can possibly know.

So you shouldn't really concern yourself, mostly, with whether you do or do not know something.

What you should have confidence in, is your ability to learn. If you have the attitude that whatever you need to know you can learn, then you will be fine.


Making a linked list is something you should have learned in college. The Java programmers never have to do so, because the standard runtime library provides a set of list implementations with different characteristica.

I would suggest that you - if you have gotten a job yet - dig into what you can learn of what is expected of you in your current job. For Java programmers that would be "Effective Java" you should learn by heart. The ecosystem these days is so great that there is PLENTY to learn just for the standard runtimes.


My perspective on this is to understand that what I need to know to do a task is often going to be a combination of research and applying it. I may not know all of what to do but I can figure it out usually. At least that is my perspective though there is something to be said for understanding how to play the game that can exist in some cases like interviews. Some people may memorize a hundred answers to try to handle various programming problems but others may just remember what the heuristic was and the general outline of what to do and correct themselves as they go. Technology changes enough that as I get comfortable with one thing up comes something new to add to my list of things to learn.

If you believe you are too much of a perfectionist, it may be worthwhile to see a therapist or counselor to try to work through this. I'm not saying all perfectionists need help, but for those that want it, it could be a very good idea.


This sounds like a perfect example of the Dunning-Kreuger effect: http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect

To very breifly summarize this: People who are unskilled frequently overestimate their ability, they don't know how much they don't know and this leads to overconfidence. People who are more skilled realize the flaws in their ability and (somewhat paradoxically) this actually leads to lower confidence.

Just remember that most people do not know how much they do not know. The fact that you are asking this question indicates a level of self awareness that many people simply don't have. There are many studies on this topic from many different authors.

Assuming that you need to know everything is a misunderstanding of the learning process because there will always be things that you don't know. Learning more will still not change the fact that there is more yet to learn, the main thing that changes is awareness of how much you know. Because of the staggering amount of information in the world of programming you can't know everything, so once you get beyond the fundamentals the really crucial skill is being able to find the information that you need when you need it.

As for the confidence in interviews part, just remember that your lack of confidence might actually be from having more, not less, skill/knowledge in the area that. Hopefully that helps!

Not the answer you're looking for? Browse other questions tagged or ask your own question.