Stories From CodeDay  ·  September 08, 2020

What Its Like to Run a Virtual Internship with CodeDay Labs

Erika Lamothe, Community Member

This is a guest post written by Omar Shehata, a software engineer at Cesium, who mentored a team of students for CodeDay Labs 2020.

Ive been volunteering with CodeDays various programs on and off for about 6 years. One thing that has kept me coming back is CodeDays genuine emphasis on levelling the playing field. I think this is best summed up by this tweet on their selection process for this year:

This matters a lot to me because Ive been fortunate enough to start learning to code very early in my life, which made a lot of career things relatively easy for me. I remember trying to explain to a friend in college that Im really not any smarter than them, I just had 2 years to struggle through these same concepts that they were now trying to pick up in a few weeks in class. I could see how big of a difference it made having had mentors who were patient with me and inspired me.

But the other thing that has kept me coming back is that the CodeDay team really cares about creating an awesome experience for students. One big change in this years CodeDay Labs program was that mentors would pitch a project and students would get a chance to rank their favorite ideas before getting paired up. My biggest worry last year was making sure the students I was mentoring were working on something they enjoyed and wanted to learn more about, so it was great to start with a team who had already picked my project as one of their top choices.

Making my pitch

At Cesium, I work on a platform for creating 3D geospatial apps (think monitoring construction sites, visualizing geological changes in the Earth, urban planning, or anything that needs to visualize real-world data). The project I pitched was to create a web app to visualize open data that Lyft had made available from their self-driving car work.

I picked this project because it was something that we had actually considered doing at work at some point. This was important to me since part of the philosophy of CodeDay Labs was to show what it would really be like working at this company. 

Students got to choose the projects they wanted to work on. Mine is in the top right.

The other thing I really liked about this project was that it had a concrete goal (just visualize the data on a web page) that I knew was achievable in the 4 weeks the students had, but it also had room for the team to take it in different directions if they wanted. For example, you could:

  • Overlay the the photographs the car took on top of the sensor data to make it easier to interpret or validate the sensor readings
  • Display the prediction results to visualize how well the machine learning model was predicting where pedestrians or other cars were on the road
  • Plug this visualization into common data science workflows, so researchers could use it as a way to easily share the results of their work on the web

One of the most attractive things to me about a career in tech is feeling empowered to bring your ideas into reality, and I wanted to leave room for the students to feel a sense of ownership here. 

Getting to work

We quickly discovered that 4 weeks is not a lot of time! The first week was mostly spent in an exploratory phase. When I realized we had to submit a video of our progress that Friday, we scrambled to put something together. 

In retrospect, that was a really good wake-up call. I had defined the project but left the timeline, direction, and scope up to the students. This was a mistake because its very hard to plan these things without a lot more experience and a lot more time spent exploring. 

On the other hand, I only had about 4-5 hours a week to commit as a mentor, so I couldnt fully be a project manager either. Halfway through the second week we found our sweet spot: each week I defined a concrete goal for each member of the team to accomplish, and every day the students posted a standup-style update on Slack saying Ive been working on X, I got Y done, but Im stuck on Z. That made it easy for me to check in every evening and suggest things to try for anyone who was stuck, or talk about it more in-depth in a 1:1 call. 

Visualizing the LiDAR (raw sensor data) from the self-driving car on a web page using Cesium.

Each point represents something the laser hit, and they are colored based on their distance from the car. LiDAR data is used to reconstruct the 3D scene and identify objects, like pedestrians and other cars. 

Doing 1 on 1s 

One thing the CodeDay team heavily recommended was doing regular 1 on 1s with each student. This was all about giving the students a chance to talk about whatever they want, whether it was about the project or more broadly about what its like to work in the industry. But they werent sure how to best spend this time, and neither was I. It occurred to me that What should I talk about in my 1:1 with my manager is a very common question, and this was actually a very insightful part of the internship experience, for both of us! 

Learning how to make good use of 1:1s was something I was slowly getting better at and it was useful to do it from a different perspective. We often had meta-conversations about how to bring up when things arent going well, or how to use this as a time to ask for changes you want to see. This comic by Julia Evans sums up this advice really well:

Comic by Julia Evans

Wrapping up

One of the major roadblocks we ran into was understanding the format that Lyft made its data available in. This format worked great with a lot of data science and machine learning Python libraries, but we were trying to visualize it in JavaScript, and it wasnt clear what the best way to do that was. 

This was a crucial step, and I didnt know the answer to it myself. It was exciting to be pushing into new territory like this and doing something that hadnt been done before in this particular way. We eventually figured it out by looking through how the Python libraries parsed the files, which was another really good life lesson: a lot of times the answer isnt documented, and you just have to ask on the forum or dive into the source code!

A lot of the project came together in the final week once we passed that hurdle. This was the most exciting part for me. Partially because it was really cool seeing the team working more independently, adding new features every day, and meeting with each other without me to figure out problems, but also because we knew there was going to be one big Twitch stream where all the projects from CodeDay Labs were going to be presented. It felt like being part of something bigger like this project really was going to see the light of day and it really motivated everyone to polish it as much as possible.

You can learn more about the project that Shania, Yen, and Mehrab created by checking out their GitHub page:

If you liked this post, an easy way to support our work is to follow us on LinkedIn or Twitter. We often post volunteer and mentor opportunities.

Follow us on LinkedIn or Twitter