Having taken your first Computer Science classes in school and looking to gain some industry experience, you may wonder how to land your first software internship. However, as with most students applying to their first internship, your resume may need the help of something to help catch a recruiter’s eye. When pursuing your first software internship, the easiest way to fill out your resume and demonstrate your abilities to a recruiter is with a side project. In this post, we’ll step through the successful components of a side project, and how to incorporate it into your resume.
Looking to get a head start on your next software interview? Pickup a copy of the best book to prepare: Cracking The Coding Interview!
A successful side project will encompass multiple high level software concepts, such as:
- Working with 3rd party documentation
- Version Control
- Networking
- Databases
- Data Structures
- Caching
- Server side development (Backend framework)
- Client side development (HTML/CSS/JS)
- Cloud Computing
- Working in a Linux Environment
All of the concepts listed above can be demonstrated by creating your own data visualization web application and deploying it on Amazon’s EC2 servers. By completing a side project such as this, you demonstrate to recruiters your technical skill and set yourself apart from other first time internship seekers with no previous experience.
Steps to Completing a Web Application Side Project
- To determine the goal of your side project, you will first need to pick a RESTful API to work with. A good list of APIs is Any API, which contains over 500 public APIs. After you find an API with data that interests you, you’ll want to ensure official API documentation exists. For example if the NBA Stats API interested you, you would find no official documentation exists explaining the API. Popular services such as Twitter have extensive API documentation. This will demonstrate your ability to work with unfamiliar 3rd party documentation.
- Before beginning development on your side project, you should ensure you have version control set up to save all of your work. It is suggested to create a public repository on Github, which will allow you to share your work with future recruiters. This will demonstrate your knowledge of version control.
- Once you’ve determined the data and API you’re interested in, write your own networking code to interact with your chosen API. You can usually find an HTTP library for your language of choice, such as Python’s requests library. Making
GET
calls to a RESTFul API will demonstrate your networking knowledge. - Once you’ve written code to get data from your chosen API, you will want to determine how to store the data you pull down. You should choose a database you can interact with in your programming language of choice. Popular free database solutions include the traditional MySQL and the document oriented no-sql MongoDB. Storing and later retrieving the data you pull from your API will demonstrate your knowledge of databases.
- To represent the data you stored in your database, you will want to create a new data class that you can pass to other functions for processing. Picking the appropriate data structure to represent and process your data will demonstrate your knowledge of the pros/cons of picking a given data structure over another.
- Once you have established access to the data you are interested in, you should process the data. By storing the data in a database, this allows you to create your own time-series data, and allows you to display and calculate change in the data over time. This is a good opportunity to add a layer of caching to your application, to avoid the overhead of a new API or database call if the data you need does not need to be refreshed. This will demonstrate your knowledge of using caching with computational/resource overhead in mind.
- In order to visualize the processed data, we can now set up a web server to present the information to users. There are multiple frameworks available to choose from depending on your programming language of choice. For example if using Python you can use a light weight framework such as CherryPy or Flask, while for Javascript you can use Node. This will demonstrate your knowledge of backend web server development.
- Depending on the web framework you chose for the backend, you can incorporate data visualization to visualize the processed data in the user’s browser. Various free Javascript frameworks exist for data visualization, such as Google Charts or D3. This will demonstrate your knowledge of front end development.
- Once you have your entire project running locally, you will want to move your computation into the cloud. Amazon offers a free tier of its EC2 cloud computing service, which you can use to keep your application running in the cloud on an Ubuntu server. You can follow Amazon’s getting started guide for more information. This will demonstrate your knowledge of cloud computing.
- Once your application appears to be working, you will want it to keep itself updated with the latest API data. To do so, you can write a separate script to
GET
the latest data from the API and update the database used by your backend web server. You can keep this script running in the background of your Ubuntu server using a session manager such asscreen
. This will demonstrate your ability to work in a Linux environment.
Once you have completed your side project, it is time to incorporate it into your resume. You will want to include the title of your project, the github url, the languages and frameworks used, as well as a short summary of the functionality you created. For example:
NBA Player Tracker www.github.com/exampleUser/NBAPlayerTracker
– Developed Python CherryPy web application running on Amazon EC2 Ubuntu Server to display NBA
player statistics over time
– Utilized MongoDB for storage of player data, with Google Charts Javascript Library for data visualization
– Features auto updating to pull the latest player information from the NBA Stats API
– Employs caching to avoid duplicate requests to the database or RESTful API
Your side project will become a talking point for many recruiters, so be prepared to answer questions regarding it:
- What obstacles did you face when developing your side project?
- What lead you to use one framework over the other when developing the side project?
- Are there any parts of the project you think you could improve with your experience now?
A completed side project will successfully demonstrate your technical skills, your ability to work independently, and your passion for computer science outside of school which will help you leave a positive impression on your recruiter. Your first software internship is only one side project away!
Elevate your software skills
Ergonomic Mouse |
Custom Keyboard |
SW Architecture |
Clean Code |