8

As a beginner trying to get my foot in the door, I read this recommendation a lot: If you lack experience, gain it through working on open-source.

I recently asked someone "When you say open source, do you mean work on other people’s projects or your own and host them on GitHub."

And they replied that it does not matter.

So now I'm making to be clear.

If I create my own projects and hosted them on GitHub, and others have stared and forked them, does that mean I have worked on open-source? Or is it how I initially thought, you can only say you have worked on open-source if you've contributed to other people's projects?

4
  • Can they be that they meant it doesn't matter WHICH ONE of those you have worked on, your self started project or already established one? Sure sounds like it, as the point is to show that you can code and deliver, and both show it.
    – Aida Paul
    Jul 19, 2020 at 7:30
  • @BernhardDöbler are other answers wrong then?
    – Mark kurti
    Jul 19, 2020 at 14:09
  • @Markkurti nope, this is just arguing over semantics, any work out there that you put as open source is, surprise surprise, is open source. Guess some people like to argue that it's only open source when it's massively big successful project which is... not true at all.
    – Aida Paul
    Jul 19, 2020 at 14:55
  • @TymoteuszPaul I have this problem workplace.stackexchange.com/questions/160024/… throughout my research over the past few months open source (and determination) has been the refrain. I am good enough to work on my stuff, but finding the right project to contribute to has been daunting, and so this was a great news for me.
    – Mark kurti
    Jul 19, 2020 at 15:45

7 Answers 7

7

If I create my own projects and hosted them on GitHub, and others have stared and forked them, does that mean I have worked on open-source? Or is it how I initially thought, you can only say you have worked on open-source if you've contributed to other people's projects?

I think this is your problem - you are focused on trying to phrase in "worked on open source project" while what you should actually be doing is to describe what you have done, what did you learn from it and what problem is it solving.

So instead of "I worked on open source projects" write something like "I created an open source library XYZ that helps developers solve problem FOO which otherwise they have to re-write by hand in every damn project." or "I contributed to project ZEN and resolved their long lasting issue WOOSH which affected any user who tried to do PUT-ISSUE-HERE". You can also add a line or two of what you've learned from the process.

Now that's a good CV entry. And it indeed doesn't matter whether it's your self-started project or contributing to one, those are all different types of experiences which highlight slightly different things. Joining a larger project is almost always loaded with internal politics that need following before your work gets merged in. And starting your own shows that you have the drive to sit down and actually deliver some code while being entirely alone.

Both of those are very useful skills, and one is no better than the other, just some employers may preferer one of them.

1
  • 2
    You are absolutely correct +1, I just had this mental block where every time articles or answers wrote "to get experience work on open source" I always thought, work on other people's projects. And reading, for the first time, that both types (your own or other people's) are considered open-source was a revelation. What goes on the CV was secondary, just wanted to double check that the person that said "they are both OS" knew what they were saying.
    – Mark kurti
    Jul 19, 2020 at 13:09
6

While working on personal projects and community projects are beneficial, I think they are beneficial in different ways.

I think it actually matters greatly. But let me be clear, doing something to advance your skills is always better than doing nothing. Personal projects are one way.

A large part of development is dealing with people. That is something that you won't get much exposure to with personal projects. Things you may not get exposure to with personal projects (as opposed to community ones):

  • Code reviews
  • Understanding code not written by you
  • Merging code from others
  • Dealing with different personality styles
  • Learning from others
  • Disagreeing with others
  • Stepping out of your comfort zone

Companies that are through will look at pull requests of yours to see how you interact with others. They will see how you handle rejected reviews. They will see how you deal with those you don't agree with. It's not all about the code.

Having said that, some companies will not be that thorough, and all they will look for is signs that you care about personal improvement.

So what would be my recommendation:

Do a mix of both. Pick a community project that interests you, which will how you work as part of a team. Also, work on your own projects, which will showcase your individual flair with no restrictions.

3

In more than "thirty-plus" years in this crazy business, I have never actually created an open-source project. And, as a sometimes hiring manager, I can honestly say that I don't have time to code-review your project. I'm not going to look at your source-code, nor ask one of my subordinates to do so.

In my opinion, the most-important factor – especially in a person who's just starting out – is not "technical competency." It is: attitude. Are you willing to learn? Are you willing to adapt – as I have done – to "the crazy way that this company actually does things?" If I give you an assignment and you can do it, will you do it well? And, if I give you an assignment and you don't know how to do it, will you respond professionally?

Yeah – let me strike the word "attitude" and replace it with: "professionalism."

2
  • As a hiring manager what would I need to do to prove I have the right attitude/professionalism if I do not have prior experience? (I'm in this situation: workplace.stackexchange.com/questions/160024/…). Many seem to say you can always replace job-experience with coding experience, what do you think?
    – Mark kurti
    Jul 22, 2020 at 2:12
  • 1
    Actually coding is only a small part in a software developers job. If you job does not contain a certain amount of design, testing, code review and documentation. And then there is the whole complex of "working in a team". Pure coding experience (=hacking around on your pet projects alone) teaches you little in this regard. The best way to get real experience is to start working in a real company as early as possible by getting an internship or student job. This also has the added advantage of teaching you stuff you never wanted to know about, e.g. working with unfancy technologies, languages
    – Manziel
    Jul 24, 2020 at 12:13
1

I would say if you make additions to a well known project, then you can consider yourself a contributor to open-source. Doesn't matter which project you do, just as long as it is well known and you made a useful contribution. I don't think these changes need to be popular or in widespread usage. Just need to be useful for you and possibly to others.

Also of note, open-source for very well known projects tend to have a process to get accepted. So you can't just fork it, make changes, and commit code back. It needs to go through various hoops and will probably get rejected. These open source projects tend to have a bounty board that you can look over and see if you can do it. Generally speaking it would be nice if your stuff got committed into a open source project, but it probably won't be entirely.

Good idea:

You make a small addition to the phpunit code base that lets you test a new framework easily. A very simple 3 line fix.

Bad idea:

You fork someone's calculator app and change the title to your name.

1

A very common (and understandable) complaint from people just entering the job market is: "every job opening wants someone with experience. But I can't get experience without a job!"

The reasoning behind the recommendation to work on open-source projects is that it is a way to gain experience without first having to get a job. The key point is that it's the experience of developing software that is what is really important. Creating a GitHub account doesn't make you a developer. Writing code does (or at least, is a part of it).

Contributing to someone else's open source project means that your contribution is visible and likely to come up against real-world demands (from users, and other developers). Creating your own applications, and using them - or making them so useful that other people will use them - can achieve the same outcome. It doesn't matter which you choose.

The true goal is to be able to answer the question "what applications have you developed?" with "this", instead of "well, I've completed a coding course but never actually written any software...".

1
0

When I read "gain experience through open-source" I also understand this to mean, contribute to an communal open source project, not working on your own projects and making those open-source.

However I think the latter is also an useful experience. And when other persons are forking your repositories you should definitely put that on your CV.

-1

And they replied that it does not matter.

It doesn't matter.

But it has little value unless it's a high profile project. The reason they say contribute to open source is because it's a tiny bit better than nothing at all. It's just another factor to add to an otherwise bare resume.

At beginner level it's not really necessary because most people do not view it as professional experience and it says nothing about whether you can actually turn up at work on time regularly and interact nicely with others. Which are important factors for someone starting off.

2
  • 3
    "But it has little value unless it's a high profile project." I disagree. The OP is a beginner. Everyone has to start somewhere. If nothing else, it gives him a learning objective for himself. And working on a project sure beats following a tutorial or a book (ideally, the OP should do both, follow books/tutorial and work on a project as well). Also, during an interview, even a toy project gives the interviewer something to ask about. If the interviewer has nothing to ask about, to fill in the time, he'll just ask the OP even more random coding questions he found on the internet. Jul 19, 2020 at 2:47
  • @StephanBranczyk yes I agree, I didn't say NO value... any experience is better than nothing and it serves as an ice breaker if nothing else. To most people except another dev it says nothing about work ethic or anything else. And at entry level those are important things to assess. No one expects entry level to jump in running.
    – Kilisi
    Jul 19, 2020 at 3:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .