A Summer of Learning at Expedia Group

An intern experience worth being proud of

As a novice, I was indifferent to how the technologies used in the software industry are shaping our lives. Now looking back on the past 8 weeks, it's been an experience full of learnings, networking and growing. My internship experience at Expedia has been a lot more than I thought it would be - in the best way possible. How? Let's dive deeper.

Onboarding ✈️

The week before my internship began, my manager and buddy had already contacted me via email providing me some resources for the tech stack I would be working on. On the first day, I was introduced to my manager and buddy. It was a vivid intro from asking my technology experience to hobbies, and me learning about the team culture. The other onboarding activities as designed by the early careers team included teaching Expedia Group values, the API first strategy and familiarising me with basic tools like git and GitHub. On the third day, I learned about my project in detail and was provided with documentation containing the setup steps and resources for understanding the codebase. I was given enough time and resources for ramping up and learning the new tools and technologies my day to day project work required.

Project

Intro

I had been introduced to the stay-dev team at Vrbo™ (part of Expedia Group™, or EG) responsible for the post-booking experience of travellers. As part of my project, I worked on refactoring the old code for the Inbox component of the Vrbo site according to the new atomic design methodology.

Motivation

Our aim is to make the Inbox component of stay UI modular, generic and independent (in terms of data fetching) so that this component can be used in any stay UI pages or other Expedia brand websites. By using atomic design, the component will become more reusable, thus increasing development velocity in the longer run. Moreover, by creating such independent and uniform components, we can create a seamless experience for travellers across all Expedia brands.

Overview of atomic design

Atomic design is a methodology inspired by chemistry. Just as all matter is made up of atoms that combine to form molecules, which in turn make up more complex organisms, atomic design involves breaking a website down into its basic components and then working up from there to create a site. It consists of 5 kinds of units:

  • Atoms are the smallest unit on a UI that cannot be further divided. They are dumb components which just render the content provided to them.
  • Molecules are made by combining atoms which function together as a unit.
  • Organisms are relatively complex UIs composed of groups of molecules and/or atoms and/or other organisms. They are self-sufficient in terms of data fetching and do not rely on their parent. They are independent components.
  • Templates are page-level objects that place components into a layout and articulate the design's underlying content structure. They decide the layout for components.
  • Pages are specific instances of templates that show what a UI looks like with real representative content in place.

Task Assignment

I was assigned to work on implementing the atomic design pattern for stay UI Inbox. I was given an end-to-end task so I could have a sense of ownership and clearer targets to track while progressing. Working from end-to-end on this particular part led to better understanding of the whole agile process including concept defining, creating architectural diagrams, discussing and getting reviews from team, giving updates in daily scrum, implementing, testing, and documenting.

After exploring the codebase, I began developing the atoms and molecules in the stay UI Inbox. Development was done bottom-up, starting from the lowest level (i.e., atoms) and going towards organism. Together with writing components, migration of test cases was done from Enzyme to React Testing Library. React Testing Library is a better option because it focuses more on user interaction rather than implementation details. When developing organisms, several factors need to be kept in mind including optimisation, removing redundancy, how different atoms and molecules are interacting, and understanding the data fetching flow for that particular organism. For Inbox, data fetching is done using cache and network GraphQL, which gave me an opportunity to explore. A/B testing and experiments is another interesting concept I got to dabble with.

Processes and tools

Our team followed agile methodology, so we had daily sync-ups and weekly feedbacks. I also learnt using the Chrome dev tools and React profiler which is indeed a good and crucial learning from developer's perspective.

EG values

My project incorporates the EG value of Force Simplicity, both from the developers' side by decreasing code redundancy and increasing productivity and from the travellers' side in having a consistent and uniform UI. I believe that by taking ownership of my work, making mistakes, and moving on, I have demonstrated of EG's core values: Choose Fearlessly in my day to day work.

Interns learning series ✨

Throughout the internship journey, the early careers team conducted various skill development workshops, social activities, leadership series, and learning series. In the leadership session with Expedia CEOPeter Kern, I got this golden opportunity to ask a question from him and got amazing insights on how Expedia is growing as a travel business .

Apart from this, various events like 24-hour-interns-olympics, allyship session, and mental health session, were conducted which further elevated the whole experience.

Challenges faced

  1. I faced some challenges in the setup of the stay UI project on my local machine. But the previous interns who recently faced similar challenges during their setup were able to take some of my queries.
  2. Initially understanding the codebase was challenging as the codebase was quite vast and I did not have the experience of working on such a large codebase. But I was given enough time and support to grasp things and was able to deliver on time.
  3. During development, most challenging thing was debugging. I learnt some beginner level usage of react developer tools and debugger and I think it is a must do thing for debugging our code efficiently.

All in all, the technical learning curve was great with the right balance in complexity of code.

Key takeaways

  • Understood the whole agile methodology from designing, developing, getting reviews, sync-ups and implementing to testing and deploying.
  • Growth both professionally and personally - I learnt lot of new technical stuff, and also learnt soft skills like adaptability, dependability and personal branding.
  • Inspired by EG's core values of Force Simplicity and Choose Fearlessly.
  • Learnt how to work well in a team to discuss and remove roadblocks.
  • Learnt how we should keep improvising by always thinking of and finding better ways of implementing already existing solutions.

Shoutout and thanks

Shoutout to the entire stay experience team for their constant support and guidance.

Thanks to the Expedia early careers team for the seamless virtual onboarding experience and the amazing workshops.

Thanks to Expedia Group as a whole for providing me with this wonderful opportunity and an experience that I will always cherish!

Learn more about technology at Expedia Group

Attachments

  • Original document
  • Permalink

Disclaimer

Expedia Group Inc. published this content on 19 August 2021 and is solely responsible for the information contained therein. Distributed by Public, unedited and unaltered, on 19 August 2021 14:13:03 UTC.