I have been trying to get some programmers to work for me on Upwork lately. Every person who applied raised so many questions about whether they could actually handle my project.
I haven't hired any yet.
Adding a JOB to Upwork
I put a very simple job description with a few questions to answer:
and started receiving many unhelpful applications. I would not be surprised if many of them were created with ChatGPT.
And then got so many applications with unresolved questions:
- How can I know they can handle my project?
- How do I know they don't lie?
- How can I know if they can handle it with a high-quality contribution?
- How do I know they know how to communicate with me properly?
So many unanswered questions put a big risk in hiring any of the candidates. If they are not good, I can:
- Lose time
- Lose money
- Lost my time (because I need to teach them)
I would need to interview and test every candidate (big headache)
Open source shines
Now, let's assume somebody contributed to my open-source repository.
Now I know:
- Their level
- Their ability to handle big projects
- How they communicate
I can tell you that in Novu, many contributors have shifted their roles from contributors to employees.
Mistakes most developers do
I got an application from one person over GitHub. This is their GitHub profile:
Instead of making many contributions to different open-source repositories, they tried creating and applying their own demos.
That's a big mistake.
Every developer with 1+ years of experience can start something from 0; it's much easier to be in a controlled environment.
Actually, contributing to a large code base (and getting merged) is a different level.
Here is a message I got from the HackSquad discord:
"But beginners can't contribute to their gigantic code bases"
This is how you reduce the risk when applying for a job.
SO, INSTEAD OF CREATING 100 DEMO PROJECTS, FOCUS ON 1-2 CONTRIBUTIONS FOR A BIGGER CODEBASE PROJECT.
Be strategic with your contribution
Before you contribute to any big codebase project, check:
- Is it a company?
- Are they hiring?
- Do they have an open position for what I am looking for?
- Can I show this contribution to a similar company or in Upwork?
Project you should contribute to
All the listed projects are fully remote companies that hire everywhere.
1. Gitroom
I don't have a huge budget, but I am trying to offload some of the work. This is a good project if you want to:
- Start with a mid-size project
- Work with the biggest technologies out there, such as NextJS and NestJS
- Be exposed to more open-source companies (because Gitroom) that support many open-source companies.
I have also opened a bunch of cool issues you can start with!
ย
2. CopilotKit
Today, there is a new concept of "AI Engineer." It's mostly for people who are interested in building stuff with AI without building the AI themselves. Copilotkit is building chatbots that wrap existing LLMs. This is a good project if you want to:
- Work with LLMs
- Work with NextJS and, in the future, more frameworks
- Do some cool AI shit :)
ย
3. Winglang
While many people go to learn computer science, they work as developers and not engineers to program full-stack software; you don't have to learn CS (I barely finished high school). If you want to pursue a career as an engineer, This is a good project if you want to:
- Build a transpiler that takes code and converts it to JS at the end
- Write sophisticated algorithms
- Build a deep infrastructure
ย
4. LLMWare
I asked Santiago what the biggest trend in AI is today. He said that RAG and LLMs are the biggest hypes or mostly the future.
LLMWare are killers with everything connected to RAG. This is a good project if you want to:
- Play with RAG
- Play and fine-tune models
- Be a Python professional
ย
5. Novu
I worked for Novu, so I can tell you it's a good company :)
Their codebase is pretty big (3 years of coding). This is a good project if you want to:
- They have already hired many community members
- Easy codebase full-stack javascript
- Huge community (it's just fun)
ย
6. Taipy
I love Taipy. They build a unique Python app builder; this is a cool project because it's not as easy as full-stack JavaScript applications. This is a good project if you want to:
- Learn Python
- Showoff with a kick-ass contribution for a large codebase
- Be a part of a big community.
If you are an open-source company also hiring, add your repository in the comment :)
Top comments (64)
The fact is, when I started learning GitHub/Git, I wasn't even aware of open source.
Over the course of 2 years, I learned a lot and made numerous contributions to other open source projects as well as my own. Most of my learning came from open source, and I'm very glad that I started this journey.
I've even received very good offers (from direct founders) based on my GitHub profile alone, without a portfolio.
So, I don't think it's that hard to begin. It would take around 20 days to learn most of the things and start contributing.
It also improved a lot of things such that I know how to build a SAAS from scratch.
All thanks to open source :)
Hello sir, I need some guidance for contributing to opensource I'm currently learning development from opensource course - The Odin Project.
I would love to learn this as well.
๐ฅ
Nice article! I can say that we've also hired from our community in the past and will likely do so in the future
Knowing the people in Wing, every developer should strive to work there.
Which community
github.com/winglang/wing
Nice article!
For those who are looking for the open source issues/tasks to contribute. I've created a repository to summarize the issues filter like
help wanted
,good first issues
,bug
, ... Check out: github.com/tungbq/find-github-issue to start your contributing journey ๐Why is it only showing my issues in my gits when it directs me to the GitHub app.
Guess you gotta not use the GitHub app
Thanks for pointing this issue out @zombodotcom, it works fine on the browser but seems like the GitHub app does not support these filters.
I will check to see if we could have solution to resolve this issue.
Contributing Open Source is not for beginners.
I think everybody can do it. But it will take you more time.
Maybe, but it is difficult for most entry-level junior developers.
Well, but think about it.
If you can't contribute to a big codebase, how do you expect a company to hire you? :)
Showcase personal projects on portfolio website, github profile, linkedin profile, resume & cover letter, networking with other people e.t.c...
I am not talking about how to find a job.
I mean, once they hire you, how are you planning to work on an existing big project?
Honestly bro i don't know. but, OS contribution might not be suitable for most beginners my guess.
So you have to raise to the level when you can.
Because that what you will do in the actual job :)
Right!!
How should I approach contributing to open source if I am currently a beginner?
I'd love to get some tips!
I know HTML, CSS, vanilla JS, some C, Java and SQL due to college but I don't know enough to contribute to a big repo.
You would be surprised how little you need to know to attempt contributions. Foundational knowledge is of course required, but you can begin with only that. The big thing is to comb through open tickets on say GitHub Issues. Most larger repositories will have specific tags mentioned in their Contribution documentation often mentioned within the README.md file; for example "beginner" "great-first-ticket" etc. So you find one of these and jump on ones that you think you can do or most especially those you think you cannot. Then learn something. It's not like you have to get it done there's no real timeline worst case someone else gets it done before you but your fork and commit still exist all the same. That's experience. Also it's pretty normal to not have your PR merged there's often many others trying to contribute it's just a part of the game it's not a personal thing.
Finding a repository to commit to can just be done through "Discovery" features or if you know of a library or something that you have used in the past. I find these to be the best ones as I already know how to use it to some degree and am more motivated to improve it. That's not required of course, but something I personally like to do. Finding a repo does not need to be a huge ordeal if you are having trouble just search by language and poke around randomly. Bigger projects have more opportunities especially for newer individuals but also more "competition".
Getting started as I mentioned before is usually just reading the contribution guidelines documented in the README. First one is the scariest, but just take the plunge and you'll see it's not so bad.
Another note is you do not need to even work on open issues/features you can work on ones that have been already completed but pretend like you are going to implement it yourself. You of course will not have this code merged as it's already been resolved but it's a great way to gain some comfort in contributing with the added fallback of having a solution already done to compare against. I would HEAVILY discourage looking at the solution unless just absolutely stumped for days, or to compare your already working solution. Great way to learn new ways of doing things.
What I will say is you will likely not feel "ready" so don't spend forever preparing. This will end up being a scenario where you never contribute to existing codebases. Just jump in when you've covered the basics required for a language, framework, library, etc. Learning "on the job" is pretty normal.
I did this for VS Code yesterday but the issues I found went up my head. I do know basic JS but the beginner issues felt daunting and impossible.
I've not been able to find a repo whose issues I've been able to solve.
Any recommendations?
Well, you start by building apps yourselves. You can't avoid it - think about a project and develop it.
Then, contribute to a bigger codebase.
Thanks!
Nice article, Nevo, and a nice reminder to anyone looking to get started!
One of the coolest things about OSS is that your GitHub becomes its own resume. GitHub speaks for itself and companies notice.
I strongly disagree.
I think you should start building your own demos first, before trying to contribute to a larger project. You need to understand the basics of how to code and use source control, before you can contribute properly to someone elseโs project.
And have you thought about the importance of looking at someoneโs experience, via a CV. It is actually quite easy to tell if someone is making stuff up. A good CV with lots of commercial experience is surprisingly difficult, to fake.
There are also services like TestGorilla that provide a way of filtering out candidates that have little or no coding experience.
I love when candidates put a GitHub link in their resume. I always click it and look. Usually there isn't much there. But when there's significant code there that I can glance through, and it looks good, that scores major points with me. I would only spend a few minutes looking at their code, but it can tell me a lot.
However I'm a bit biased, being an open-source contributor myself. I know that plenty of other people reviewing resumes won't click that link, and will just go and look at your experience instead. That's weird to me, but it's reality. But putting a GitHub link on your resume will never hurt you, for sure.
I've been working full time for almost 3 years now.
Always felt like even if you tried to keep up with a small project that's caught on momentum, you'd have to spend quite a lot of time to understand the proper working on that particular project in order to be able to make a significant contribution.
Isn't it sort of cutthroat trying get your PR merged in an open source project?
I started contributing to open-source projects a few years ago, focusing on projects I use in my work, such as the Ruby on Rails framework and various gems. Some of my pull requests (PRs) have been merged, while others were closed, and a few are still under discussion. Contributing to large open-source projects like these can be challenging, as you need to thoroughly explore the project to become familiar with its different components.
From my experience, a good starting point is to review existing PRs and observe how other contributors work. By refactoring small sections of code, you'll begin to understand key aspects of the project. Additionally, contributing to smaller open-source projects can provide valuable experience, as they are often easier to explore and refactor.
Overall, I've found that while contributing to open-source projects isn't easy, it's also not insurmountable for anyone willing to put in the effort.
Thanks
Some comments may only be visible to logged-in visitors. Sign in to view all comments.