Skip to main content

Ethan Pini

SFU Student Undergraduate
Applied Sciences › Computing Science › Software Systems
Co-operative Education › Local Co-op

Position Title
Working at Demonware was an excellent opportunity for me to learn both about the work environment for software developers, and for gaining hands-on experience with industry standard tools and software. The overall experience was fun and engaging, and it helped guide my selection of elective courses after I returned back to campus.
Experience Details
Application and Interview Tips

General Interview Tips:

  • Arrive early. It's better to be a little bit early than a little bit late.
  • Your interviewers will be other members of your team. Get to know them a bit!
  • Be presentable! Even if casual attire is fine, you can't go wrong with business casual.

Interview Knowledge Questions:

  • Treat them like a trivia game and have fun!
  • Be honest about not knowing the answer.
  • Be enthusiastic about learning the answer if you don't know or get it wrong.
Introduction + Preparation

It's a cold January morning in the middle of the COVID-19 pandemic, I've just finished breakfast, and I'm opening my laptop to check my email. Newsletters, a bit of spam mail, and—could it be? An email saying that Demonware would like to make me an internship offer! I'm over the moon; an offer for my top-pick workplace experience!

After dancing around for a few minutes, a realization dawns on me: I have a lot to learn before my start date.

Previous Experience

There were five skills that were important for my upcoming role: the ability to write software for automations, an understanding of Linux, basic knowledge about Docker containers, familiarity with the Go programming language, and experience with Kubernetes.

Going down the list, I was comfortable enough with the first three skills. I had experience automating tasks for past contract jobs, I ran a headless Linux server for nearly a decade, and I've used Docker in personal projects. That just left me to learn Go and familiarize myself with Kubernetes.

The Gru "in terms of money, we have no money" meme, but instead of money, it talks about my prior experience with Kubernetes.
Original image copyright of Illumination Entertainment.
During my Experience
Orientation and First Weeks

In the time between accepting the offer and starting my first day, I managed to learn one of the two skills I was missing. Unfortunately—and since I didn't have enough computers sitting around to make a cluster—it wasn't Kubernetes. In my naivety, I hoped that wouldn't be too much of a problem. Well, dear reader, I was assigned to the team that manages and automates the company's Kubernetes clusters.

"This is fine," I thought to myself while panicking about my inability to do anything productive during the onboarding process. It's just like Docker, which uses containers to run isolated programs on a single computer. Kubernetes couldn't be too different... right? Wrong. If you think of a container as a pea in a pod, Kubernetes is the whole entire farm of peas—including the farmer and tractors. That is to say: running containers is the goal, but there's a lot of effort and work that goes into doing it.

And at this point of my internship, I was but a mere pea-consumer, uneducated with the ways of farming. Thankfully, I had a wonderful group of coworkers to support me on my learning journey. They didn't expect students to start out knowing the ins and outs of Kubernetes, and they provided help and guidance while I familiarized myself with everything.

Learning and Adaptation

At this point, you may be wondering what exactly Kubernetes is. In simple terms, it's software that manages and automates the configuration and deployment of containers across multiple computers. With that in mind, let me go back to my farm analogy:

  • A container is a pea. It's complete, but it doesn't do anything until you give it resources.
  • pod is a group of co-located peas.
  • deployment is a request asking the farm to keep a number of a specific kind of pod alive at all times.
  • node is a farm plot, providing resources for some pods.
  • An operator is a farmer whose job is to watch over the farm and make changes when necessary.

The general idea of Kubernetes is that it's a reconcilation loop where the farmer is constantly looking at the pods on his farm and comparing them with the deployment manifests he has. For example, suppose the farmer was asked to keep 12 snow pea pods alive and three of them withered away overnight. The farmer sees that he has nine living snow pea pods and three dead ones, but needs 12 living ones. He would attempt to reconcile this discrepancy by removing the three dead snow pea pods and adding three new snow pea pods wherever there's space on the farm.

That's just scratching the surface level of things, too! Kubernetes can be used to manage all kinds of resources, such as hard drive allocations, network connectivity, and even domain-specific resources controlled by purpose-built operators.

Accomplishments and Challenges

Throughout my time as an intern, I learned a lot about Kubernetes. And unfortunately, like all software, it has some pain points. There are some combinations of options, that when used together, cause unexpected behaviours that can negatively impact deployments.

In my role as an intern, I designed and developed a tool to automatically detect some of these issues and send alerts to tenants. I'm proud to say the tool is still used on a daily basis even a year after my co-op experience concluded!

Wrap Up

During my internship, I ended up diving straight into the deep end of working with Kubernetes. Starting out with absolutely no experience in Kubernetes, I quickly learned not only how to work with Kubernetes as a user, but also how Kubernetes works on a fundamental level.

Reflection & Tips

Overall, my co-op experience at Demonware was a fun and engaging opportunity. I made new friends, gained experience working with industry standard software, and learned a ton of new things.

Advice for Future Students

If you're entering a new job that involves technology you aren't familiar with, don't panic! As long as you were honest about your lack of experience during the interview, your coworkers will be happy to provide mentorship and support throughout your learning journey.