This is the second part of a blog series where I talk about my experience during my Outreachy internship at NetworkX. If you haven’t read the first part you can find it here.
As you advance through the contribution phase you may wonder how your internship is gonna be in case you get selected. Here is my experience as a NetworkX intern and some tips that could help you through the internship.
I started my internship in December. I was almost done with my assignments at school and was heading into finals season. It’s a wild time to start an internship but the beginning is usually not intense. The first week is about meeting the NetworkX team and deciding what you want to do during your internship. As part of your internship, you’re encouraged to research and contribute in any way you want. That means that you don’t necessarily need to work on the proposed project. I started writing notebooks because I felt confident doing that but you can explore other tasks too. As part of writing notebooks, I spent a lot of time reading papers and doing research. That was fun and let me develop some interesting skills. Also, this gave me a better view of what I want to do in the future as a computer scientist. As my notebooks were about graph isomorphism I researched new isomorphism algorithms and evaluated the possibility of implementing them in NetworkX. While writing the notebooks I read the documentation a lot so I fixed and added some things there too. Definitely contributing in any way you can is the key. For me working at NetworkX was not about fulfilling specific tasks but getting a broad vision of the project and thinking about ways I can make it grow. This approach gave me a good insight into how projects like this are managed and maintained, which I think is the most important thing I learned during the internship.
When you start a new notebook do an initial draft with the general structure of your notebook. That will help you to aim your research and organize your ideas better.
Always do some research first even if you think you know all the material. There’s always some idea, intuition, or interesting application that you don’t know about.
Take your time to learn things that can be helpful for your internship. Outreachy internships aim to help you gain skills so you can continue your tech career. Sometimes it can feel like you spend more time learning than doing and that’s ok! This is above all a learning experience!
Out of ideas for notebooks? Reading what’s already on the nx-guides can be a source of inspiration. Also, you can look for cool graph real-world applications in books and on the internet.
The repository is an incredible source of information about the project. If you are struggling with something, you can look at all related issues and PRs. There, you will be able to find discussions and explanations that can give you a better sense of why things are a certain way.
Learn about the project structure. A Python package is not just a lot of Python code together, there are a lot of other packages used in order to make documentation and testing work. Learning how everything works underneath will usually make your work easier but also it is a great skill to gain. For me, understanding how a project like this comes to life was extremely interesting because It was something I have never paid attention to before.
You will understand things as you go. So don’t overstress if you don’t understand everything. With time, some details will click. But it’s also important not to immediately give up when you don’t get something. The key is to keep your confidence even when you are feeling a bit lost.
Organize your work and learn how to work remotely. If this is your first time working remotely it’s important that you find your own way to organize your time. There are many strategies that can help you figure out how to organize your work throughout the day. Try different techniques until you find whatever suits you best. If you are a college student you may want to use the same system that works for you at school, but working it’s different so you may need to explore other options. For me, it was useful to have two lists: a to-do list because it was motivating to track my progress and an ideas list with things I want to do, usually smaller contributions that I can do when I’m tired of the bigger tasks. I also tried the Pomodoro technique but for me was more effective to work on tasks until I finish and then take a break if I want to.
As part of your Outreachy internship, you will need to write blogs, turn in feedback and attend informal chats. Be aware of that and organize all the deadlines so you and your mentor don’t miss any of them.
Make a cheat sheet with all the useful commands and links. That way you don’t have to go through the process of finding that information again every time you need it. If there is a series of commands that you use a lot try writing a bash script. Here is a repository with my cheat sheet: https://github.com/paulitapb/Outreachy2023
Overall my experience as a NetworkX intern was amazing! Not only did I gain many different skills but also now I am more confident in my abilities to work in tech. I discovered Open-Source communities and I realized I am able to contribute in valuable ways. Furthermore, I now have a better sense of what I want my future in tech to look like and what are my options.
]]>Outreachy is a paid remote internship program for underrepresented groups in tech. All internships are in Open Source and Open Science. To be selected as an intern first you need to :
Fill out an initial application: You’ll need to answer some questions about how you are affected by the systemic bias, and how being underrepresented in your local tech industry impacted your development. Maybe you don’t know how to answer some of these questions, especially if you are still not looking for a job, but it’s important to do some research first. If you can’t find any “official” information, tech communities often do surveys and publish the results. Reaching out to local tech communities that work with underrepresented groups is a great way to find mentors and like-minded people that can support you through your tech career. Take your time to reflect on these questions before writing your answers. Also if you are a college student you need to submit your school calendar. Read carefully all the time requirements and reach out to Outreachy coordinators if you think there are any details about your school calendar that you need to discuss.
Take part in the contribution phase: Once your initial application is approved you will be able to see all the projects. Finding the right project for you is important and also very challenging. One can feel tempted to contribute to multiple projects but unless you have a lot of free time I don’t feel like it’s the best option. Smaller and more constant contributions are the way to go. The contribution phase is not about introducing huge contributions but rather an opportunity to interact with the community, learn about the project, and gain new skills. Definitely finding the right project for you is key and depends a lot on how much time are you willing to put into it and your current skills.
For more information about Outreachy go to: https://www.outreachy.org/
If this is your first time contributing to an open-source project you may feel overwhelmed. Understanding an almost 20-year-old project like NetworkX can feel like it’s going to take forever but don’t worry I have some tips that may be handy for you during the contribution phase.
Learn about the project: Understanding the project is a process that may take some time. Don’t rush it! You don’t need to understand the entire codebase in a day. The most important things that you need to know only will take you a few hours to go through: Learn about the project mission and values, community rules, and contribution process. In NetworkX all you need to know is here: https://networkx.org/documentation/stable/developer/index.html
Start contributing right away: You don’t need to understand every part of the project to make valuable contributions. Start small and use that experience to level up your contributions. At the beginning of the contribution phase, some good first issues are added. Work on them first and then start opening your own issues (Don’t forget to link your PR with the issues so they can be automagically closed). Also, record your contributions on the Outreachy website as you submit them. I only recorded all contributions at the end and that took me a lot of time. If you struggle to find issues or ideas for contributions here are my contributions at NetworkX: https://github.com/networkx/networkx/pulls?q=is%3Apr+paulitapb
It’s not just about writing code. What’s great about big projects is that you can explore many different things. Making contributions to different parts of the project shows that you understand the project on a general level and can be a valuable member of the community.
Don’t be afraid of the community! As a beginner, you may worry about the technical side of the project but understanding the community review process is key. Usually, communities want to grow and that means teaching new contributors about the project. It’s fine if your contributions are not perfect or if you need to ask questions. That’s the beauty of Open-Source communities! Also, don’t be discouraged if a contribution is not merged into the project. Maybe that was already suggested, tested, or deprecated. Take that as a learning experience and even that can give you some ideas for future contributions.
I hope this information helps you to start your Open-Source journey! The NetworkX team is waiting for your great contributions!
If you are interested in my experience during the internship you can find the second part of this blog here.
]]>