HK01 Software Engineer Team Culture

by Angus Tse, Director of Engineering

Angus Tse
HK01 Tech Blog
4 min readJan 1, 2019

--

“How’s HK01 Software Engineering team culture” is one of most frequently asked from interview candidates. It is hard to explain using simple words like “very agile”, “very flat hierarchy” and these descriptions are meaningless. I hope that this article is able to help you as well as all potential candidates to understand what HK01 engineering team culture is.

Disciplinary and Autonomy

We are growing from 10 to 60+ software engineers, and they are working in various domains & teams including, but not limited to: Media, Advertising, eCommerce, Event Ticketing, Membership, Wallet, etc. Operating at such a scale, we need a clear and simple structure to make our work efficient and aligned.

Each team has a tech lead to ensure the team aligns with a set of general practices, for instance, holding daily stand/slack-up on time, reviewing SOP (standard operating procedures), upholding coding as well as git practices. Among ourselves, there is an internal community (i.e., a group of talents) which discusses and sets up a set of general practices. Teams may set up their own practices and contributes suggestions to the community. Of course, those suggestions may become a new practice. On top of the above, the tech leader is also responsible for making technical decisions, push products’ quality as well as the timeline, etc.

Open minded and willing to help

Coding & reviewing pull requests (PR for short) are must in the development process. We believe that a rigid code review process not only can uphold good coding quality but can also cultivate an open-minded, helpful atmosphere. PR reviewers can be your team leaders, as well as your peers. The team leader only plays the role of the gatekeepers. Majority of the review process is on the peers. We believe that peer-coding review can facilitate team members to learn among themselves. This, in turns, improves everyone’s system design skills, aligns our code practices, and, last but not least, trains one’s coaching skills. Moreover, it improves the code maintainability and ownership.

On the other hand, we cultivate open communication through the use of public Slack channels. All engineers, or even managers, can jump in any conversations whenever an engineer raised any question in Slack channels. We believe an open mindset can make us growing fast.

Learning and sharing

“Having a learning mindset” is one of the core characters leading to a successful software engineer career, and we are a strong supporter of such a belief! Internal sharing is a good opportunity to reinforce one’s learning. Before a sharing session, the presenter has to self-challenge and to drill deep while preparing for the presentation. Volunteers are invited to have any discussion over the topic or even to develop a POC (proof-of-concept) after the sharing so as to reinforce your learning, and in turns put those newly-developed skills into the production environment. We have 50+ internal sharing sessions so far. Besides internal sharing, we actively contribute to local communities, including AWS summit HK, GDGHK DevFest, HKOSCon, and PyConHK.

Continuous delivery with high quality

We build an automated pipeline to run the tests and build process for each pull request. The specific slack channel will receive an alert if failed. Building a mobile app also automated with slack so that we can build and test smoothly. We keep pushing new features/improvements to production every two weeks so that making our consumer happy. As of now, HK01 App rating is 4.4+ stars on both iOS and Android app store.

Measure and learn from mistakes

“We are human. We are not perfect”. We make mistakes from time to time no matter how carefully we planned our developments. We use incident reports, retrospectives, and transform the collected experiences into TODO items in order to mitigate the chances of having similar mistakes in the future. Tools such as Datadog, PagerDuty, ELK stack (or similar logging services) are applied to our production environment so as to facilitate software engineer to:

  • analyze and spot potential issues ahead,
  • be notified when an incident happens, and
  • review the incident with adequate traces and to improve.

Thanks for reading. If you enjoyed reading this article, feel free to support us by hitting the clap button 👏 and to help others finding this article. We are hiring, job descriptions can be found HERE. You are welcome to drop me an email at angustse@hk01.com if further questions.

--

--

Angus Tse
HK01 Tech Blog

Love learning tech and philosophy. HK01 Director of Engineering. Former VP of Engineering in OneSky, Software Engineering Manager in 9GAG.