52

I'm fairly new to programming, and I've been working on many personal projects, which I'm concerned can come across as silly and unprofessional. The kind of projects I have are a Reddit Image Downloader and a tool for GMs to use in roleplaying games.

I want to start building up a GitHub account for projects in my chosen field of data analytics, but I'm not sure how to organize projects on my GitHub account. Should I create a "professional" GitHub, mainly containing different analytical scripts and have a separate "personal" account for fun little projects of mine? Or am I just overthinking this, and should I just maintain one account?

10
  • 4
    Personally, I just have one account for both professional and personal projects. As long as there's nothing offensive in your account, I see no reason to use the same one for both purposes. If anything it just shows that you like doing the work and you're not limiting yourself to a specific kind of application.
    – Dylan R
    Commented May 30, 2014 at 20:47
  • 3
    This doesn't really belong here as it's asking for career advice, but I can say that when I've interviewed, personal projects are assets for candidates, no matter how "silly". (Assuming we're not talking a fart app or something.) The projects you mention would definitely be something I'd consider worth mentioning.
    – user53141
    Commented May 30, 2014 at 20:53
  • 1
    @AlmostSurely: do you have permission to put actual work on github? Your employer may not be too happy about this even if you do make those projects private. Commented May 31, 2014 at 9:53
  • 1
    Putting any code from your employer on GitHub without their consent - even in a private project - could be considered stealing. I know that if I put my employers code on GitHub without their express consent, I would be in serious trouble. And I haven't signed an NDA. Same if you are self-employed and put code you created for a client on GitHub. The code isn't yours to put there. Commented May 31, 2014 at 9:59
  • 1
    @MarjanVenema Sorry to be so late getting back to you, but yes I do have permission to post work on Github. Like I mentioned elsewhere, my organization is part of a larger Foundation, and it is how we share things together, and to the general public at large. I don't work for a type of company that cares about software patents and such. Commented Jun 5, 2014 at 15:33

3 Answers 3

36

I say you can eat the cake in have it too! Introducing GitHub Organizations.

Use your GitHub account for your personal projects, and create an organization for your professional projects. The organization's homepage will show the professional projects you want to introduce, and it'll have a link to your personal account that shows all the things you have done in GitHub.

Benefits:

  • You'll have the clean separation you wanted while keeping a relation between your personal and professional GitHub activity.
  • You'll be able to control everything from a single account. No need to relogin just to open a repository in the professional account - all you have to do is to select the organization when you open a new repository.
  • No need to manage two different SSH keys on the same computer!
  • You can add other GitHub users to your organization, and even transfer the organization's ownership to them if you even need to. Each user will have their own account, so you don't need to share a professional account's password with other people. As a bonus, different accounts can have different permissions based on their actual role in the team - something you couldn't do with a shared GitHub account for professional projects.

Basically, this approach gives you the benefits of both approaches. The only downside is if you have some personal projects that you don't anyone to ever relate them with your professional public face. However, these criteria usually involves illegal stuff you wouldn't want to put on GitHub in the first place, so it shouldn't be a problem.

5
  • 3
    So if your personal laptop or account is compromised, it can lead to the compromise of your work account, since you conveniently use the same SSH key for personal and work projects. If your organization has a policy about carefully managing secrets, this might not fly. Commented Dec 21, 2019 at 17:09
  • 3
    @MarkStosberg According to the question, it does not seem OP has is using his personal laptop for personal projects and his CIA laptop for professional projects. It looks like both personal and professional projects are created from the same machine, and the difference is that the personal ones are "silly and unprofessional" "fun little projects" while the professional ones are things they want associated with their professional personal brand as a data analyst.
    – Idan Arye
    Commented Dec 22, 2019 at 16:57
  • Old question, but there's one huge disadvantage to doing this. The notifications view in GitHub really doesn't work well when you use a single account for everything, especially when you interact with some FOSS projects in a "work context" and others in a "sparetime context". Considering switching to separate accounts for this reason. Commented May 3, 2022 at 12:28
  • @IdanArye So you are saying one github account for private and work projects is fine if you are using your own machine both for private and work.
    – Roland
    Commented Sep 26, 2022 at 15:48
  • 1
    @Roland Yes - just use organizations for separating work repositories from personal ones. I'd say that even if you never access both from the same machine, it should still be fine to use the same GitHub account. This is what we do at my current workplace - those of us who already had our own personal GitHub accounts just connected them to the company's organization. Just remember to go to Notifications -> Custom Routing in the GitHub settings and direct the notifications from the work organization to your work email.
    – Idan Arye
    Commented Sep 29, 2022 at 12:06
23

I recommend you keep them together.

  • showing suitable personal projects is often a big plus as it shows your passion and initiative
  • simpler to manage what goes where over time.
  • only 1 set of ssh keys to manage
  • no need to log in/out from one to another.
  • allows you to have 1 github to 1 main personal email, also simpler.

I think one answer to what you want (and what I do) is to have a paid account (I think its $7 a month for 5 privates) that allows more private repositories. So keep the work/play ones that you want to be public as public and keep other ones as private.

8
  • 2
    showing personal projects is often a big plus - perhaps just as often a big minus, when someone else steals your idea... you can talk about other things you're doing with co-workers and superiors (without taking a lot of time to do so), even though they're not in github - that shows passion and initiative without giving others the "keys to the castle". That's what I've always done and it has helped me in my job - more than once I have been given interesting assignments : "Hey I heard you were fooling around a lot with JSON... maybe you can tackle this new project we're planning..." etc...
    – Vector
    Commented May 31, 2014 at 0:53
  • 3
    and many employers won't want the risk of cross contamination between their corporate property and some hobby projects...
    – jwenting
    Commented May 31, 2014 at 1:09
  • 1
    If you can't keep projects separate it doesn't matter whether they are private or public. I've never seen this "cross-contamination" in practice. In my work right now I have to use 20 repositories and not mix them up. Commented May 31, 2014 at 9:28
  • 2
    Even if you put work in private projects, one's employer may not exactly be happy with having what it considers its code "out in the open" (not controlled by their own security policies) and showing it to other companies during interviews. Even putting it up on GitHub in a private project could be considered stealing. I know that if I put my employers code on GitHub without their express consent, I would be in serious trouble. And I haven't signed an NDA. Commented May 31, 2014 at 9:55
  • 1
    I mean put the silly projects as private. Commented May 31, 2014 at 10:52
15

I think you should keep the accounts separate.

In almost all cases, work you create as a matter of your employment with a company is owned by the company. It is not your property. When you leave the company, the company keeps all that work and you no longer have any rights to it.

If you keep your personal and work accounts separate, it makes this much easier. When you leave, you just hand over the work account and they take ownership. You would not need to separate your projects from the company projects, and would not need to try to delete the projects from your account. Employment with any given company is fleeting, and the more you entangle your personal stuff with company stuff makes it harder when you separate.

This is my rule of thumb, and certainly individual organizations will have their own opinion on this. I could see some companies deciding that they have no problem with you keeping a copy of this stuff once you leave the company as long as they have a copy too. On the other hand, the company I work at keeps very tight control over things and they would likely fire me if I put company work product on github.

5
  • I work for a separate nonprofit that is a part of a larger Foundation. I've talked with my higher ups, and they were fine with me hosting the files Open Source on my github, so that I can share out our progress with the rest of the Foundation, and this seems to be the method for other organizations in the Foundation. I understand what you are saying about what's the company's is the company's, but to be honest I would like credit for this work on my resume. That being said, maybe I should keep a separate work account and just have the projects on my resume without linking to the github. Commented May 30, 2014 at 22:49
  • 1
    @AlmostSurely - +1 on this answer - I think tit's the right one. Keeping your private matters, whether technical or otherwise, is always the best policy, for the reasons stated here and many others as well. You can put your private projects on your resume regardless, and even link to your private github repository to show what you've been up to. If you do need to move on to another job, doing stuff on your own outside of work to broaden your horizons and learn new skills can (but not always...) be a plus: it shows you love your work, you're ambitious and energetic, etc.
    – Vector
    Commented May 31, 2014 at 0:50
  • 3
    also avoids/reduces the very real threat of them thinking similar looking code in your personal projects is stolen from work you did for them. Many employers demand ownership of all code you write during your employment, even code you write in your spare time that's not work related. Whether such a claim will hold up in court I can't tell (and would depend on local laws anyway) but it's a common thing and you want to avoid complications like that if you end up in a labour dispute of any kind.
    – jwenting
    Commented May 31, 2014 at 1:12
  • even code you write in your spare time that's not work related - Yup. I've signed NDA's that essentially gave them ownership over my programming grey matter. Whether such a claim will hold up in court I can't tell - I don't think they will hold up in a US court, so I never worried about it too much - but they put it in there so that you don't "get cute" - intimidation factor.
    – Vector
    Commented May 31, 2014 at 12:27
  • 1
    company projects should be kept under a separate organization. then it is easy to see which projects are yours and which are the company's. when you leave you don't need to hand over your account as you can just give access to the organization to someone else in the company.
    – eMBee
    Commented May 16, 2017 at 4:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.