Outreachy Internship Wrap-up

I began my Outreachy internship as a self-taught front-end developer and I was over-the-moon when I learned I would have the opportunity to intern with the Firefox Add-ons team at Mozilla with my mentors, Bob Silverberg and Andrew Williamson.

As I reflect on this amazing experience, I remember how I had expected to complete a front-end internship project as all of my contributions on my Outreachy application were to issues in the Add-ons front-end project. I had hoped to also fix a minor back-end issue or two, with the guidance of my mentors, as I was not familiar with the Add-ons server project. Oh how I was in for a surprise!

What was one fear you had about the internship that turned out to not come true?
It turned out that my whole internship project involved implementing new features to the AMO Homepage Curation Tool on the back-end utilizing Python and Django, which I had never used. When I learned this, I was afraid I could be terminated from the internship during the first few weeks for either not having any back-end knowledge or not learning fast enough. However, both Bob and Andrew were encouraging, patient, and ready to answer any questions I had. In addition, other Add-ons team members would also jump in when I needed help.

How did your Outreachy internship help you grow your skills?
If my Outreachy internship had panned out the way I had expected, I would currently be limited to jobs as a front-end developer. This internship has opened up more opportunities for me, I can now explore front-end, back-end, and full-stack opportunities.

How did your Outreachy mentor help you along the way?
Both of my mentors, Bob and Andrew, not only provided me with guidance throughout my project and in coding efficiently, but they also taught me community norms as well. I learned to break down my project into smaller issues that would also make it easier for others to review, as well as make the project less overwhelming for me. They were both consistently reassuring and helped build my confidence while I coded in Python and Django for the first time.

How did Outreachy help you feel more confident in making open source and free software contributions?
Prior to Outreachy, I had not contributed to an open source and free software project before as I had imposter syndrome. It was less intimidating when I figured other Outreachy applicants had never contributed to projects before either. In addition, participating communities were expecting newcomers to try their hands at fixing real issues. After I submitted my second contribution, it definitely became less daunting and I began to make multiple contributions a week.

What communication skills have you learned during the internship?
There were rarely occasions in which I had to verbally discuss code with others prior to Outreachy. I’m getting better at being able to explain the thought process I either took or would take to solve an issue.

What technical skills have you learned during the internship?
During my Outreachy internship, I learned a programming language (Python), a web framework (Django), and how to use Docker. I also became more familiar with test-driven development and Git commands.

What parts of your project did you complete?
I completed the feature that provides the admin user with the ability to upload images to add-ons featured on the AMO homepage. The admin is no longer limited to choosing an image from a gallery of pre-selected images.

I am almost done with the second feature. The admin user can now build and reorder modules of pre-defined sets of add-on extensions and themes that will appear on the AMO homepage.

What are the next steps for you to complete the project?
I am currently working on including the extensions and themes defined in each module from the Add-ons Search API to a new API endpoint that the front-end would then access to display the modules on the AMO homepage.

Thank you!
To Sage Sharp and the Outreachy organizers and sponsors, thank you for providing me with this incredible opportunity!

To Bob, Andrew, and the Mozilla community, thank you so much for being so welcoming, for your patience and guidance, and for sharing your knowledge! ❤️

Modifying expectations

I am currently tracking along with my Outreachy internship project as expected. However, that may all change in the next weeks. 😬

What was your original internship project timeline?
My original internship project timeline was based on the number of features to complete during my internship – two major features and one minor one.

5/19 - 5/29: 
Onboarding and working with mentor to set expectations for the internship (2 weeks)

6/1 - 6/26:
Complete major feature #1: Ability to reorder or change the modules below the hero area on the AMO homepage (4 weeks)

6/29 - 7/24:
Complete major feature #2: Ability to upload hero area images for the primary hero (4 weeks)

7/27 - 8/14:
Complete minor feature: Update the admin tool to use thumbnails for images (3 weeks)

Which original goals needed to be modified?
Once I started my Outreachy internship and was able to discuss the features with my mentors, I found that my original timeline needed to be modified.

As one of the major features still needed to be discussed among the team and the minor feature could piggyback off of one of the major features, I had to update my timeline.

5/19 - 5/29:
Onboarding and working with mentor to set expectations for the internship (2 weeks) 

6/1 - 7/10:
Major feature #2: Ability to upload hero area images for the primary hero (4 weeks)
Minor feature: Update the admin tool to use thumbnails for images (1 week)

7/13 - 8/18:
Major feature #1: Ability to reorder or change the modules below the hero area on the AMO homepage (4 weeks)

What goals have you met?
Currently, the admin user can now upload images to add-ons featured on the AMO homepage and the respective thumbnails are used in the admin tool.

A broader goal that I have met is working on issues on the back-end. I am now familiar/using Python, Django, and Docker for the first time.

What have you accomplished in the first half of your internship?
I have completed one of the major features and the minor feature.

What project goals took longer than expected?
While not a project goal, I did not anticipate submitting my first pull request one month into the internship.

Why did those project goals take longer than expected?
I was used to making multiple contributions during the Outreachy application process – though they were for small issues and in a programming language and framework I was already proficient in. Before I could solve any issues, I had to learn how to write it first using Python and Django.

What would you do differently if you were starting the project over?
I would have studied Python and Django before the start of the project. I had assumed I would be working on a front-end issue, as all of the contributions on my Outreachy application were front-end fixes on a front-end project.

What is your new plan for the second half of the internship?
I am going to give myself a week headstart for the other major feature and hope I can finish it by the end of my Outreachy internship, as it seems more difficult than my first feature.

My Outreachy internship project at Mozilla

As previously mentioned, I was selected as an Outreachy intern for Mozilla. I joined the Firefox Add-ons team and my internship project involves implementing new features to the AMO (addons.mozilla.org) Homepage Curation Tool within Django Admin.

I was only proficient in JavaScript, React, and Redux when I applied to Outreachy, so I spent my first two weeks learning Python and Django while being onboarded onto the team.

During the course of my internship, I will add a feature that will provide the admin user with the ability to upload images to an add-on featured on the AMO homepage. This feature will no longer have the admin only limited to the pre-selected images in the gallery.

I will also add a section in Django Admin that will allow the admin user to build and reorder modules that will appear below the hero area on the AMO homepage. These modules are sets of pre-defined add-on extensions and themes, such as Recommended Extensions, Popular Themes, etc, based on query data. As the front-end is currently calling multiple API endpoints to build each module, the front-end will only need to call a single API endpoint with this update.

I am excited for this challenge, but I definitely have my work cut out for me – wish me luck! 🙂

Everybody struggles

EVERYBODY! And if you don’t believe it, just remember the cute illustration below that says it best –


And even experts struggle too!!

When you are struggling, it is advised to ask for help, but if I am being honest, my struggle is knowing when it’s time to ask for help, especially during my Outreachy internship at Mozilla.

Being self-taught, I am used to struggling on my own. My curiosity won’t let me drop it and I know I will eventually find a solution/understand what was unclear to me. I’m not used to having mentors as a source for help.

I think it’s best when asking for help, to not only state the problem, but also share where and/or why you think the problem occurred, as well as what you tried to fix it. It shows that while you may not know the answer, you made a hypothesis and investigated a solution. This will also help the person correct your understanding of the issue and/or guide you to a solution.

While I am still working on learning to ask for help, I’ve learned that people are willing to help those who ask for it. 🙂

About Me: An Outreachy Intern at Mozilla

Hi! I’m Lisa. I was selected as an Outreachy intern at Mozilla and I will document my experience throughout my internship in this blog.

I am a self-taught front-end developer of two years, though I have started to dabble in back-end development as well. Prior to self-learning, I worked in the advertising industry and specialized in the planning, buying, and analytics of digital media. My accounts over the years included Bristol-Myers Squibb, Kohl’s Department stores, Procter & Gamble, and UBS financial services.

Core values
When I had browsed through the list of core values to see which ones were most important to me, I couldn’t help but think I’d be sorted into a Hogwarts house. Nevertheless, the core values that are most important to me are curiosity, determination, and knowledge (which would probably place me somewhere between Ravenclaw and Slytherin).

Curiosity resonates the most with me as I am always wondering ‘how?’, ‘why?’, or ‘what if?’. I suppose knowledge is just the eventual outcome gained from my curiosity. And, to be honest, I’m not sure if it’s determination or just my sheer stubbornness to accomplish my goals because I have a need to see things through to the end.

Motivation to apply to Outreachy
In search of my first internship in the tech industry, I discovered there weren’t many options for those with a non-traditional background. It also didn’t help that I did not have any relevant work experience on my resumé either – just a few front-end projects. It seemed like I was just sending my resumés and applications into a black hole.

With Outreachy, your contributions to a free and open-source software project – which are required in your applications – can also be added to your resumé. In addition, you have access to a network that not only consists of the Outreachy community, but participating companies in the tech industry as well. Therefore, even if I didn’t get selected for an internship, I would still gain valuable experience and connections just by applying to Outreachy.