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?
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.
9Agreed, 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. Jun 17, 2011 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 Jun 17, 2011 at 14:20
I recall I once had a professor talk about his first job at IBM. He had very similar feelings, and for the first 4 months was terrified they were going to fire him - he feared they'd find out he didn't know nearly as much as his coworkers (which was to be expected since he was pretty fresh). Turned out, there was nothing to worry about and he worked there for years (before becoming a professor). Jun 17, 2011 at 14:26
2Absolutely, 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.– PSUJun 17, 2011 at 15:21
2absolutely. 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 :)– gbjbaanbJun 17, 2011 at 15:52
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!
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.
great quote that one, and soooo true. Jun 17, 2011 at 14:35
1Beware those teaching nonsense, the more they teach it the more they stand behind it. Jun 17, 2011 at 16:10
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.
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. Jun 18, 2011 at 1:46
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.
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.
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:
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.
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").
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.– ShaunaJul 15, 2011 at 16:33
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.
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.
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.