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.

My experience as an intern at NetworkX#

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.

Here are some specific tips that can help you during your 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:

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.