ByteDance Ltd. - Backend SWE Intern, Infrastructure Team (May - July 2022)
Introduction
ByteDance, most well known as the parent company of TikTok, is a fast-moving Chinese technology company operating a range of content platforms that inform, educate, entertain and inspire people across languages, cultures and geographies.
During my internship, I worked in its infrastructure team, which builds digital/cloud infrastructure to support the rest of the business.
More specifically, I worked in the the service platform team, which maintains a PaaS platform which enables developers to easily deploy/maintain services on the cloud. By simplifying the software development lifecycle, developers can focus on managing their applications and services.
Through my internship, I’ve gained rich perspective and experience into cloud computing, specifically in PaaS systems. I’m happy to have been exposed to interesting technologies like Docker, Kubernetes (Cloud computing), and Jenkins (CI/CD).
Above all, it’s been such a joy to participate in an in-person internship - making new friends in the office, and learning from the life sharing of my mentors. One thing that interacting with my mentors has made clear to me is the importance of learning deeply, desiring mastery rather than just a working knowledge. My mentors taught me about the T-shaped engineer, who has broad knowledge across the entire stack and chooses one area to gain deeper mastery.
End of Internship Presentation
This is a detailed rundown of my contributions and reflections from the internship.
ByteDance Internship Final Presentation (For NUS) by Maxx Chan
Contributions (A quick look)
- Developed and tested features in GoLang/Python/MongoDB for internal Platform as a Service (PaaS) cloud platform to improve user experience in creating/managing services, and contribute to company’s move to public cloud.
- Created dynamic Kubernetes configurations to deploy platform team tools onto multiple environments using Kustomize.
- Set up CI/CD pipelines on Jenkins to build and deploy core services on Kubernetes clusters, resulting in higher efficiency and greater reproducibility.
- Honed technical documentation skills to aid in design/approach discussion with other engineers throughout development of features.
- Learnt deeply about Docker, Kubernetes, Kubernetes Federation, and engineering concerns for building a PaaS platform.
Technical Skills Learnt
Software Engineering
- Golang
- Docker, Kubernetes, Kustomize, Federation
- Jenkins (CI/CD)
- Code tracing
- Engineering at scale
- Deploying and setting up Jenkins, Creating a pipeline Application life-cycle, PaaS considerations
Best Practices
- Learning the value of deep learning, over just having a working knowledge -> The importance of being meticulous.
- Design documentation
- The importance of testing and validation, not just “code and pray”.
Non-Technical Lessons
Working Styles
- Adapting to new working culture - have to be more intentional with communication to prevent working in isolation.
- The practice of creating a design documentation to facilitate discussion before writing code.
Communication
- Importance of being proactive and humble in seeking help.
- That there is so much to learn from others’ experiences, from within our team and beyond our team!