1

This question already has an answer here:

I am hoping to get some advice here if possible. I started an internship at a recently, and I came from college with a web development degree. My degree involved mainly front end design and development.

Recently I was asked to develop something which is way out of my depth. My boss asked me to begin working on a feature using a programming language I never used before which was going to be implemented in a product that is currently being developed at this company. This language and the development environment were both completely new to me. One of the other guys on the team was assigned to guide me through setting up everything and getting started.

Here is where I am struggling with my task. The guy who was assigned to help me spent 5 minutes with me and flew through everything that had to be done in order to begin the task I was assigned to do, and by the time he was finished I felt quite flustered with what was required of me and what had to be done.

I don't think this would have been as bad if I was told that in a few days I would be starting to use a new language and given some time to go over it but I was taken from working on one thing and told to begin development on this new feature straight away. I don't want to have to call the guy who was assigned to help me every 5 minutes because I haven't a clue where to even begin this and plus the fact that he has his own work to do, which I don't want to be distracting him from, but I feel unless I don't ask him for constant help I won't get any of this work done.

I understand that internships are meant to help you gain knowledge of what its like working in an actual development role and introduce you to new languages among everything else, but I feel like I've been given something that is too difficult for me to do and as I've said, is completely new to me, and as a result I don't know what to do from here on.

marked as duplicate by David K, gnat, Jim G., scaaahu, Alec Aug 8 '15 at 11:10

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 3
    I love assignments like this. Instead of thinking about it as a problem because you don't know anything about the language or the environment, think of it as both an opportunity to grow and learn, and an opportunity to show your team what you're capable of. Follow the advice of the answers here and you'll do just fine. Remember, communication is the key: if you're stuck, or need some specific help, don't be afraid to ask. Keep your boss up to speed with where you are so they can intervene early if another resource needs to be assigned to help you. – DrewJordan Aug 7 '15 at 21:15
  • Is this a temporary internship for class credit or a job? – Andrew Whatever Aug 7 '15 at 22:15
  • Mantra for the working world: "if it was easy and obvious, they wouldn't need me." – keshlam Aug 8 '15 at 3:58
  • I disagree that it is a duplicate question as an intern engagement is different from (although similar to) being out of depth in a new job. Coping mechanisms overlap but their are significant differences in the relationship and expectations. – simbo1905 Aug 8 '15 at 6:12
  • Can you please tell how long the intern placement is in duration? Also are being paid? – simbo1905 Aug 8 '15 at 6:13
5

The first step is to relax. They know that it's going to take some time for you to get up to speed.

Step 2 is to figure out a couple of questions to ask the guy who is supposed to help you. The questions should be focused on where to find answers to questions- e.g. "Where is the documentation on the language/development environment/whatever?" Write the answers down.

Step 3 is to start reading and doing whatever you need to do to figure out how to do what they've asked. Continue to ask questions and write down the answers as needed. Good luck!

  • 3
    And the first time you forget to write the answers down, and have to ask the same question twice of the same coworker - go find an empty room with a whiteboard, and write out "I will always write the answer down" 100 times ;) – Air Aug 7 '15 at 21:44
3

In addition to the previous answers, never let someone fly through showing you how to set something up etc. It is a waste of their time and your time.

Make sure your fingers are on the keyboard. Depending on whether you write or type faster, have either a notepad and pencil or an editor window open. At each step, do the step as instructed by your mentor then write it down. One advantage of an editor window is that you can often use copy-paste.

Doing it that way makes sure you have notes of everything you need. It prevents the teacher from going too fast. There is no advancing to step 3 until the learner has done step 2, has their own record of how to do step 2, and is now ready for step 3.

This method also has the advantage that the learner's preferred learning style does not matter. The learner hears the information, types the information, and sees the information on the screen.

It does take longer than "fly through", but is much more effective, reducing repeated questions.

  • 1
    Words to live by. When I do training, I make sure the trainees are "driving." Some people are tactile learners, and they need to have "Hands on" to learn. Show and Tell doesn't work for everyone. – Wesley Long Aug 7 '15 at 22:15
1

The easiest way to complete a task in a new environment and programming language is to have code examples of similar tasks. Make sure to ask your mentor (the guy that's been assigned to help you) if there are repositories of such code.

The other thing to remember is that the goal is to complete the task, not to learn the new language. This might sound strange, but it's very possible to write decent code to accomplish what needs to be done, without having delved much into details/subtleties. Just remember to test thoroughly and get code review from your mentor.

Last but not least, you say you feel you need to ask your mentor for "constant help" and "every 5 minutes". First, you should not feel guilty about needing to ask for help, and you should not be shy about asking this guy. His job, whether he likes it or not, now includes helping you. Second, you should not be bugging him constantly. Think about it. Given that a new concept typically takes longer than five minutes to process, why exactly would you need to buy him that often? A more realistic estimate is you might need to bug this guy every half hour or hour. In any case, you need to work on asking a constructive question that will give you answer you can work off of for an hour. That's not easy to do but is even more reason to spend some time considering how to do so.

1

The problem here is the fear of failure. The only failure is to not learn something new in your placement. Delivering a feature for a product would be great; but getting halfway only in the time is still a successful placement if you show progress and a good attitude.

As a person who has had to figure out what interns can or should work on in a short time the thought process is usually "Well they cannot do high risk client work that is too much pressure and real risk. We need to give them something that's real but not really urgent. Let them do that feature which is on the back burner. If they come up with something, great, if not its no loss. But let's not have them say we gave them boring work or that we used uncool tools and languages."

This leads to the person picking a project that they would wish to be given themselves. The expectation is not that you are amazingly successful in your project. The hope that you are excited by the new tools and the opportunity to learn and that when you leave you thank them for letting you do something interesting using real tools and languages that are commercially useful that may help you get a job.

The reality is that an experienced person guiding interns should have a flat zero expectation that the intern does anywhere near the same output as a regular employee. Highly skilled jobs like programming you would expect people to take many months to be productive. No project that is handed to an intern is ever a perfect size for that intern to finish inside their time. So many intern projects are left incomplete. Crafting a perfect project tailored to an intern to make them successful would be a huge amount of work for the employer. So you are thrown something that they believe you have some chance of getting into. What employers are really looking for is a "can do attitude" and making progress.

So my advice is to take a deep breath and decide "the best outcome is that I demonstrate progress" and set the personal expectation "this time I may not finish the race" with the goal "if my first real job throws me the same sort of task with the same tools I will have learnt enough on this placement to succeed next time". You are supposed to get something out of the placement and that's experience. A real project is the best learning aid.

Some practical advice:

  1. Google, Stackoverflow, blogs and tutorials. All developers learn by them. Spending a load of time in the office learning is fine when that learning is about the language and tools you are using. Remember the personal goal to be as well armed when you leave as you had wished you had been when you arrived.

  2. You are correct to not pester the person who is supervising with anything you can find out on google or by extensive trial and error. Programmers are the sum of their trial and error learning. That takes time so you need to expend time on it. If you are stuck set timer for a half hour and work on some other task then come back to what you are stuck on. Other tasks can be sketching out or researching how you might do the next task beyond the one you are stuck on. Or doing the next online tutorial or reading a chapter of a manual. Then when you come back to what you are stuck on you are likely to get unstuck.

  3. If you are still stuck go to the person and clearly explain the problem and what you tried to get around it. You can also talk about the next piece of work and outline what you were thinking about it and ask if you are on the right path. Such bigger interactions will naturally be spread out so less of an interruption. By showing that you made a concerted effort to solve the problem yourself the person will see that you are trying hard and only asking for help when you need it. By asking for up front input on your next task at the same time you move the conversation from what you cannot do to what you aspire to do.

  4. Have fun. Yes right now your terrified of failure so this suggestion sounds ludicrous. Yet you have nothing to fear but fear itself. You worked hard for this opportunity so smile at the computer screen and say "this is the opportunity I wanted I could not be happier to be here" and laugh at your own bad joke. People climb mountains and run marathons for "fun" and this is the marathon you set yourself on. If you enjoy each small step as a victory and smile and joke with your colleagues you will get to where you want to be.

Good luck.

  • 2
    Corollary to #1: Not all developers learn the same things from Google, SO et al. Bad developers take the search results on faith; good developers question and verify. – Air Aug 7 '15 at 22:23

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