I'm preparing to publicly release a project with the intent of building it up to demonstrate my own experience level. I'm asking as someone with next to no prior public code despite developping back-end almost full time since I dropped out 10ish years ago. I guess I'm asking for external criteria for whether I'm impostor-syndroming!
1) All projects have a bad commit history. Just one commit and that's it. Usually it's something for school with really basic stuff inside. Most might be IDE provided "generate code" boilerplate.
Even a single commit beyond the GitHub provided initial commit example is enough. Multiple ones in a sane cycle is even better. Even if you just update some comments.
2) Does the project run? If I check out the project, is there a clear way to run it or does it rely on the compile & run commands being on the submitter's bash history?
Add a make/magefile or run.sh or anything.
3) README. Does it exist? GitHub pushes you really hard to add one, if you're lacking even the default one, you clearly don't understand how GH works.
4) Bonus task: does the repo have integrations or GH Actions enabled? If the project automatically runs some tests or builds on commit, it's a big green flag for me. If I'm going to be paying you over 100€/hour, I don't want you spending your time doing stuff manually if it can be automated with 15 minutes of boilerplate work.
This is a strange one, I am not sure why the priorities of a third party hosting platform should take priority. Many people use it is more of a cloud repo backup than a social sharing site.
So why knock people for using it differently? It does not measure their understanding of how Github works.
My memory sucks, that's why I write down what I'm planning to do with a project into the readme. It doesn't need to be super fancy with images and status badges and all that jazz.
This is perfectly enough:
projectname
===========
This fizzes
TODO
----
Add buzzing later
Check if bazzing library is ready for productionHowever, I strongly associate Readme.md, designed for a web based intro view with Github.
It would be interesting to get the real history, because it could be a fluke of timing.
I’d bet if we look back at old source forge projects created pre-github there would be a strong correlation with the markdown version added and the rise of github. (Of course this could be a timing fluke)
Yes GitHub pushes you really hard to add one. But I disagree that not having one on a personal project means you don't understand how GitHub works. I don't need (or really even want) a README for a personal project. It detracts from writing code. If I neglect the personal project for months or years and come back to it then I'm not going to give a flying crap about the README anyway: I will have come back to it specifically to look at the code. Whether that's because I had a new/better idea or wanted to reminisce or maybe to copy/paste some idea from it.
All of the rest of your points are good though.
How ironic ;)
I do wonder what a recruiter looks for in a good README though. Technical chops or perspective on potential applications/intended project direction or ... ?
I've ended up building boilerplate workflows for various languages, environments, etc. to just drop in and tweak per-project.
But I think it's a plus for using something off the beaten path, provided that the other conditions are met.
I consider them as conversation items. I don't think anyone is expecting to see multiple completed products with 1k+ stars.
The worst case is, you waste time agonising over the quality of your code and either: don't publish, or no one even looks at it (highly likely)
You're not about to get code-reviewed. At most, if anything, it would be:
"explain this class/function": I'd expect you to vaguely know the answer after reading it
or, "why did you do <something> this way?": answers like "I got it from SO", "I don't know of a better way" are perfectly fine.
I use my pinned repositories to showcase side projects that I've worked on that are either complicated/challenging problems or that solve a specific problem in a complete way. These 6 repositories are "the most serious" work that is available in my public GitHub profile.
Some time ago, when I put my mind to doing this, I made sure to put extra effort and attention to detail into about a dozen different projects that were in my public profile, so that I had options across languages, project types, etc., for what I'd pin. I put each project through its paces, made sure it ran on multiple platforms (or, that there were notes in the README about how to get there otherwise), cleaned up Makefiles, test suites, etc.
At least one of these projects is incomplete and/or a work in progress, but I've indicated as much in the README, but it's also obvious to see exactly where (and why) that project stalled, if you read through the code.
I can't say that it's helped get me a job (I haven't changed employers) but I do feel a little better about the other 100 or so projects in my public profile now that are in varying states of completeness.
I am usually easily able to tell if it is a half-baked project for some hobby-thing or active participation in e.g. a well known piece of open source software.
Someone who does this, is likely also skilled enough to separate those things. I don't only look at the user's own repos but also at contributions/comments etc. to others.
And just as the author, I too experience more often than not that people have NO idea how to set the level for own experience.