I’m currently working on a project in C where I have a choice between using a library for hash tables or simply creating my own hash table from scratch.
What would look better on a Github portfolio from an employability perspective?
I’ve had to review resumes when we were trying to find someone else to bring on the team. My boss dumped hundreds of resumes on me and asked if any of them looked promising – that’s after going through whatever HR bullshit filters were in place – on top of all the other work I was already behind on since we didn’t have enough staff. That is the state of mind you should expect someone to be in while looking at your project.
If anyone looks at your repo, they’re going to check briefly to see if you have any clue at all what you’re doing and whether your code likes like it’s written by the kind of person they can stand working with. Don’t make any major blunders that someone would notice with a quick glance at the repository. Be prepared to talk about your project in detail and be able to explain why you made the choices you did – you might not get asked, but if you are you should be able to justify your choices. If it gets to the point of an interview and your project looks like something that could’ve been done easily in 100 lines of Python you’d better believe I’m going to ask why the hell you wrote it in C in 2025… and I say that as someone who has written a significant amount of C professionally.
If you say you have multiple years of professional programming experience and send me a link to a repo that has
.DS_Store
in it… your resume is going straight into the trash.send me a link to a repo that has .DS_Store in it… your resume is going straight into the trash.
What’s a .DS_Store?
It’s a hidden file created by Apple devices whenever you open a folder
If you’re trying to demonstrate real world programming skills then selecting and using an appropriate library is the best move (unless this is an unlikely case where there is some really compelling reason why a custom implementation would be preferable).
But if you want to make your own hash table for funsies or for educational purposes or whatever, you could add a note or comment stating that, if you’re concerned that prospective employers might get the impression that you will write everything from scratch even when it’s a bad idea.
Bad advice in this thread. As someone who spent half a decade building what (was) a quite impressive GitHub (github.com/dginovker), no interviewer or recruiter ever looked at it. This was after ~600 applications.
I also volunteered to be part of resume screening at two major companies. Not a single person in either company looked at GitHub repos.
To answer your initial question, use a library. Make cool things, learn good tech that is useful in the real world. You will never have a job where you have to reimplement a hashmap.
Almost my entire career I’ve worked in open source, so it’s very easy to see what my technical work looks like. No one has ever looked at it.
When I have been on the other side, I have looked at the GitHub “portfolio” of junior applicants, but TBH, it didn’t bring me much. There will always be lots of opportunities for improvements in those examples, but that’s the point - I expect them to improve on the job.
More experienced developers will almost never have significant work on GitHub, and if they do, it’s not a “portfolio”, but just their past work.
Hmm, they’ve looked at mine. But it’s not intended to be impressive, and I’ve switched to self hosting my version control anyways
It’s better that you don’t use resume driven decisions. Just do whatever you are interested in.
Should I put my Prison Architect mod tool on my resume? /s
Unironically yes and it may be a fun conversation. But you may end up being hired as a toxic middle-manager with that experience.
Unironically yeah, sitting on the other side of the table it’s painfully obvious when people do resume projects. I’d rather talk to you about something you’re passionate about.
I mean, the more I think about it, the more I think it might be relevant. They’ve got this very bizarre format (instead of something like JSON) and I wrote a thing to parse it and format it back out.
The joke being “Prison Architect” (especially as a game) sounds very bizarre to be on a resume.
You don’t have to mention the name of the game. Simply mention the language, and what the mod does.
I’ve only ever given a cursory look at personal repos when they’re volunteered. I’m most likely to just look at a readme and maybe look at a small section just to see what the style looks like and if any characteristics stand out, then maybe use discussion of the project (with standard topics I ask everyone unless I happened to see something interesting) as a discussion starter.
In summary, at least from my perspective, I would recommend just doing whatever interests you and being ready to discuss, if you volunteer a project. I also generally think the impact of presenting a portfolio of personal projects tends to be overestimated.
Personally (as a dev), I wouldn’t particularly care that you know a specific library (the chance of us using the exact same library is pretty slim and will probably change when the project changes). But I would care to see that you are using a library when it makes sense.
So, if you implemented a hashtable yourself and I spotted that, I’d remember that as you either not knowing that that’s called a “hashtable”, so you didn’t find a library for it. Or I might think that you’re potentially stuck-up, thinking you can do a better job implementing it yourself.
The aspects I’d look for, starting with the most important:
- Does it seem like you have fun when programming?
I don’t need you to be writing humorous commit messages, but if it looks like you just specifically coded some portfolio applications three years ago and then never touched them again, that wouldn’t leave a good impression on me. - Do your projects fulfill an actual need and look like they’ve seen real-world use?
Writing out some example applications is a whole different shtick than actually making it work in the real-world. - Do you have unit tests? Is your commit log clean? Is your project reasonably documented?
I can teach technologies and architecture, but it’s much harder to teach a drive for good code quality.
- Does it seem like you have fun when programming?