11 answers

How to prepare for an internship?

Asked Somerdale, New Jersey

I’m in progress of a computer science bachelor degree. However, I’ve only had two coding classes: an introductory class using Visual Basic, and C++. I do not feel that I have learned much and would like to be more qualified for future internships. How may I further increase my knowledge outside of school? #computer #computer-science #stem #software #softwareengineer #softwaredeveloper #technology #womeninstem #internship #science #computer #computer-software

11 answers

Grant’s Answer

Updated Trinity, Florida

I recommend looking for free coding courses or computer clubs to practice skills and improve your abilities and languages. GitHub is a great place for an open source coding community to get feedback, practice your skills, and develop a portfolio for employers to review. For the internship, research the company, make contact to determine what is available, and if it is paid or unpaid so you know whether you have to work or not while interning.

Grant recommends the following next steps:

  • Build a coding profile.
  • Research the companies you want to intern with and see what they are offering.
  • Determine if the internship is paid or unpaid.

Cody’s Answer

Updated New York, New York

as a student majoring in computer science what you have learnt in the course is definitely not enough for doing any serious work as an intern.

as someone working in software industry we usually seek certain qualities in intern students which are:

  • able to learn new things fast, full of curiosity. Sometimes even if you never tried the new language or new technology you should at least have heard of it and know something about it and able to show your understanding and intuition.
  • problem solving skills, many tasks in software industry is not really about programming language or coding but more about understanding the problem, breaking it down and attacking smaller problem one by one. Hence many times your analytical skills is even more important than coding ability.
  • Software Industry is a lot about programming but not always about it, language invariably is just the tool that you approach to model the problem and ultimately crack it. So other knowledge beyond programming language such as understanding the nature of computation, under standing the programming language theory itself is a bonus to help widen your horizon and able to view the world from a much higher perspective.

might be too abstract to be useful but basically the key is to "think" and "keep thinking".

when you see something you don't understand ask yourself why and once you find the answer to that question ask even more questions.

we may never know the ultimate answer of the universe (not it's not 42) but certainly we can have a reasonable understanding of the computer science.

so keep the learning and keep using your brain, practice small code projects, those are all keys to success.

Desiree’s Answer

Updated Portland, Oregon

This is a great question and highlights a common gap in university programs. Think of the companies you engage with everyday -- websites you visit, stores you shop with, or applications on your phone. Research information about those companies, like what technology they use or what skills they seek in their technical employees. That could set you in a good direction for self-learning.

Many employees attend conferences and present talks on their work. Looking through conference agendas also highlight trends in the industry that could shape your study.

https://events.google.com/io/

When interviewing with specific companies for an internship, I agree with other responses that researching a specific company ahead of time is always helpful. Besides the info listed on its website, you can also learn a lot about what the company is doing and what is important by reading its blog posts. For instance, https://blog.newrelic.com/

Desiree recommends the following next steps:

  • Research the technology used by your favorite companies
  • Read company blogs for info on the technology they use

Aditi’s Answer

Updated Foster City, California

Hello Gillian,

I am glad that you are thinking ahead about the future internships and are willing to put in efforts to learn more. From my personal experience of being a non-CS graduate to being a Software Engineer now, I would suggest focus on learning algorithms and data structures. You need to know and understand those basic concepts before applying it to the real world problems. And that is the basis of most of the interviews for fresh graduates.

Interviewers would look into how well you know a particular data structure - say HashMaps, Arrays, LinkedLists, Graphs, etc and then how well can you apply to that knowledge.

I would suggest looking at these hands on websites that help you prep for interviews and also learn the concepts -

https://www.hackerrank.com/

https://www.codecademy.com/

Aditi recommends the following next steps:

  • Go through the websites linked and practice more on concepts

Kristen’s Answer

Updated Portland, Oregon

From your question, it sounds like you are looking for resources to broaden your knowledge to be competitive for more internship opportunities. There are many online resources to help you learn more programming languages or other technical skills you may want to learn.

https://www.udemy.com is a great place to start and they often offer discounts as low as $10 per class.

Looking for online recordings of topics you are interested in is also a great resources. The speakers often list their sources at the end of their presentation.

There are lots of resources for women in tech as well

STEM internships

Many local colleges offer assistance to underrepresented populations in tech in finding internships as well.

There also look to be a lot of Women in Tech meetups in your area, which would be a great resource to ask one on one questions and find internship opportunities.

Kristen recommends the following next steps:

  • Look up online classes to broaden your knowledge
  • Look up STEM internships
  • Contact your local collage to see if they have any resources to help you find internships
  • Check out the Women in Tech meetups in your area to build relationships and opportunities.

Brian’s Answer

Updated Phoenix, Arizona

Research the company ahead of time and make sure I knew the company’s mission statement.

Rana’s Answer

Hi Gillian

This is a great to ask and important step towards your professional life. Please see below the items you need to pay attention to:

1-Expand your network ( Linkedin, Friends and Family, Social Circle). Although connections are not essentials for you to land your internship, however they are important

2-Don't get discouraged if your applications get rejected, stay positive and keep trying .

3-Apply for positions that you think you are interested in learning and developing skills for, not just for any positions

I hope this helps. Please let me know if I could be more of an assistant .


Regards

Rana


Neeraj’s Answer

Updated Bengaluru, Karnataka, India

Follow these steps:

Neeraj recommends the following next steps:

  • Be aware of a couple of different types of programming languages like Java,C / Python. Dig deeper into one and become proficient at using it to build things.
  • Build things. Just jump in, pick a project you like or pick one of the many you find on open source sites like github where your contributions are valued.
  • Also develop domain knowledge for the domain youre interested in programming in: this could be cloud / systems / AI/ ML, IOT, Android, etc.
  • Express your skills & experience well in your resume and contact companies in your domain for internship opportunities

Mario’s Answer

Updated Granollers, Catalonia, Spain

Personally, I like to learn from experience, creating my own software projects. In computer programming, learn by doing is maybe the most effective way to learn.

You don't need to create big applications or something useful to the other people. Sometimes it's just enough to do small programs for fun, which allow you assimilate the concepts you are trying to learn.

Also, consider that, for an internship, we don't usually look for a person who knows a lot of languages or paradigms. It's more important, on top of a solid base, to be a person that learns fast, it's open to learn new things and it's not afraid at having its own initiative.

Brett’s Answer

Updated Seattle, Washington

Preparing for an internship is a few parts:

  1. Recognize what companies want
  2. Getting that (from classes, tutorials, lessons, practice)
  3. Showing them you've gotten that.

Regarding #1 (What companies want). It's easy to read a job listing and to be daunted because companies WANT everything. But, realistically, they want someone "good enough". Specifically, here are some key elements that are often overlooked:

  • Can you take instruction? If you're going down the wrong path, are you able to take the hint that you should back up and explore another option, or do you get stuck in what you're trying to do?
  • Will you communicate when you're in trouble? Many students keep doubling down on the idea that if they try hard enough it will work out, possibly at the last minute. Workplaces love for you to work, but they also want time to deal with the inevitable issues. Mentioning when you are stuck, or even just slowed down, as soon as you can gives them a chance to adjust resources and expectations. Learning that it's not only okay, but often DESIRABLE, to admit you had/have a problem is a hard lesson to learn, and harder still to confess your willingness to during an interview - but many places will want to hear that.
  • That said, most of coding is dealing with new problems, so Googling for solutions and figuring out how to extract the meaningful bits from a post where someone dealt with the problem in an unrelated tech stack is a skill that classes rarely teach. MANY interviews will focus on behavioral questions like "Tell me about a time you were stuck on a mysterious problem and how you solved it" - having experience outside of class projects (where you encounter such problems) make these questions far easier to answer well, and build the skills you'll use on the job.
  • The reason for the data structures and algorithm questions so many technical interviews include is not to see if you can solve that problem - it's to see if you can break a problem down into solvable pieces. If you can understand how to look at a problem and determine the right approach. Rarely will you be told on the job "solve this with a binary search tree" - you'll have some data and need to alter/search that data, and you need to be able to recognize the difference between a good way to do it and a bad way.
  • Interviewers WILL ask you questions you won't know the answer to. If you knew all the answers to their questions, they'd make harder questions on the spot. This is because seeing how you handle the unknown is part of the point.

Moving to #2: Getting these skills

  • I recommend HIGHLY working on projects outside of class projects (or extend projects you have to do new things). Get a github or gitlab account and put your code there. Add new features. maintain versions with a changelog listing the changes and improvements. You'll be solving the very problems you'll need as an intern, building the skills, and getting a nice addition to your resume. The project doesn't need to be fancy - in fact, I recommend with something stupidly basic that you slowly add to. Working on open-source projects that exist is a common recommendation, but I find that usually requires too much in-depth understanding of the existing code - instead, write your own projects. Make stupid mistakes, learn from them, and improve. Don't worry about this hurting your chances - making mistakes and learning from them demonstrates WAY more that an employer will want than a single pristine but unremarkable commit.
  • There are definitely algorithm and data structure interview questions out there that you should practice for, but don't neglect coming from the other side: having a problem and breaking them down into code. You don't even need to code each of these, but make a practice to think "How would I organize a program to handle this problem?" When you're in line at the movies, think about how you'd manage their displays of menu items in the concessions line. How you'd write the software to manage tickets. How you'd write a scheduling program for workers.

And now, #3, Demonstrating these skills

  • Remember that github/gitlab repo I mentioned you should do for a project? Make it. Make it public. Update it regularly. Put it on your resume. Be prepared to talk about that project, in particular where it gave you problems and how you eventually overcame them (or if you didn't, what you plan to do in the future about that.) . Remember: Companies don't want to hear you're brilliant and perfect. They know you AREN'T perfect, and want to see that you can regularly improve without guidance, and will improve even more WITH guidance.
  • This sounds hokey, but I recommend you practice, out-loud, saying "I don't know". You want to make it almost habitual, muscle memory. This way when it happens in an interview you don't ratchet up your nervousness and anxiety and instead can apply your thinking power to looking good. Being nervous in an interview is totally normal - if you didn't have something at risk (getting a job you want) then it'd mean you weren't trying very hard. But nervousness can tank your chances, can disguise your value. So physically practice, so your instinct can happen without thought. Skim headlines and articles from sites like Hacker News (http://news.ycombinator.com) and pretend you are being asked questions about some technical bit in an article you don't know. (no one knows ALL the tech discussed there) "Websockets with IoT? I'm not familiar with that, can you explain a bit more?". Practice adding a guess, or countering with a question. Show that not knowing means you have interest and willingness, rather than cutting things off or that you bluster and pretend. Connect to something you do know. "I've not used a separate database cache layer, is that like a web CDN?"

And lastly, the 4th part: Expect some failure. Interviewing is something we're all (humans) bad at - not just as interviewees, but also companies are still trying to figure out how to identify what they want and then how to identify which people match that. You can bomb 6 interviews in a row and be exactly what the 7th wants, even if your performance in all 7 is the same. One place will give you a massive Hackerrank interview while another has a discussion that involves no or almost-no coding.

Brett recommends the following next steps:

  • Work on a personal project
  • Put your personal project on github/gitlab as a publicly visible repo
  • Regularly update/add to that project. Solve real problems with it that make you struggle.
  • Practice ways of saying "I don't know"
  • Practice thinking how to model various real-world situations in code. Actually write some of them.

Harli’s Answer

Updated Plano, Texas

For my internship, I researched about the company ahead of time and made sure I knew the company’s mission statement. Also. I would recommend researching their website before the internship. Good luck with your internship!