Guest Blog by ELP Graduate Student Ray Zhang – Electrical Engineering, Computer Science and Engineering – Class of 2017
Having worked at a big software company as an machine learning intern for two weeks, I have a few thoughts to share…
Apples v Oranges | Startup v Big Company
This is the third tech company I’ve worked for. The first one was a 30-person AI startup, which has now grown to a 200 person company. The second one was a big traditional hardware corporation. The current one is a big software company, where I work as a pilot team, focusing on deep learning and autonomous driving.
The first few days or weeks of working in a startup is definitely harder than working in a big established company.
Three years ago, as an CS undergrad only familiar with basic data structure and algorithms, I worked in the AI startup. It was tough. The first day, my mentor assigned me a task, which I had no previous background with, and asked me to deliver the result in a certain time. In the startup, everything moves fast-paced. There would be no one waiting or instructing me. To fulfill my duty, I found myself working until midnight every day, six days a week. I had to gain background knowledge and implement a workable product. Mentors didn’t have any time to discuss the design with me, just check my progress every morning.
The benefit of this was my gaining knowledge in a lot of domains. The side effect was that I wasted much time heading in the wrong direction without anybody pointing it out. In startups we are expected to learn new stuff fast enough to provide a minimum viable product by ourselves, rather than caring about the fine details and robustness.
In contrast, big companies tend to have a more structured and tolerant program for interns or freshman.
In both of the big companies I worked for, there was a mentor who would discuss and/or walk me through their design practice. There were always plenty of people who had decades of experience in their own field, and usually their experience saved me a lot of time from exploring randomly. In other words, big companies can provide good peer resources which help interns grow faster. More established companies usually have a mature workflow that has proved to be effective at scale.
As a future entrepreneur, this is a great opportunity to take a closer look at. I want to appreciate how successful companies manage the internal communication, organization structure, reward/penalty system, collaborate culture, etc.
Where I am currently working as part of an embedded innovation team within a larger company, we are encouraged to seek help across different teams and departments in order to achieve our goals. Internal events are common, weekly even, meant to build connections with people specialized in other fields. When we need help or advice, we can always find people.
On the other hand, the mature system sacrifices flexibility. To start a project or explore a method, we are asked to write extremely long and detailed proposals. We are asked to discuss the written proposals with colleagues, even though some individuals are not that familiar with the problem. Though it helps aggregating thoughts from other experienced colleagues, it seems to me the pace of a new project can be delayed.
What have I learned?
Before this internship began, I kept asking myself how to make the most out of the experience? Would this company have high expectations for me? Do full-time employees simply not have enough time, and need low-cost help? Would they treat interns as a test for pre, full-time employees? In this case, how to strike a balance between the company’s interest and our own benefits? The first thing to consider is what does a student intern want to achieve? How to match my own professional interests with the projects in the company?
This summer, I want to understand how deep learning is applied in the business applications. The project I am working on is to make customized solutions for those who are not satisfied with the company’s existing software. In this internship, I am exposed to direct conversations with customers, interpreting their real need. I figure out a quick prototype, then demonstrate my prototype or design to the developers. I take responsibility beyond being “simply” an engineer; I want the whole workflow to confront me. This summer is shaping up to be a good practice for both my engineering and communication skills.
I also want more awareness about managing the expectations of colleagues and a boss. Interns build credibility through tiny and easy projects. Every time we realize our promise, we gain more confidence. “Dirty work” is not terrible. Doing dirty work all the time and still failing to win the trust of full-time employees is a terrible outcome.
In my first week, I started at training a neural network from existing code. I tried to finish the training and show colleagues the numbers first. Then I started to think “What else shall I do to improve the value of this project?” So I added more features to the existing code, like fancy visualizations of the neural network, new dataset generations, etc. As a result, I got more freedom on the project, and, more colleagues are willing to share their experience with me.
Yes, I’m still trying to figure this internship experience out. I hope my thoughts provide the reader a better understanding about small team, startup, and big tech company differences. All the best!