Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My best friend just started his internship a month ago. The problem is he is discouraged. He was a good A+ student at school, and he is feeling that he doesn't know anything at all. The issues he is working on, although they are on languages he feels comfortable in, seem so alien to him, he said. He's getting really discouraged, like he does not know the code base at all. I keep trying to tell him that it will just take time and that he is expected to have lots of questions. What should I tell him?

share|improve this question
add comment

closed as off topic by Yannis Rizos Mar 7 '12 at 5:37

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

12 Answers

Keep telling him that. He just started a month ago. Knowing the language does not mean he will automatically comprehend a project that is most likely much more complex than anything from school. It takes a while to get familiar with an existing project's code, even for us pros. He needs to relax. If he has questions he should consult whatever project documentation he's got, or ask a mentor or more senior developer.

This is normal!! Everyone goes through it. He'll be fine if he stops panicking.

share|improve this answer
21  
+1 for this is normal! –  Gary Willoughby Jun 17 '11 at 13:56
9  
Agreed, my biggest mistake first starting out was assuming that I should already know everything since I was now in the professional world. My biggest suggestion is to ask lots of questions. –  aceinthehole Jun 17 '11 at 13:58
    
+1 Yup it's normal. I remember feeling that that I should quit my first job after only the first day. I'm really glad I didn't, as it's perfectly normal, everyone at the office understand this and (maybe this is discouraging as well) no one at the company expects any intern or recent graduate to do understand a thing for a few weeks, and to produce quality work for a few months or even years :P –  Carlos Campderrós Jun 17 '11 at 14:20
2  
Absolutely, completely, totally normal. I came to my present position with 10 years' experience, and was told by the hiring manager that he didn't expect me to be really productive for at least six months. He was right. –  PSU Jun 17 '11 at 15:21
2  
absolutely. In fact, its a common problem for graduates - they come in thinking they already know everything. They quickly find they're now clueless n00bs when confronted with a 6 million LoC product when the most they've ever worked with was 1000 LoC. Mind you, that applies to experienced new-hires too :) –  gbjbaanb Jun 17 '11 at 15:52
show 1 more comment

Nobody should expect an intern to know much more than just basic concepts. It is perfectly normal to feel overwhelmed but he is doing himself a disservice by not asking questions.

I would expect that if an intern working on my team was feeling overwhelmed that he would come to me for help. Although sometimes they don't. It can be a matter of inflated ego or pride, or perhaps just trying to impress, none of these things should matter to his charge.

EDIT: One more important note, I feel it is important for interns to be taught by other developers.

Did you ever hear the quote, "You retain 10% of what you read, 20% of what you hear, 50% of what you do, and 90% of what you TEACH".

Teaching others helps engrain complex design and concepts into the teachers mind.

share|improve this answer
    
great quote that one, and soooo true. –  Carlos Campderrós Jun 17 '11 at 14:35
1  
Beware those teaching nonsense, the more they teach it the more they stand behind it. –  edA-qa mort-ora-y Jun 17 '11 at 16:10
add comment

School problems almost always avoid the messy issues you have to deal with in a real code base, so it would be surprising if he wasn't feeling discouraged. Real code bases are generally much more complex and far from perfect. Tell him to keep trying. In my experience, it usually takes a good year to feel comfortable with a new, complex code base.

share|improve this answer
add comment

Get used to it. After seven years in the industry I'm still a noob, and it's a rare day when I don't learn anything new (and often surprising) about both the languages and the applications. Regarding the questions, a good reference, a couple good tutorials, and How To Ask Questions The Smart Way can be really very useful.

share|improve this answer
add comment

One of the hardest things I found in going from school to work was there was no instant feedback. No one gave me a grade after I finished something, in fact they barely gave me a "nod", it was hard to tell if I was even done! And instead of a final assessment of notes on a submission, I got an endless stream of erratic questions at irregular times from my coworkers/supervisors.

What I had to notice to stay sane, was that

  • Being asked questions is a mark of distinction - the broader and more open ended the better - it means they trust you to give a good answer.
  • There is no final grade - you'll be asked to change things constantly, that doesn't mean you failed, it's the nature of the beast. The goal is a good end product. That's easy to say, but hard to appreciate until you're in the middle of it.
  • The best mark of achievement is being given a harder problem - if it seems like the work is increasing in ambiguousness and difficulty and your manager seems less and less interested in how you are doing, then you must be doing very well!
share|improve this answer
    
totally agree. i am going thru the same for the last 3 months –  Ritwik G Jun 17 '11 at 15:20
add comment

You're supposed to be overwhelmed. I've never walked into a new job where there wasn't some kind of learning curve that left me feeling overwhelmed: even jobs where I was over qualified, there is that period of adjustment. Sometimes it lasts for days, sometimes it lasts for months. My current job is so constantly in flux that it lasted for years.

Work through it, master the tasks you are given. Don't be afraid to ask for help.

share|improve this answer
add comment

I'd be tempted to ask him a couple of questions to try to get behind the problem:

  • What did he expect?

  • Does he now know any of the code base?

The first question is about what expectations did he have. How similar to school was he expecting it to be? How alien are the problems really?

The second is the question of what does he have now that he didn't when he started. This is where there may be something that he does know and should get that he has improved some and does know some of what is happening.

share|improve this answer
add comment

I can tell you what I leaned in college did not prepare me for "real world" software development. Granted theory comes in handy, but practically, probably counts for naught. Regardless, just go with the flow and learn as much as you possibly can.

Maybe this book will help come to grips with stuff:

http://oreilly.com/catalog/9780596518387

share|improve this answer
add comment

Formal education in a trade or profession does nothing more than prepare you to begin learning how to actually do the work.

He will overcome the panic when he abandons the notion that he's supposed to already know how to do the work, and realizes that at this point he's really supposed to be learning how the work is actually done (in the "real world").

share|improve this answer
    
To add, I learned more about "real-world" programming in my first month at my first programming job than I ever did in school. However, school provided me with the foundations of basic programming, to give me something to start with. –  Shauna Jul 15 '11 at 16:33
add comment

Tell him that if he didn't feel overwhelmed, there wouldn't be anything to learn, he wouldn't grow as an individual, and would leave the job in under a year.

share|improve this answer
add comment

The dirty little secret is no one completely understands the code base, if it's of normal complexity for a commercial product. College prepares you poorly for this because all their assignments are fully self-contained original projects. You have to learn how to figure out the smallest possible part of the code you need to understand in order to complete your task, and trust that the rest of the code is doing what it claims to be doing. Colleges could do this better by assigning projects like making a chrome extension or something, but really, learning this sort of thing is the whole purpose of internships.

share|improve this answer
    
Indeed! I've worked in plenty of situations where I knew for a fact that I had a better understanding of a codebase than anyone else there; and I also knew for a fact that I didn't completely understand it, no sir. –  Carson63000 Jun 18 '11 at 1:46
add comment

If your friend was the star programmer of the team instantly, then he would be an idiot for not getting paid for it.

Being hired as an intern is implicit recognition of the fact that you are not productive yet -- if you were, you would be hired for real money, or the company is ripping you off. So like everyone else, I'd say relax, and use this experience to learn. Not only should you learn what you need for this job, but if you see that you lack background (let's say, in mathematics, or in Unix skills, or whatever), then make a note of it and continue to backfill even after you leave this particular job.

share|improve this answer
add comment

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