So, you are learning Python and want to build a portfolio that helps you land your first technical job at a company. You’ll want to show that:

  1. You know how to problem solve
  2. You write clean, well-documented code
  3. You can synthesize documentation and learning resources to build real things instead of just following along with a tutorial and making another to-do list

First, let’s start with something fun:

Randomly generate a set of different colored socks. Show them on screen. Then have the user click a button and run a script that sorts and matches them. (H/T to Elad Fishbein for the idea!) Once you’ve got that working, here are a few ways you can enhance it:

  • Implement different sorting algorithms to see if you can increase efficiency. Write about your different efficiency-increasing trials.
  • Once you have the first rough version done, expand the logic into another realm. Not a lot of businesses can directly relate to pairing socks, but they can relate directly to pairing an order with the right fulfillment center or a customer with the right customer service rep or salesperson based on item/skillset.

Now let’s focus on some tasks that businesses can directly relate to and that could potentially provide value for them:

  • A script that takes text input (maybe a text box that you copy/paste into) and it finds all email addresses in that text and returns them in a tidy list. This could be a cool tool to host on your website, too. It will require some regex knowledge, which is a good thing to have. Perhaps a simply Django or Flask web app?
  • Python has a number of statistics and data science libraries. Can you pick a task like analyzing some website traffic data and show how to do it in 3 different libraries?
  • Python also has some libraries for Natural Language Processing. Can you scrape the top articles from 3 different top news sites on a particular topic (business sector, product, person, etc) and do a language analysis of it? This could be useful for marketing and product development teams.
  • Build a system that sends a text message reminder to a customer who has a service appointment scheduled the next day, or a call scheduled in the next 10 minutes.
  • Write a script that takes a CSV input and then automatically fills out online forms with the contents of the spreadsheet so someone doesn’t have to manually do it 50 times.
  • Write a script that takes the contents of a folder (let’s call them a bunch of images pulled down from the internet with random file names) and renames them to a consistent naming pattern that you can use. Add another level of complexity by including more folders of images inside that main folder. Also throw in a .docx file or two to throw the renamer off (you want different naming conventions)

While you are working on these projects, here are some ways to get more value out of them:

  • Make sure you blog along the way. Don’t just blog the finished projects. Blog what you are learning, how you solved specific issues, the learning sources you used, etc.
  • Make screenshare videos (Loom) to teach people how to perform particular tasks in Python.
  • Version control your code with Git and publicly push those commits to Github. Add the Git skill to your toolkit.
  • Do step-by-step writeups with Jupyter notebooks and add that still to your toolkit, too.

Have other project ideas or built one of these and want me to review and link to it? Email me! chuck@discoverpraxis.com

Post by Chuck Grimmett
July 28, 2023