Make you're Resume Project Better

Make you're Resume Project Better

Introduction

Here I will talk about the different steps you can take to improve your resume projects. These steps will improve your code quality as well as follow practices made by big tech companies.

Problem Statement

You're applying to internships/placements and don't seem to be getting any interviews. There are projects on your CV but your still not getting noticed.

My Own Project

My own project was a reference generator made using python. It can generate a Harvard reference for the user. This project isn't something very unique but I'll show you improvements I made which would make it stand out to hiring managers and engineers.

import sys
import requests
from bs4 import BeautifulSoup
from datetime import date

def main():
    header = input('Header: ')
    published_year = input('Published year of web page: ')
    url = input('URL: ')

    reqs = requests.get(url)

    # Gets current date
    today = date.today()

    # Formats current date as a string in the "day/month/year" format
    access_date = today.strftime("%d/%m/%Y")

    soup = BeautifulSoup(reqs.text, 'html.parser')

    for title in soup.find_all('title'):
        ref = header + f' ({published_year}) ' + (title.get_text() + ' [online]' + ' Address: ' + url + f' [accessed: {access_date}] ')
        with open('Database.txt', 'a') as file:
            storage = file.write(str(ref) + '\n')

    pull_data = input('Type pull to see all your references, if not then press enter: ')
    if pull_data == 'pull':
        with open('Database.txt') as f:
            contents = f.read()
            print(contents)
    else:
        print('Bye')
        sys.exit()


if __name__ == "__main__":
    main()

Unit Testing

In order to improve this project I made unit tests. This is because unit testing is a great way to make your code robust and it allows an engineer test your code. Unit Testing is a practice done by every tech company so by doing this you are following practices which an actual software engineer would do.

import unittest
from unittest.mock import patch
from Referance import main
from datetime import date

class TestReferenceProgram(unittest.TestCase):

    @patch('builtins.input', side_effect=['Sample Header', '2022', 'https://www.forbes.com/sites/christinemoorman/2018/01/12/why-apple-is-still-a-great-marketer-and-what-you-can-learn/?sh=3f9c8c8315bd', 'pull'])
    @patch('builtins.print')
    def test_main_function(self, mock_print, mock_input):
        main()
        # Gets current date
        today = date.today()

        # Formats current date as a string in the "day/month/year" format
        access_date = today.strftime("%d/%m/%Y")

        expected_reference = 'Sample Header (2022) Why Apple Is Still A Great Marketer And What You Can Learn [online] Address: https://www.forbes.com/sites/christinemoorman/2018/01/12/why-apple-is-still-a-great-marketer-and-what-you-can-learn/?sh=3f9c8c8315bd' + f' [accessed: {access_date}] '

        # Collect the printed content by joining the first arguments of all calls made to the mock_print object
        # Each call represents a print statement, and call[0][0] corresponds to the printed content
        printed_content = ''.join([call[0][0] for call in mock_print.call_args_list])
        self.assertIn(expected_reference, printed_content)

if __name__ == '__main__':
    unittest.main()

This test seen above verifies that the main function in Referance.py produces the correct output (reference) when given a specific set of inputs. The use of patch allows the test to control and monitor the inputs and outputs of the functions being tested.

Naming/Comments

Throughout my project I have made sure to use good naming conventions. This is because good naming makes your code readable to other engineers. Also for sections of my code which are difficult to understand, I wrote comments saying what that code does. Here is an example:

# Collect the printed content by joining the first arguments of all calls made to the mock_print object
# Each call represents a print statement, and call[0][0] corresponds to the printed content
printed_content = ''.join([call[0][0] for call in mock_print.call_args_list])
self.assertIn(expected_reference, printed_content)

Write Good Documentation

When most people upload their code to GitHub the Readme.md looks like this:

If a hiring manager looks at your repository and see's the above example they wont be impressed because there's no information provided but if they see the one below then it will make your project look more professional and potentially impress the hiring manager.

For writing good documentation make sure to have an introduction and then talk about what dependencies need installing to setup the developer environment. Also provide any diagrams of the software architecture if you have any.

Docker

Containerisation is used by big companies such as IBM, Microsoft, Google. This allows other people to easily setup the developer environment for your project. Also this makes your project stand out because most people don't bother with containerisation so if an engineer is looking at your project and see's you used Docker, they will be impressed.

I have containerised my python application, here is the Dockerfile:

FROM python:3.11.5

ADD Referance.py .

RUN pip install beautifulsoup4 requests

CMD ["python", "./Referance.py"]

Here is the tutorial I used:

For more information about my project and how to run it follow this link: https://github.com/N00rAhmed/Referance-Generater

Deployment

The purpose of creating a software product is for other people to use it. The benefit of deploying your resume project is that there is now a higher chance of the hiring manager/recruiter taking a look at your project and using it. If they like your project then that could mean you getting an interview.

I used this tutorial to deploy my python CLI application into a .exe file:

To follow the tutorial above, simply type these commands shown below:

pip install pyinstaller
pyinstaller python_file_name.py --onefile

Once the .exe has been created you can upload it on GitHub in the releases section:

This will allow people to easily view and download the executable file:

For C# applications please follow this tutorial to deploy:

To deploy a web application or host a database please checkout my website. Its currently still in development: https://freehostingfordevs.netlify.app

If you want more information about this project, here is the GitHub link: https://github.com/N00rAhmed/Referance-Generater