With the rise of the tech startup ecosystem in India, the number of tech jobs and internships are at the peak. Today, a large number of companies hire fresh graduates from college because college freshers bring fresh thinking, they are quite agile and they can easily be molded into any domain.
College freshers should consider this as a great opportunity to grab through which they can enhance their Software Engineering skills and also get a flavor of how things work in the industry. In this roadmap, we will talk about how as a college student you can grab a great internship opportunity at a top tech company - be it a corporate, or a startup.
First, let us note 2 key points:
Generally speaking, the opportunities are available for the following profiles - Backend Developer, Frontend Developer, Full-stack Developer, Machine Learning Engineer (or Data Scientist), Android/iOS Developer, etc.
Most companies perform recruitment via a 3-step process - screening round, the first round of interview and finally, the second round of interview.
Now, let us delve deep into each of the above points.
Any Web or Mobile based application today is generally connected to a cloud-based Backend and therefore, by knowing the nuances of Backend Development, you bring in a lot of knowledge on the table. If you have a decent exposure to Backend Development, you will certainly be eligible for a lot of companies, particularly startups.
There are many Backend Development frameworks in multiple programming languages. The choice of the Backend framework usually is driven by your proficiency in the underlying programming language.
Ruby: Ruby-on-Rails (RoR)
Django, NodeJS and Ruby-on-Rails are quite popular in the startup world. Spring and Codeigniter are common among corporates. You can choose 1 accordingly.
You should note an important point - although it could be a big plus point to have knowledge of the framework that is used by the company where you are applying, it is not really necessary. For instance, a company who uses NodeJS as their backend framework would certainly appreciate the fact that you know Django and have demonstrated good projects in Django. A good company understands that problem-solving ability and the ability to learn new things are far more important than knowledge of a specific programming language or web framework and that smart students can pick-up any new skill in almost no time.
How to learn Backend Development in Python?
Django Girls Tutorial is arguably one of the best tutorials for picking up Django. Django is a well-known Python-based Web framework. It is fast and easy to learn. Most importantly, Django is currently being used widely among startups and therefore, there is a huge market out there for Backend Development in Django. In fact, CareerHigh is also built using Django as the backend framework.
What should you aim for?
To catch the attention of companies, you should aim for a decent project in Django. For instance, in the Django Girls Tutorial, the blog project is a great simple project that you can put on your resume.
Machine Learning Engineer
Machine Learning is one of the most common technology today in the market. It is relatively new and the best part is that Software Engineers who have knowledge of Machine Learning are being paid quite well. A lot of startups, particularly FinTechs are emerging in this space which creates a huge market out there.
Again, Python is one of the most widely used Programming Languages in Machine Learning. Google recently open-sourced Tensorflow, Google’s internal Machine Learning framework which is essentially a Python-based Machine Learning library that allows you to train your own Machine Learning models on custom data.
Machine Learning requires 3 key concepts as a prerequisite:
Calculus: the entire domain of Machine Learning is about optimizing a function and so, Calculus is at the heart of it. A sound knowledge of Calculus, particularly Differential Calculus would help you understand the concepts of Machine Learning better. Coursera provides an excellent course on Mathematics for Machine Learning: Multivariate Calculus which primarily is focused on Multivariate Calculus - a topic that is extremely important in the Machine Learning domain.
Linear Algebra: Machine Learning is all about data and the simplest way to store data is a matrix. Therefore, you should have a sound knowledge of Linear Algebra as well. Many Machine Learning algorithms, in fact, employ the concepts of eigenvalues and eigenvectors which are taught in Linear Algebra. Mathematics for Machine Learning: Linear Algebra is a great course on Linear Algebra.
Probability and Statistics: every Machine Learning model is probabilistic in that you can never predict something perfectly. You will always have some form of “confidence” score about the prediction, which is usually measured in probabilistic terms. Therefore, it is important to have a deep understanding of Probability and Statistics to master Machine Learning. Probability and Statistics course offered by MIT OCW is a great course.
If you have studied any of the above topics as a part of one of your college course, you can probably skip it. Usually, all the above 3 courses are taught as a part of the 1st/2nd-year college curriculum.
Once you are done with the prerequisites, you can take a formal Machine Learning course online. Andrew Ng’s course on Coursera is the standard course on Machine Learning. The course teaches the fundamentals of various ML algorithms so that you can easily get a quick start. However, the course uses Octave as the programming language. As such Octave isn’t used in the industry. It is recommended that you use Python to program the algorithms taught in the course.
Another great course on Machine Learning which you can take as a follow-up to Andrew Ng’s course is the Udacity’s Intro to Machine Learning. The best part is that the course focuses on the application, which is good because Andrew Ng’s course is more theory oriented.
Finally, once you are through with the theory as well as the application portion of Machine Learning, you should consider a project-oriented course so that you can build resume points. Eduonix’s Learn Machine Learning by Building Projects is a great course for the same. The course will help you build some great projects which you can put under the “projects” section of your resume. You can also talk about the projects during your interviews.
If you enjoyed learning ML, you can try dirtying your hands at Kaggle which is a great platform for Machine Learning contests.
Almost any startup today that is consumer-facing needs a mobile application. The users spent most of their time on mobile and therefore, creating a great mobile application is important. This opens up a huge market for Mobile App developers. Android is one of the leading platforms which has a huge market share of mobile users. Therefore, Andoird App developers are high in demand.
Udacity’s Android app development course is excellent and it will teach you all of the basics of Android app development. Aim for 1 simple Android App development project so that your resume can pass the shortlisting process. Further, you can talk about the project during your interview as well.
Here are some suggested project ideas:
Timetable management application
Resume screening process
If you are aiming for say, Android app developer internship, you should certainly try and get some projects on your resume. Many students worry about the “certification” of the project. The fact is that the interviewer doesn’t really care about the “certification”. The fact that you took an initiative to learn Android app development and you implemented a project, in itself tells the interviewer about your enthusiasm and learning capabilities. If they want to further verify it, they will question you about the details of the project which will make it clear to them if you are bluffing.
Obviously, a good GPA/CPI also helps a lot. However, don’t worry if your GPA is low. You can always make up for it through some great projects that align well with what the company wants.
Usually, for internships, companies carry out a 3-step interview process:
Aptitude and/or Coding test: aptitude test is focused around basic questions on aptitude and is meant to filter out bad candidates. Coding test, however, is different. In a typical Coding test, students are given 60 - 120 minutes of time and are given 2 - 5 problems with test cases. They are supposed to implement the solution and get all of the test cases right to get a score in that particular problem. SPOJ and Codechef are 2 of the most popular platforms for practicing such problems. Another great platform that you might want to consider is InterviewBit. Most problems are implementation based - usually from your CS101 or Data Structures course. However, some may be tricky as well. Some companies often do not take any Coding test.
The first round of interview: this round of interview is about one-on-one interaction with the candidate to understand their college journey and see if they are a good fit for the organization. Generally, questions are asked around the projects, your courses, your skills and possibly your previous internships. Don’t forget to talk about the projects that you did which may align well with what the company needs. For instance, if you are applying for a company that uses Machine Learning, make sure to talk about your journey of learning ML and your projects. Most interviewers will often throw a problem at you and ask you to provide a solution and write code for it. Usually, you won’t really be writing the code in an editor. These interviews are pen-and-paper based and the interviewer is primarily evaluating your thought process and your approach. When you are asked to write code on paper, don’t write pseudo-code. Write as if you are typing the code on the editor to execute it.
The second round of interview: this round is often with a senior person from the organization, particularly if you are interviewing for a startup or a small company. The round may be an extension of the first round where you may be asked to solve more problems. The purpose is to get a “go-ahead” by 1 more team member to make sure that you indeed meet the standards of the company. Again, like in the previous round - make sure to mention the projects that you did which are in alignment with what the company does/needs. This will give you an edge over your competitors.
A few pointers:
Make sure that you have brushed up Data Structures and Algorithms.
Revise all of your projects. If the interviewer throws a question about any of your projects and you are unable to answer, that’s a serious red flag.
If you have mentioned about any past internship on your resume, make sure that you are able to answer most of the questions around it that the interviewer may ask.
Searching for Internship
Many students rely heavily on the Campus Internship procedure for getting an internship. In this digital world, that’s one of the worst things you can do to yourself. Companies today are open to hiring students from all institutes from across the country. Focus on building the right skills and you are sure to land up with a great internship.
Here are some great platforms that will help you in your search for an internship:
AngelList: AngelList is great for startup internships. You can filter startups by location, technology, domain, and many other parameters and approach those who are of interest to you.
Internshala: Internshala is also quite well known. It is dedicated to internships only.
LinkedIn: LinkedIn isn’t really an internship portal. However, many recruiters are active on LinkedIn and therefore, you should keep your LinkedIn profile up-to-date to catch their eye.
To secure a great technical internship, follow the following steps:
Decide a domain of internship.
Build the right set of skills for that domain by taking up online courses.
Implement projects to develop your resume.
Prepare thoroughly for the interviews.
Market your resume to companies using internship platforms.