Choose a recent post from the Shopify Engineering Blog. In 250 words or less, tell us about why you chose this post and how it might influence your thinking in the future. (Blog: https://engineering.shopify.com/blogs/engineering)
It’s not on your engineering blog but “Swinging the Pendulum” has been my favourite principle coming from Shopify (source: https://twitter.com/brandonmchu/status/1502312471461249030) It let me focus on my job and believe in long-term goal despite that the job nature might completely change from a quarter to another quarter.
Have you ever led a project in a previous role? If yes, describe the expected outcomes versus the actual outcomes of a project that you've led.
We launched a new ad format that has grown into 25% of company revenue after one year of release. We didn’t expect it to be this huge but it has outgrown our expectations in a good way. One blocker that slow down our development process during the beginning of the launch is we get too many sales and every new sale required some custom work from the engineering team (mainly CSS works). We try our best to make a template system (more reuse) for the new ad, and educate the sales team (so that they can do simple CSS) but what really solved our problem is to hire a markup engineer that focused solely on the CSS works.
If yes, please give an example of how you have worked with object-oriented development.
We use a lot of abstraction and encapsulation to represent types of advertisements (video ads, audio ads, image ads etc) in our ad server. When an ad is requested, the ad server selects ads based on the request using filtering logic. Some filtering logic works for every type of advertisement. For example, if the ad is requested at 9 am, only ads that are set to deliver during that timeframe will be selected as candidates. By only exposing needed fields through the public method (ad delivery time), filter logic could take any ad by an “interface” without knowing its underlying code and data. This makes testing easy and hence increases the maintainability of code.
Which programming language(s) are you most proficient in? Please give a couple of examples of how you’ve worked with those languages or how you learned the most recent language you’ve been using.
Go. Some examples are implementing a server that watches Kubernetes API and exposes routing information (IP address, port number) via an HTTP API, an event ingests pipeline that receives ads events (clicks, impressions) and persists them. I found myself learning the best when I implement some familiar concepts with the new language itself, like a circuit breaker