Recently, I was in a group that was talking about personal projects and growing your developer skills. Nick made a good point when he said that you wouldn’t expect to be an expert at the guitar when you picked it up for the first time. It takes time, practice, and understanding. And when we’re giving people advice, it can be hard to tell them where to start or how to find the “perfect issue” - although good first issues don’t exist - because everyone starts at different levels. For example, a person who’s learning the guitar but also plays the piano will likely have an easier time learning the instrument than someone who has never tried to play an instrument before. This is why understanding your own skill level can be incredibly important to find an open-source project and issue to work on.
Understanding your skill level will help you choose the right tasks, decrease frustration, and guide your open-source journey. In this blog post, we'll explore why assessing your skill level is important and provide a personal inventory to help you evaluate your abilities.
Why It's Important to Assess Your Skill Level
Understanding your strengths and weaknesses allows you to be more efficient, set realistic goals, and find the right open-source project to contribute to. Additionally, accurately identifying your skill level will allow you to match issues to your abilities, creating an experience that leads to confidence and productivity and prevents you from feeling overwhelmed.
Defining Skill Levels
Before we go into the questions, let’s define different skill levels to help you as we inventory.
Beginner
Beginners have a basic understanding of a programming language or technology but don’t have practical experience. You might have used the language in tutorials or simple exercises but haven't implemented it in a real project.
- Example: You know the syntax of Python and can write basic scripts, but you haven't built a complete application yet.
Intermediate
Intermediate developers have practical experience and can work on projects independently. You understand core concepts and have implemented them in real-world scenarios, but you might need guidance for more complex tasks.
- Example: You have built web applications using JavaScript and a framework like React, but you still look up advanced features or best practices.
Advanced
Advanced developers have deep expertise and can handle complex tasks with confidence. You have extensive experience, contribute to architectural decisions, and often mentor others.
- Example: You have several years of experience with Java, have built and maintained large-scale applications, and are comfortable with advanced topics like concurrency and optimization.
Personal Inventory: General Questions
Understanding your general experience helps lay the foundation for assessing your skill level. This section focuses on your overall exposure to software development, helping you gauge your position in the broader landscape.
- What programming languages are you most comfortable with?
- How many years of experience do you have with software development?
- Have you ever contributed to any open source projects before? If yes, which ones and what types of issues have you contributed to?
- How frequently do you code (daily, weekly, monthly)?
- What types of projects have you worked on in the past (web development, data science, mobile apps, etc.)?
Technical Skills
Evaluating your technical skills provides a clearer picture of your capabilities in specific languages and tools. These questions help you pinpoint your strengths and identify areas for improvement, to help you find tasks that align with your expertise level.
- How would you rate your proficiency in your most-used languages/technologies (Beginner, Intermediate, Advanced)?
- Which development tools and environments are you familiar with (Git, Docker, VS Code, etc.)?
- Are you familiar with version control systems like Git? If yes, how proficient are you?
- How comfortable are you with debugging and troubleshooting code?
- Have you worked with any frameworks or libraries? If yes, which ones (e.g., React, Angular, Django, Flask) and how would you rate yourself (Beginner, Intermediate, Experienced)?
- Are you familiar with the process of contributing to open source projects (reading contributing guidelines, taking issues, branching, writing meaningful commit messages)?
Core Skills and Collaboration
Because so much of open-source work is asynchronous, good core skills are important for effective collaboration and communication within open-source communities. The questions below assess your ability to work with others, understand code written by different developers, and contribute positively to the team.
- How comfortable are you with reading and understanding other people's code?
- Have you ever participated in code reviews? If yes, how often?
- How do you typically approach problem-solving in your projects?
- How comfortable are you with writing documentation for your code?
- Have you ever mentored or taught others in programming or related subjects?
Project Management and Organization
Effective project management skills help you stay organized and productive. Understanding how to prioritize tasks, manage time, and use project management tools (like GitHub projects) is helpful when contributing to open source projects, especially because of multiple contributors.
- Have you ever managed or led a software project? If yes, what was your role?
- How do you prioritize tasks and manage your time when working on projects?
- Are you familiar with any project management tools? If yes, which ones?
- How do you track and stay updated with the latest developments in tech?
Learning and Development
Continuous learning is an important part of being in tech because it allows you to stay relevant and improve your skills. These questions should help you reflect on your learning habits and identify opportunities for growth.
- How do you usually learn new programming languages or technologies (online courses, books, tutorials)?
- Have you ever completed any online courses? If yes, which ones?
- How comfortable are you with learning new technologies and adapting to changes?
- What are your current learning goals or areas you want to improve in?
- Where do you first turn when you want to learn something new (documentation, looking at other projects, etc.)?
Now that you’ve taken the inventory, you can more strategically approach open source contributions. Here’s how you can use this self-assessment to shape your approach practically:
- Set Realistic Goals: Based on your skill level, set achievable goals. If you’re a beginner, start with smaller tasks labeled “good first issue.” You also might find that you’re not ready to contribute to open source. That’s ok. Work on the skills you need to make your first contributions. This includes things like reading directions, paying close attention to your work, knowing how to ask questions when you’re stuck, etc. If you’re intermediate or advanced, look for more challenging tasks that help you build your network, solve a problem, or grow your skills.
- Choose the Right Projects: Use your assessment to select projects that align with your interests and expertise. Beginners might start with projects that have clear documentation and active communities - our Intro to Contributing Course is a good place to start if you’re ready to begin contributing. More experienced contributors can find complex projects that require deeper technical knowledge.
- Focus on Learning and Development: Identify the areas where you need improvement and seek out resources to fill those gaps. This could be online courses, tutorials, or even mentorship within the open-source community. For example, if you’re not familiar with git, you should find resources to help you learn before committing to an open-source issue.
- Engage with the Community: Understanding your collaboration skills can help you better engage with the open-source community. Participate in discussions, attend community events, and contribute to code reviews. You’ll be able to improve your skills and build valuable connections.
- Improve Project Management Skills: Use project management tools to organize your contributions effectively. Prioritize your tasks, set deadlines, and track your progress. This will help you manage your time better and contribute more efficiently.
- Seek Feedback and Iterate: Use your self-assessment as you seek feedback from project maintainers and other contributors so you can continuously improve and adapt your approach to contributions.
These practical steps can help you to leverage your self-assessment to make meaningful contributions to open-source projects and to create a positive impact on the open-source community. Happy contributing!
Top comments (12)
Before contributing to open source, you should really understand what you are doing and why. Blindly participating in open source because 'it will be great for your career' isn't really a great thing to do - and the advice to do so is flawed...
This is a great read on the topic, that gets it right:
💡What contributing to open-source is, and what it isn't.
Samuel-Zacharie FAURE ・ Apr 19
Hey Jon Randy can you please suggest that how can I find best repository for open source.??
My post next week is going to talk about that too. But I don't necessarily disagree with Jon.
That's just the point - you shouldn't really go actively looking for projects to contribute to. It should be something that happens organically, and something you feel you want to do. Ideally it should be a project/library/document/whatever that you've already used and are working with, and can see something you could fix/improve/add.
I am glad I found this! Thanks a lot for the effort and such detailed self-assessment check list. I started my open source journey with a very supportive organisation. Now thanks to you, I get to explore more 🙂
Congratulations! What project are you contributing to?
Thanks! Started with an organisation called Savvato.
Planning to contribute to OpenSauced as soon as I my skills pass the assessment👍🏾
Hi BekahHW,
Top, very nice !
Thanks for sharing
Really useful post. This help's me a lot....
To assess your skill level before contributing to open source, consider the following steps:
Review project documentation: Check the README, contribution guidelines, and issue tracker to understand the project's complexity and requirements.
Evaluate your experience: Reflect on your familiarity with the project's technology stack, coding standards, and similar past projects.
Start small: Begin with minor issues like documentation updates, bug fixes, or small feature enhancements to gauge your comfort level.
Seek feedback: Submit your contributions and request feedback from maintainers to identify areas for improvement.
By following these steps, you can better understand your readiness and grow through practical experience.
Unpopular opinion: Just start. Yes, it's important to pause and reflect what you are doing and why. Yet for starters, the open source projects you are interested are likely to have a large code base and you will never feel good enough to contribute. What most open source newbies don't recognize is that you don't have to make big contributions. Making a PR to correct a typo is a valid contribution. It's easy to get approved, and it's a good way to get the ball rolling because it boosts your motivation.
Amazing post
Some comments may only be visible to logged-in visitors. Sign in to view all comments.