November 20, 2019

Employee spotlight: Teddy’s SWE internship at Smartcar

Teddy Wahle

Software Engineer

Hi, I’m Teddy. I’ve been interning with Smartcar’s engineering team this fall, and I’ve decided to share my experience by writing a blog post about my time here. If you’re looking to intern at Smartcar or at any other tech company out there, just keep on reading!

🎉 My first day: Hello, Smartcar!

Smartcar’s engineering team is divided into two smaller teams: the Platform team, which builds out the API infrastructure and API endpoints, and the Developer Experience team, who designs and builds the customer-facing parts of our product. For the course of my three-month internship, I joined Smartcar's Platform team.

On my first day here, I got to meet everyone and to see the office. Then, I sat down with Smartcar’s CTO Sanketh, who gave me an extensive, white-boarded Engineering Overview of Smartcar’s systems. There were a lot of moving parts, but Sanketh and my manager Gurpreet assured me that I didn’t need to understand everything right from day one.

The Engineering Overview was a great way to kick off my internship and to get acquainted with Smartcar’s tech. During my first week, I also got a Smartcar Overview from our CEO Sahas, a Marketing Overview from Charlotte, and a Recruiting overview from Mathilde. All of those helped me understand what other Smartcar departments focus on and how the whole organization works together.

🤓 My first week: understanding the customer

At Smartcar, every day is about making the lives of developers easier. Of course, by “developers” we mean our customers, who are building applications and services on top of the Smartcar API.

During my first week, my assignment was to become one of these developers. I had to build an app that uses the Smartcar API. It was fun! I had the freedom to come up with my own idea and to implement it in the way that I thought was best. Frankly, it felt like I was hacking on a side-project. But along the way, this simple assignment helped me better understand our product and our customers.

The app I built was a visualization dashboard for fleet managers. It allowed fleet managers to see the location and mileage of all their vehicles. During the process, I realized that one big challenge for our customers was token management. Although the Smartcar API uses the standard OAuth2 framework, storing and managing refresh tokens was difficult for me when I built my fleet management dashboard.

A few weeks later, I remembered this pain point and was able to build a solution for it. I designed and implemented an alternative token management system that enables some of our API endpoints to function with a single permanent token.

But the assignment wasn’t the only thing I got to do during the first week of my internship. I also had the chance to get to know the team better, to learn about Smartcar’s work culture, and to get a lot of training and mentorship.

I remember being very impressed by the generosity and thoughtfulness of everyone on the team. When I got stuck trying to figure out how to store tokens for my fleet management app, my colleague Adolfo sat with me for a half-hour and helped me architect a solution. I could tell that he really cared. Gurpreet encouraged me to put myself in the shoes of our developers by only working with our public documentation, instead of referencing our internal docs.

As I was onboarding and ramping up, Smartcar’s team was always supportive and helped me out, even with obvious questions. When I told Gurpreet that I didn’t know the difference between unit tests and integration tests, he could have told me: “Google it.” But he didn’t. Instead, he pulled me into a conference room and gave me a university-quality lesson on the subject. We sat and typed out code examples until the concept clicked. After that, he sent me a curated list of articles on the topic to cement my understanding.

🚢 My first month: building & shipping things

As my learning ramped up, I continued to push code into production. A month into my internship, I had already worked with every part of the stack within our API platform. My tasks spanned everything from designing and implementing a new database architecture using Postgres to learning OAuth2 and improving our security features. I even shipped two new API endpoints from start to finish: the tire pressure API and the engine oil life API!

Honestly, there’s no better feeling than pressing Github’s bright green “Merge pull request” button. Of course, Smartcar’s team is great, the office is stylish, and the catered lunches are a treat. But nothing compares to shipping the feature that you took from design to production - the one that you’ve been puzzling over and debugging for weeks.

Every time I press that green button, my code is going out to all of our customers, affecting thousands of car owners. Being trusted with this level of purpose and responsibility during a three-month internship is pretty amazing.

But apart from the various products I built and helped improve, Smartcar interns don’t just worry about implementation work. When we prepared a new, soon-to-be-announced product release, I even had the opportunity to contribute to system design and to work on specifications for the new product.

🚀 My first month, continued: training & mentorship

Finally, my internship has been a huge win not only in terms of the new products I shipped. Smartcar’s management and mentorship has also helped me improve my skills and grow as a software engineer.

Throughout my internship, Gurpreet gave me the autonomy to choose what I wanted to work on. If I wanted to build out database models for a new system, he would let me handle that project. If I wanted to build out the CRUD endpoints for a new customer-facing dashboard, I could do that too! Regardless of what I chose, Gurpreet encouraged me to take ownership of the project and to unblock myself on my own. That said, he was always there to answer questions if I really got stuck.

In terms of mentorship, Smartcar’s bi-weekly 1:1s between managers and individual contributors were incredibly helpful. 1:1s are a great way to exchange feedback with your mentor. For example, Gurpreet once identified that my code tests weren’t formatted very well, so he gave me some advice on how to fix that. In the following 1:1, he noted that I had improved my tests. Overall, 1:1s are a great way to give and get feedback as well as to benchmark your growth.

Tip: Our CEO Sahas, has two open 1:1 spots on his calendar every week. I booked a meeting with him, and it was a great way to get to know Smartcar's leadership!

💡 My overall internship: great learnings & incredible growth

My internship is nearing its end and so is this blog post. In just three months here, I’ve learned so much that my brain feels like it’s been taking a 12-week-long chug from a fire hose that sprays knowledge. I mean this in a good way. The engineers at Smartcar really care about each other and encourage everyone - from senior-level employees to interns - to learn, grow, and be successful in their roles.

To anyone who is interested in interning at Smartcar, I’d like to give the following advice:

  1. Don’t be scared to ask for help. Everyone is incredibly supportive and wants you to succeed.
  2. Take initiative and assign tasks to yourself. If you exclusively wait for tasks to be assigned to you, you create extra work for your manager. They will worry about whether you have enough to do, and they won’t know what you enjoy and don’t enjoy working on. Approach your manager asking, "Can I work on this?" instead of, "What can I work on?" It makes your manager's job easier, and it allows you to hand-pick your projects.
  3. Apply to Smartcar! This might be obvious, but I’ve really enjoyed my internship here. I highly recommend Smartcar as a place to work if you'd like to learn and grow as an engineer. Check out our current openings, and please don’t hesitate to reach out to our People & Ops team with any questions!

Everything you need to know about car APIs. Delivered monthly.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.