My Summer Internship: Connecting the Next Dot

I had set myself a goal at the beginning of summer break: to intern at a software-related company and learn as much as I could.

A little over two months ago, I started to look for internships. I knew I had a strong interest in software, but I had no previous work experience to look back on. I didn't know what to expect outside of the classroom as I had just taken two introductory computer-science courses at my university and read some cool articles about machine learning. I was also curious if I would truly enjoy working in the software industry. Regardless, I applied for a data science internship at Data Wow. And here's what I learned.

Time to Learn

Initially, I went into the workspace to learn more about data science. I spent the first couple of days feeling a bit out of my depth, as I sat next to four other interns who were all rising seniors studying data science. Thanks to my colleagues around me, I started to learn the fundamental tools and concepts related to data science such as using scikit-learn to implement linear regression in Python.

Data science was a lot more math heavy than I could've imagined. It has a heavy reliance on statistical methods and linear algebra. As a rapidly evolving field, our data scientists have to be on top of the latest papers published (almost daily) to learn about the current methods for state-of-the-art performance.

Alongside some data science, I began to learn more and more about the tools that were used by the team. Amazon Web Services for the cloud services, Docker for deploying applications, and Flask/Django for creating web services. And also the usual command line and Git commands. A couple of colleagues guided me throughout the learning processes and gave me sub-tasks to work on such as creating interactive Flask web applications and data preprocessing from CSV files.

Involvement

After I began to talk more with my colleague, he suggested that I could come work with him on a task.

Our team was trying to come up with an idea to improve the current architecture of our ImageAI predictor, and hopefully this would result in more efficiency in the process. In a team meeting, we were talking about the "rendezvous architecture," which was supposedly a known software architecture suited for handling requests and writing results from our machine learning models.

I was assigned to work with a software developer in the team, and slowly but surely we started to chip away at the task. With his guidance, I got acquainted with how our API functioned and made a list of the mini-tasks our new architecture had to do.

We began by drawing diagrams as he walked me through how KAFKA (a queue system that would enqueue the prediction tasks) would work in conjunction with mongoDB (a document-based database), in order to start the prediction tasks and store the results. After my understanding of the architecture was put in place, I began to code.

A week later, my code was deployed and successfully made it to production. It was a rather fun and satisfying week.

For the rest of my internship, I indulged most of my time helping out with software development tasks similar to the one above. These are some of the other things I helped the team with:

  1. Deployed a new demographic model for our main ImageAI service
  2. Build an API for a Japanese OCR (Optical Character Recognition) project
  3. Code re-structuring of our Face Recognition PoC
  4. Re-building an Emoji search from a previous intern's work for our Text AI QA testing site
  5. Feature implementations (multithreading to increase prediction speed, graceful shutdown procedures, etc.)
  6. Documentation of ImageAI architecture and miscellaneous bug fixes

One of my favorite things about software development is the practice of having my code reviewed. I cherished the minor discussions over implementation details and learning about important it is to do things the right way so that the code will transition smoothly to production.

Software-related internships are truly what you make it to be. In my opinion, hands-on learning is without a doubt the most optimal way to learn as much as you can. I never felt like I was alone during my time at Data Wow, since I tried to stay involved with the team's projects and ask as many questions as I could.

I'd like to thank DataWow for providing me with a memorable internship experience, and helping me verify what I'm passionate about. Also, I want to specifically thank the mentor I've mentioned (and also everyone else in the team, you guys are great) for all the guidance you gave. Regardless of what the future holds for us, I know that I will look back on this first experience as the original base to my professional career.

Now, I can return to my sophomore year with having fulfilled the goal I had set myself at the beginning of my summer break.

"You can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future." - Steve Jobs

Have a question?

Drop us a line and we will get back to you