Work Term Report: ecobee 2020

Introduction

In this post I will be sharing and documenting my experience at ecobee and the things that I've learned during my 8 month co-op term as a web developer. I was at ecobee from January 2020 - August 2020.

About ecobee

The Company 🏡

ecobee is a home automation company that creates smart home devices and provides various services such as air filter delivery, and home monitoring as well. ecobee is most well known for it's smart thermostats and room temperature sensors and is considered one of the top smart thermostats in the market. Recently however, ecobee launched a new line of products in the smart cameras, door and window sensors and a new home monitoring service as well! This line of products is meant to offer a seamless smart home experience for families.

Complete line of ecobee products

The company also launched an entirely new brand. You can check out the entire brand book here! https://brand.ecobee.com/

I also make an appearance alongside one of my teammates in the new brand video that was filmed in the office. See if you can spot me 😂 → https://www.ecobee.com/en-us/about/#Our-story

The Team 🐝

At ecobee, I worked as a web developer on the API Squad, primarily focusing on the internal GraphQL API known as Beehive. Beehive is a GraphQL gateway layer consumed by various internal client applications, including mobile apps and some of the web apps as well. Beehive aggregates the various ecobee APIs into a single GraphQL API that can be queried to return only the data the client needs.

One of the clients that consumed Beehive included the web application for our new home monitoring subscription service, Haven. The Haven web platform is a relatively new platform that customers can use to manage their home monitoring subscription. I was the focus area lead on the API Squad for the Haven subscription service.

In the duration of my work term, the API Squad shifted from being the primary team that added new features to Beehive, to being an API integrations team for other external services. To support this transition, the API Squad worked on creating a seamless process for the various upstream service teams to be able to implement, test and deploy new features in Beehive on their own.

My Experience

Beehive ⚛️

For the first half of my work term, the API Squad was focused on shipping features for Beehive that were needed to launch our new product lines and services. We were moving fast with many features needing to be shipped within certain deadlines. The API Squad used the Kanban method to manage their workload. I was onboarded to our codebase and with the help of my teammates, was able to code, test and deploy a feature to production in my first week on the team!

I continued to implement various GraphQL queries and mutations in Beehive, writing unit and integration tests using Jest that ensured 100% test coverage, performing end-to-end tests, doing smoke testing in our sandbox environment, and deploying the changes to our production environment with our CircleCI CD pipeline. I also participated in code reviews for pull requests, testing, asking questions and giving feedback on the PRs from our team members and external contributors.

Each team member had an upstream/backend service that they were the focus area lead for, and they focused on collaborating with the developers, PMs and stakeholders on that team to design and implement new features for that service. I chose to become focus area lead for the Air Filter and Haven subscription services team.

I worked closely with the Haven subscription team to help onboard their developers to our codebase and processes which was a great collaboration experience. I helped onboard two developers from the Haven subscription team and worked with them to deploy their changes, empowering them to design, implement and deploy features independently moving forward!

New Directions 🛣️

After the big company-wide launch of our new products and Home Monitoring service, the API Squad's focus shifted to becoming a team that focused on API integrations with 3rd party APIs. Any additional features that needed to be implemented in Beehive, would now be owned by the upstream service team that was doing the integration. Therefore, the API Squad would focus on creating a smooth developer experience for these external contributors. From onboarding to the codebase, implementing features, testing their changes and deploying their changes to production.

This new direction allowed me to work with and try out a variety of other work that went beyond implementing API changes. I got to work on creating an Apollo plugin to improve logging and observability for our service. This task gave me a thorough understanding of the Apollo server and the request lifecycle for mutations and queries.

I got to do a research SPIKE to find the best way to solve a problem related to our CI/CD pipeline, which gave me exposure to various tools that could be used.

I started to take on more tasks and tickets related to our infrastructure, improving our deployment process and working to update our documentation and onboarding processes as well.

I also got the opportunity to work closely with a variety of contributors and helped to onboard them on to the codebase, and answer questions that they might have.

Another interesting ticket I got to work on was to improve observability for our GraphQL subscription by logging additional information regarding the subscription state.

The Good Stuff 🌻

One of my favourite aspects of this job was the collaborative nature of it. I found that I had a balance of being able to work independently, and then had numerous opportunities to pair program or collaborate with many of my colleagues! Pair programming with my teammates was essential in helping me learn new technologies and discover best practices to improve the quality of my work.

Another aspect of ecobee and the web chapter specifically that I appreciated, was the culture of giving recognition. I gave out 5 HIVE awards (company-wide awards that recognize people for demonstrating the core values of ecobee) and received 5 HIVE awards as well! The web chapter had its own recognition system in which I gave out recognition to my teammates on 5 different occasions, and received web chapter recognition on 5 different occasions as well! Being able to express my gratitude and recognize my teammates created an incredibly positive environment. Having teammates go out of their way to recognize my work was also super motivating.

A HIVE award card that lists all the core values of ecobee. Mary gave HIVE awards to myself and the team for all the work we did to get MFA features shipped on time
Recognition package that all employees received with T-shirt, custom patch, and card with recognition to celebrate our launch

The Challenges 🌧️

In mid-March, due to concerns around COVID-19, the company decided to move to a remote-first work policy. This shift to working from home was particularly challenging. I had gotten used to going to the office, spending time with my colleagues, asking them questions and learning from them as well. In addition to concerns about the current state of the world, I had trouble focusing at home due to many distractions. The company put together lots of resources and tips to help with the adjustment to working from home which I found super helpful. My team worked to create more opportunities for team members to pair program and ask for help when needed, and change the way we do our daily standups to have multiple check-ins throughout the day. With the support of my manager and team, I was able to find a good balance while working from home to improve my focus and productivity given the circumstances!

Another challenge was the company-wide layoffs that occurred. It was tough to see so many employees laid off, and some of whom I had known and worked with. During this time, there was lots of support within the web chapter which was nice to have. It was also amazing to see some of the developers in the web chapter come together to create a website where the folks that were laid off had listed their contact info so that recruiters could get in touch with them to hire them: https://www.hireecobee.com/

Highlights✨

In addition to the work I did as part of the API Squad, I had numerous opportunities to contribute to various other aspects of the company:

  • I coordinated with other co-ops to create reference documentation with FAQs, links, resources and tips that would help remotely onboard new co-ops
  • Participated in brainstorming ideas and doing research for the initial formation of the new women in engineering committee that Mary put together
  • I also received a volunteer day which I used to volunteer as a mentor to pair program with graduates of a web developer boot camp alongside some of my other colleagues in the web chapter!
    • I got to collaborate and pair program with some of the web developers in putting together a ReactJS Spectacle presentation for the intro of the session
  • With the help of my mentors, I had the opportunity to put together a presentation/technical talk about my experience learning DevOps as a web developer. Over 30 developers of various levels of experience watched my talk!
  • Finally, I got to participate in the company-wide hackathon, Hack The Hive (Season 7). I was on a team with all co-ops and we ideated, designed, and put together prototypes and user journeys for a service that would increase recurring revenue for the company. And we won one of the categories!
    • For this hackathon, I worked closely with another co-op to create a React web app that was part of our demo
    • Our team had the chance to donate $500 to a charity, and we chose to donate to Tech Spark

Introductory slide of the technical talk that I did! From 0 to ∞: My DevOps Journey

Goals 🎯

The goals I had included:

  1. Be an efficient and effective leader for a focus area
    • I was able to gain experience collaborating with various stakeholders to deliver features within the deadlines
    • Communicated new features that needed to be implemented
  1. Become proficient in Typescript and understand GraphQL and Apollo Server and how everything works together
    • Through various mutations and queries that I implemented in Typescript I learned a lot about GraphQL
    • Learned a lot about Apollo Server when I created a logging plugin
    • Still would like to learn more about concepts like subscriptions
  1. Effectively communicate new knowledge about the area in which I am a focus lead to my team as well as external teams if needed.
    • Collaborated with mobile team to help simplify their implementation for a feature
  1. Do more SPIKEs, researching into ways to improve processes in Beehive related to improving our developer experience
    • Got to do a research SPIKE focused on improving the deployment pipeline for Beehive
    • Making it easy to stop deployments if another deploy in progress or if there was an incident that needed investigation
  1. Work effectively and understand processes and things that make me work efficiently. Figure out ways to focus on the right things.
    • When we shifted to working from home, I had trouble adjusting to a new routine without proper set up and numerous distractions. I tried to find style of productivity that worked best for me. I ended up using a version of the Get Things Done system and using Notion to keep track of tasks and information
  1. Understand our infrastructure and how it works
    • I learned a lot about our infrastructure! I don't have 100% full understanding of our infrastructure but learned quite a few things such as...
      • Maintaining infrastructure as code using Terraform
      • Doing Terraform PRs and Terraform apply to update user permissions, create and destroy a subscription
      • Managing deployments with Helm
      • Migrating Helm versions for our deployments
      • Understanding a little bit more about GKE (Google Kubernetes Engine)
      • Using Prometheus operator for data collection
      • Getting a better understanding of Cloud Functions when I experimented with it while doing research for a SPIKE

I am fairly confident that I achieved all my goals in some capacity.

Conclusions 💭

Overall my experience as a web developer at ecobee, specifically on the API Squad, was incredibly positive. Not only did I get the opportunity to contribute to the Beehive API, learn TypeScript and GraphQL, improve our onboarding process and developer experience, but I had the opportunity to do some work as the role of a site reliability engineer as well! In addition to all the amazing technical work, I had the opportunity to participate in company events such as volunteering as a mentor for boot camp graduates, giving a technical talk to a large audience, and participating in an internal hackathon!

On top of all of this, the time that I got to spend collaborating and connecting with my colleagues, was invaluable. The skills, friends and mentors I've gained will, God willing, remain with me moving forward.

All the co-ops that were ending summer 2020 term with their ecobee swag!

Acknowledgements🎖️

I would like to give a huge thank you to the API Squad for their incredible support. I couldn't have asked for a better team to spend the last 8 months with. Everyone on the team is incredibly talented, hard-working, dedicated and cultivated a team culture focused on collaboration and growth. I could not have achieved any of the things mentioned in this post without these fantastic people:

  • Our incredible TPM, Pearl
  • Our SRE and my extraordinary mentor, Mary
  • Fellow web developer and mentor, Prasanth
  • Fellow web developer and Guelph alumni, Evan
  • Senior developer and tech lead, Diego
  • Fellow web developer and Guelph alumni, Pray
  • Former tech lead and API Squad alumni, Alan!

And of course, our interim tech lead and my incredible manager, Devlon! Devlon showed me so much support, encouragement and shared a ton of advice and wisdom to help me overcome many challenges throughout the term.

I also want to thank ecobee's co-op coordinator, Emma, who worked hard to give me the opportunity to come back to ecobee for another co-op term and was always available for help or advice!

I also have a special thank you for my mentor Youri! Youri was one of the developers on the Haven subscriptions team whom I got to work closely with, and she helped me with my tech talk, gave me tons of support, encouragement and advice.

I have to give huge kudos and thank you to our SRE co-op, Faranak, who onboarded remotely in the summer term. I paired with Faranak for our Helm migration and worked closely with her on numerous occasions.

I also want to give thanks to my Hack the Hive teammates! Fellow co-ops Sang, Zaeem, Hershil, Sherry and Jason!

I also have to give a huge shoutout to the previous team I worked with as a Test Developer; Admin Portal and everyone on that team that I had the opportunity to work with!

There are so many other people that are missing in this acknowledgement section! Numerous other co-ops that I spent time with, employees who helped me, reviewed my PRs, answered my questions, took time to connect with me and share advice, the web developers I collaborated with on volunteer day, and the countless people that showed support throughout my entire term.

And a huge thank you to Guelph co-op coordinator Kate , who came by for a visit and had a virtual site visit with me as well 🙂

And last but not least, thank you to Greg for reading through my co-op work term report.

Alhamdhulilaah for this experience!


Made with ❤ by Kanza • Powered by

© Kanza 2020