Skip to main content Link Search Menu Expand Document (external link)

Building a Portfolio

One objective of this series of assignments was to get you started in building a portfolio of code on GitHub.

A portfolio of code shows recruiters and hiring managers that you are capable of writing code and thinking creatively to solve problems. At the very least, it serves as evidence that the statements that you make on your resume about languages and skills are based in truth.

You now have the start of a portfolio in the form of these katas. Before you make your repository public, however, you will want to do some cleaning/tidying up of the repository in order to make it easily readable and consumable by someone browsing your GitHub portfolio.

What should this look like?

Take some time browsing GitHub. Look at projects that you have used in the passed, or just poke around at some random developers profiles. Take notes on things that make repositories easy to navigate and read.

In my opinion, well-organized repositories have some common features:

  • At the very least, the repository has a top-level README.md file that describes the repository and its organization.
  • Code is organized into a clear directory structure. Files and directory names are well-chosen and descriptive.
  • Documentation is copious and available for sub-projects or components within the repository (i.e., there may be multiple READMEs).
  • Build instructions are available and clear.

TODO Checklist

Your repository is probably currently just a collection of source code files (organized into directories).

I would probably do the following to clean things up:

  • Make sure that you merge all of your pull requests.
  • Create a top-level README.md file that describes the portfolio and its purpose.
  • If you did code reviews, it’s probably a good idea to make the changes that we discussed to make your code more professional.
  • You can and should additionally go through your code and do some cleanup following the principles that we discussed in code review.
  • Your submissions were designed to meet the assignment specifications. If you think that these programs should have different interfaces (e.g., receiving command-line arguments or being modified to be libraries rather than executable programs), you should make those changes.
  • I would write a small README.md for each assignment. This should contain a description of what the program/library does and how to build it.
  • It might be a good experience to write a Makefile for some of these. Or one Makefile that builds everything. Your labs contain many examples. The link in the resources pages is a good intro to Make and Makefiles.
  • If there is code of mine in your assignments (e.g., in the sentiment analysis), you must properly attribute authorship. In that program in particular, you should note which code is mine vs. yours.
  • Eventually, you should consider creating a GitHub Pages page for the repo. This is very easy to do in the repo settings. GitHub will turn your README.md file into a page with only a small amount of configuration. My homepage, for example, is an extremely simple repository.

Moving Forward

The benefit of doing programming practice is outlined in the intro assignment. Keep doing this work!

The intro links to other code kata pages and you can find many more by Googling. If you want to become a better programmer, there is no better way than practicing. If you do so, use this repo! Follow the design principles that you establish for yourself in formatting the repository and keep building a collection of small programs.

You should consider creating a GitHub pages (or some other web host) site for yourself with links to projects and portfolio repositories, like this one.

I ask that you do not make lab code public and would consider this a violation of the honor code. Though you may be proud of that code, I would prefer that you advertise it to recruiters as being “available upon request.” A former student created this repository to advertise his work for my distributed class, for example. The actual code is in separate private repositories that recruiters can be granted access to.