Culture
Sep 29, 2022
Culture
A memoir of two years as a software engineer at Lablup
Jihyun Kang
Senior Software Engineer
Sep 29, 2022
Culture
A memoir of two years as a software engineer at Lablup
Jihyun Kang
Senior Software Engineer
Hello Hello, 🙇🏻♀️
I am Jihyun Kang, senior web frontend developer at Lablup.
Lablup is an 8-year-old startup with the motto of “Make AI Accessible" for anyone, anytime, anywhere!”. I've been working here for about 3 years now: 3 months as an intern → 2 years as a full-time employee after being offered a job. I'd like to share my thoughts on my growth and experiences in Lablup.
Table of Contents
- First Impressions
- Tech stacks i've learned & soft skills
- Other things that I had achieved
- What I want to achieve
- Wrap up
- Extra: We doesn't just do work.
First Impressions and period of onboarding
After switching my majors from Sculpture 🗿⛏ → Computer Science 💻, I wandered through a deep tunnel, wasted some time. (in Korean word, we say this as 'endless shoveling' which emphasizes doing meaningless work over and over again.) After that period, I met Lablup. I walked through the door, and there was a new world infront of me.
There are three things I still remember from my first day's orientation.
- Respect is mandatory regardless of title; address people as name, avoid job grade (except when introducing them to outsiders).
- We can just declare our vacation, no need to ask for it.
- 10AM to 7PM work hours, available to work from home, flexible work schedules.
Most importantly, I was free from the usual labels that accompany me at many companies, such as GPA, major grade, age, and school. Compared to my experience of working as a contractor in the public sector, here, I found the freedom and the emphasis on the work itself quite intriguing. Additionally, I was eager to learn about the distribution and execution of the work, and thankfully, I gained clarity on this within a month.
There's a work-life balance game question that's been making the rounds for a while.
For me, Lablup was the perfect former. Every day was always thrilling with new technical terms, what the heck was being said in the daily all-hands meetings, why I was getting weird errors when I tried to install a project, only on my local environment... 🤯 And the pressure to create issues, commits, and share everything in “English” made me cry (?) my first month.
But I couldn't let it get me down, because like any intern, I didn't want to be a burden, even if I wasn't going to be a huge help to the company. Faced with a week of shoveling, I realized I needed to write down anything I could so I wouldn't be asked the same questions over and over again, and I started jotting down terms and context that I learned, even if it wasn't TIL(Today I Learned).
Below are some captures from ✍️ Survival of the Fittest that I've been updating throughout my internship and beyond.
I also read all the threads that came up that I thought might be helpful, even if I didn't understand them at the time, and organized the ones that I thought I could leave behind. Then I finally started writing PRs for my first issues, asking for code reviews, getting some issue-centric comments, and slowly getting used to the development culture at Lablup. As I grew more confident, I had the audacity to volunteer for issues that responded to customer requests.
Ultimately, Lablup functioned as a hybrid of top-down and bottom-up structures, rather than being strictly hierarchical. This unity allowed members to operate as a single entity. Despite the considerable freedom granted by Korean societal norms through self-directed commuting and flexible work arrangements, our achievements surpassed what a smaller team might have accomplished, as each member assumed responsibility and actively pursued our collective objectives.
The tech stack and soft skills I learned
Lablup is where I started as an intern, and it's also my first job as a full-time software engineer. It's safe to say that I've learned almost everything I need to know in my professional life at Lablup. I've been working on one of Lablup's flagship products, Backend.AI, using the following technology stack, which has helped me gain a better understanding of the product.
Web Component
As a web standard, modern web browsers now support all web components natively. When the browser engine renders web components, it creates an HTML document called the ShadowDOM, which prevents each component's styles from unintentionally affecting each other and allows them to be applied independently. It also requires shadowRoot to be open when accessed from within Javascript code and can only be accessed via a key called “shadowRoot”.
It's similar to React's VirtualDOM, but it serves a different purpose. While Virtual DOM is for optimization, ShadowDOM is for applying styles and logic independently on a per-component basis. (To read more: ShadowDOM vs VirtualDOM)
Lit (Lit-Element)
Lit is a library for web components that makes it quick and easy to create web components. It abstracts the process of declaring, attaching, and setting up a shadowDOM to a document. It makes it available in an OOP structure that is familiar to software engineers (support for class), for example, and provides functions that can be called at different points in the lifecycle, such as during render, immediately after render, or by explicitly requesting a render, to help users implement components more intuitively. (To read more: Lit Documentation (v2))
Modern Javascript & Typescript
Javascript since ES6 supports functions like map, filter, and reduce that are specific to the Array type, in addition to iterations like for-each, for-of, and while. API calls can be processed asynchronously with a native function (fetch) rather than an external library (jQuery). When fetching various types of data, you can specify the type to predict what type it will be and call or respond to functions accordingly. The compiler will explicitly call an error if the wrong type is accessed.
Of course, I was able to contribute to the backend (Backend.AI Core) as well as the frontend, dipping my toes into the Python asynchronous library Python Asyncio. Below is a presentation on an issue that helped me a lot in understanding the structure of Backend.AI while contributing to the backend.
https://www.youtube.com/watch?v=itCEkuO2DtE
Lablup stands out as a unique development organization in the open-source community, boasting a strong team of seasoned open-source experts. This contributes to a forward-thinking and open-minded development culture. Work often progresses from the ground up, as highlighted. In such an environment, individuals are encouraged to offer ideas irrespective of their position, or even organize internal seminars to discuss and validate their proposals before formal submission.
Below are three of the soft skills I've learned on the job that have helped me a lot.
- Ask questions before the end of the day. But also mention what I know by then.
- Dive in, clear some snow, and document the experience, even if it doesn't seem directly pertinent at first.
- Share what you learn as often as possible
What else I accomplished
I didn't just do development; the various experiences described below helped me grow outside of development. Some might say, “You're too busy to just do development, aren't you being too generalized, what is your specialty?” But I believe that learning how a company works outside of development and how to work with other departments is a fundamental skill for a developer to have.
- Contributed to Backend.AI Good Software (GS) Certification
- Wrote Backend.AI documentation contribution guide
- Published and applied responsive layouts to our company main page and featured product pages
- Created a Backend.AI tutorial video
- Open Source Contribution Academy mentors in 2021
- Planned and executed the company's annual meeting in July 2021.
- (junior) developer → promoted to senior developer in May 2022! ✨
- Infcon 2022 Talk Concert: Joined Junior Developers' Bamboo Forest (event) as a Panel
What I want to accomplish more in the future
Below is a list of things I'd like to see Lablup do in the future, if not right away.
- Building a dedicated design system
- Combining web components with React for MSA services in Backend.AI
- Apply Google Analytics 4 (GA4) to your company site and major product sites
- Create a category for each topic on our tech blog
- Apply BDD or test environments to our primary repository
Remarks
At first, I didn't know what to write about because I had been on a crazy run, but as I slowly wrote it down, I realized that a lot of the things I've accomplished have been because I started at Lablup. In particular, I realized that none of the above would have been possible without my colleagues, who were patient and understanding enough to let me pick up the pace. I would like to take this opportunity to thank all the members of Lablup once again.
I also promise myself to be a developer who can continue to contribute to Lablup.
Extra: We doesn't just do work.
Joining Lablup amidst the COVID pandemic meant missing out on numerous workshops and trips like GTC and Google I/O. However, among this short experience allowed me to acquire a diverse range of external experiences beyond just work. The recent workcation I took stands out in my memory. To dispel any notions of Lablup being a "work-only startup," I am recounting several of my experiences in this post😎.
Things we've done
-
Gangneung Workshop (2020.11)
-
Yangyang Workcation (2022.07) (2020.11)
-
Culture Day (2022.08)
On-going
- Jeju Island Workcation (2022.10)
Future-plan
- Google I/O 2023?