My GitHub profile is full of crap. I've noticed this is not actually the case with a lot of profiles I snoop.
Am I doing it wrong?
I regularly use my home desktop computer, my crappy laptop, and my employer-assigned workstation to hack on the same code. I use GitHub constantly - pretty much every scrap of code I write will end up there because it's convenient to not have to think about where the project is stored. It's also nice to know I can pretty much fearlessly wipe my HD - my projects and dotfiles are safe and sound.
I also like the little bit of gamification - it's good motivation to keep my commit streak up because otherwise I'm stuck remembering how useless I was that one gray day for a whole year. This habit leads to a pretty solid-looking commit grid, but a lot of the code is throwaway quality, or experiments that I wanted to continue at home after leaving work, projects I don't intend to finish, things like that. It's definitely not all portfolio material.
A lot of folks seem to only put polished code up, code they'd want to show others or for which they are actively soliciting contributions.
Where do you stand on publishing unpolished code? Yes, I'm airing my dirty laundry to some extent, but it's not like I have any shame - and do people really go and sift through old crap on other people's
profiles? Does it reflect poorly on my habits?
Top comments (15)
Today I'm thinking on this. Maybe it's good idea have GitHub as main account with formal projects.
And use BitBucket or GitLab account to practice, exercise, courses, etc.
With this approach you can have your GitHub account 'clean'.
That's a cool idea! I have accounts on both but don't really use them - that's a natural way to organize.
I'm also very interested in sr.ht, maybe a good opportunity to make the transition.
At last count I had around 87 repositories on Github, and to say more than a tenth of them resemble something complete would be a flat out lie.
However, I think this is where the pinned repositories feature comes in handy that Github has. Using this, you can mark about 6 of your projects that you want to be displayed on your profile.
Generally I think people will check out the projects that are pinned over digging through your Github graveyard. Most developers have abandoned projects or things that are just experiments. I actually think having these is a greater asset over not having them as it shows you are willing to try new things, or move on from a project that wasn't going anywhere.
Personally, I think you usage is just fine. It shows you like to experiment, not just display the 'best' software you write. Me, I like to see in progress, attempted proof-of-concepts, abandoned projects, snippets (Gist), etc. But everyone is different. If your usage works for you, keep at it. Else, iterate till you dominate.
This isn't the best answer, but it's an answer. If you pay for private repos, you can hide what you want to hide, keep your commit streaks up, and only make public the stuff that you want to show off. It allows the best of all the worlds, but for a (cheap) price. It makes complete sense to work privately until you're happy with something, have a chance to clean it up, and then make it public.
I use organizations like folders for all my "non primary" stuff. You can check out what I mean if you look at my profile: github.com/cctechwiz (Isn't super easy to see what I'm talking about on the mobile site, try the desktop site).
Granted, I'm just starting to experiment with this system and I'm just starting to try to be super active on github but it seems to be working OK.
I've looked at almost everyone I've considered hiring over the years. That said.. it's very easy to tell what are pet projects, hacks, school projects, random code in random states and what's real. I think it's interesting to see it all. Anything to help me know how you think and what you're into.
Personally, I've given up on having a tidy-looking GitHub. Since joining, I have published a lot of repositories, and I'm not willing to take the time to curate/archive them all. I've thought about writing a project that would do this curation for me, but that would take time, haha! I've just decided to pin my favorites and call it a day.
For this reason (and because I don't get a lot of contributors), I haven't really published a lot of new stuff to GitHub for a long time - most of my personal projects sit on my disk at home. I have a nice backup setup, so I'm not worried about losing project work, and if I want to work on a project on a different machine I'll either pull and push directly over my home's LAN or VPN, or make a bare repository on my server.
I thought about setting up a local repo on my little odroid SBC - cool to know something similar works for you. It's a project in and of itself but there's something nice about keeping ownership.
Pretty much all of the non-fork projects in my home profile is "unpolished code". Anything that starts as a "just for me" tool but a co-worker or customer decides, "oh, neat: can you polish that up and actually support that code for us" (i.e., will cut me a check for) but I have no long-term ownership-interest in or that I'd otherwise really prefer to open up the continuing development of, gets its ownership changed to whatever organization is giving me money to do so (conditional on that the project stays public so that I can continue to develop on it after I leave if I so desire, even if that works out to being split-forking back to myself). That said, stuff that I'd prefer to retain full/ultimate control of in stays in my account.
That said, I generally consider most of my code to be "rubbish" (first-draft quality) ...right until I look at others' code to remind myself, "maybe not complete rubbish".
Don't. Use GitLab, GitHub is a proprietary blob and does not feature things like CI/CD. I would also recommend using Lerna and a Monorepository, see gitlab.com/pojntfx/incubator for an example.
Publish it. If you're concerned about potential employers finding the good stuff, pin those repos or specifically call them out in your cover letter and/or resume.
Github's not LinkedIn.. use it however you want and if you like having things tracked, go for it, regardless of state.