Since I’m searching for a new job (check out my CV on Stack Overflow Careers!), I’ve been trying to gin up little personal projects and to extract what publishable code I can from my work projects. The first result of this is affiliate.el. It’s a small project - very small - but it has virtues that I think make it a good component of a GitHub portfolio.
First, the smallness is advantage: it is a project with a small, well-defined scope. That’s important. Projects with a large scope are prone to taking a long time, and projects with a poorly-defined scope are almost by definition a bad idea (making a note that fail-fast rapid-iteration work is a totally reasonable thing). The scope of this project is “automatically turn Amazon/iTunes URLs in text into affiliate links by extending emacs.” I chose that because I do the great majority of my writing (including this post) in emacs, and because I am involved in Amazon and Apple’s affiliate-links programs (because I like extra coffee money once in a while just as well as the next person). Choosing scope carefully is important for projects that are intended to accomplish a goal (as opposed to projects where the point is to learn about the problem space, such as the Clojure thing I’m messing with)— and in professional life, the norm is for projects to be goal-focused.
The other reason that smallness is an advantage is that affiliate.el
is small enough for someone else to sit down, read, and fully understand in one sitting.
I want to make it easy for this hypothetical code reviewer to get a grasp on what I’ve created.
To that end, this project also demonstrates
“behold, I write friendly code: there are clear docstrings, there is an approachable readme, and the commit messages are concise and helpful.”
I think that this is an important skill for an engineer to have too, because coding work happens in a social context.
Your ability to explain your work to other engineers—
and to others in general—is crucial to its value being recognized.
So I want to show with this project “I can make my code accessible to others.”
Of course, those virtues only really shine in the context of good solid working code.
This too I think the project demonstrates: concise, workmanlike, idiomatic elisp with a suite of unit tests.
This code is well-formed for its environment:
it uses built-in emacs features such as customize
and provide
like a good citizen of its ecosystem,
it doesn’t re-invent any wheels or require any esoteric libraries,
and it uses unit tests to demonstrate and hew to the requirements for input and output.
It is not heroic code, it’s just solid, humble, functional code.
There probably aren’t very many people to whom this little emacs module is useful as executable code, but I’m fine with that as long as it’s useful for saying something about its creator. Especially if that thing is “hire this person.”