Kalan's Blog

Kalan 頭像照片,在淡水拍攝,淺藍背景

四零二曜日電子報上線啦!訂閱訂起來

Software Engineer / Taiwanese / Life in Fukuoka
This blog supports RSS feed (all content), you can click RSS icon or setup through third-party service. If there are special styles such as code syntax in the technical article, it is still recommended to browse to the original website for the best experience.

Current Theme light

我會把一些不成文的筆記或是最近的生活雜感放在短筆記,如果有興趣的話可以來看看唷!

Please notice that currenly most of posts are translated by AI automatically and might contain lots of confusion. I'll gradually translate the post ASAP

2019 Review

In January 2019, during the first five days, I was still counting bread rolls in the military camp. After enduring four months of military service, I finally started looking for a job. In the first half of the year, I spent most of my time preparing for interviews and improving myself. In the second half of the year, after moving to Japan, my life gradually settled down.

First Half of the Year

During the first half of 2019, while unemployed, I had some free time besides feeling anxious. During this period, I not only caught up on the front-end knowledge of the previous four months but also learned about the changes in React (like hooks!) during that time.

I took the opportunity to rewrite my entire blog using Gatsby (a recurring habit of mine XD) and bought a dev domain.

I was also interested in the Audio Context of web browsers at that time, so I worked on a few interesting projects related to it. If I have the chance, I will share them with everyone.

While waiting for interviews, I mainly practiced Leetcode, worked on some front-end projects, and started planning a series of front-end articles. During this time, I also signed up for a Japanese language class taught by native Japanese teachers to prepare for my life in Japan. I hoped to review Japanese regularly and engage in some regular activities.

I also had several interviews during this period. For more details, you can refer to my previous blog post on job hunting experience.

And so, the timeline moved to the second half of the year. In late June, I flew to Japan and after settling down, I started working in July.

I also took some time to write a series of articles about my experience of learning Japanese over the past few years and working in Japan. If you're interested, you can take a look at My Distance with Japan.

Second Half of the Year, Life and Work in Japan

Although the front-end development here is quite different from what I used to do, working in a large company with abundant resources allows me to experience how much it can contribute to my career. However, if I can't make good use of it, it can become a retirement zone, and over time, I might become an idle member.

In this situation, following the strong backend team, I started studying deeper backend knowledge and infrastructure. Specifically:

  • Designing a robust message queue mechanism. Following the team, I discovered the versatile Swiss Army Knife, Kafka.
  • Quickly and efficiently setting up servers. With the experience of a team member in Ansible, I gained a basic understanding of configuring and adjusting servers. No longer did I have to SSH into servers like before and start from scratch if I made a mistake. There are also many playbooks to refer to internally.
  • I created a general-purpose Slack bot that can handle different use cases and wrote custom scripts easily.
  • Set up a common CI and automated deployment mechanism (via Slack) for front-end projects.
  • Set up performance monitoring tools like Prometheus and Kibana. This helped me understand the importance of these tools better.
  • Set up ElasticSearch and tried to combine it with the database (Postgres) for more advanced full-text search capabilities.
  • Understanding how databases work. Postgres has been my reliable partner for five years.

In addition to backend development, I also spent some time studying mobile development (iOS) and the Swift programming language. I realized that the essence of front-end and app development is similar. We are both dealing with UI and managing data flow and state. It's just that the languages and development platforms are different. It's interesting to see how different domains handle UI and state management using different syntax. Recently, I found SwiftUI and Combine, which are state management techniques suitable for front-end development.

One significant change was paying more attention to writing tests. In the past, without a dedicated QA period, I didn't write tests thoroughly. But now, with a dedicated QA period, writing tests has become crucial. Otherwise, I would end up dealing with a bunch of QA bugs that would only cause trouble for myself.

I'm willing to sacrifice some performance for more testability and maintainability because bugs and the workarounds that come with them are usually the biggest causes of chaos in a codebase. I also found that writing tests for React is really easy! It's also great for simulating user behavior.

I used to love Enzyme (a powerful React testing wrapper), but now I feel that such powerful tools can make me get caught up in testing implementation details rather than testing behavior. So now, I prefer using react-testing-library, which is lightweight and focuses on testing.

In terms of work, in 2019, I tried to explore more management-related books. Two books that left a deep impression on me were:

  • Driving Technical Change
  • Horizontal Management

Although I'm still not mature enough, at least I have taken the first step.

Breaking Through the Bottleneck

For me, I may have reached a bottleneck in the front-end field. Besides wanting to explore different areas that require high interactivity, such as video processing, image editing, text editing, and music, I also want to continue advancing towards deeper technical knowledge.

Another thing I've been thinking about recently is the desire to lead an excellent team and work together to create better products. Although being 25 years old can be seen as a disadvantage for a lead position, I genuinely want to seize such an opportunity.

Life

2019 has been the most work-life balanced year for me so far. Besides cooking more frequently, the increased number of kitchen tools (oven, microwave) and a larger kitchen space have allowed me to try various types of dishes.

I have cooked some special dishes, such as:

  • Dongpo Pork (non-standard version)
  • Spanish Seafood Paella
  • Failed Toast
  • Baked Cookies
  • Baked Pudding
  • Pan-fried Fish (including cleaning the innards and removing scales)
  • Homemade Hamburgers

My cooking skills have improved, and I hope to continue trying different types of dishes this year. I also want to find better sources of quality meat. Unlike Taiwan, it's not easy to find traditional butcher shops everywhere in Japan.

After coming to Japan, my weight has increased significantly, so I joined a gym and tried to control my diet and alcohol consumption. Although the frequency of drinking in Japan is terrifyingly high!

Regarding travel, although I didn't plan any major trips, whenever there was a long weekend and no specific tasks to handle, I usually went to nearby places:

  • Itoshima
  • Nishijin
  • Nokonoshima
  • Yufuin
  • Karuizawa
  • Suburbs of Fukuoka

Future

As mentioned earlier in the bottleneck section, in the future, I still want to delve deeper into technical fields. However, I don't want to limit myself to just web front-end knowledge but rather expand into various different domains.

In 2020, in addition to continuing to deepen my expertise in the front-end field, I also want to extend my scope to the entire computer field. Specifically, I'm interested in WebGL, low-level languages (C++ and C, Assembly), operating systems, and programming languages. Understanding these things is fascinating to me.

I want to mention that at the end of 2019, I took advantage of a promotion and bought a PS4 and the game Death Stranding. The plot of Death Stranding completely changed my life and thoughts, and it made me want to learn more about Hideo Kojima. In 2020, I hope to explore more knowledge related to the gaming industry.

Gratitude

In every company and around me, there are always people who are much more talented than me and worth learning from. It is thanks to these encounters that I am who I am today. Here are some of them, in the order they came to mind:

  • weak self: Although it is an iOS podcast, many concepts are applicable to both fields. The time I spend at the gym coincides with the release of weak self's episodes, and it's heartwarming to hear a familiar voice even when I'm far away. (Although there are many Taiwanese colleagues XD)
  • koji: Besides being as fluent in Japanese as a native speaker (no accent at all!), as a manager, he cares about everyone's well-being and allows me to work with peace of mind.
  • Hirayama: My current supervisor gives me a lot of freedom to do what I want and encourages me to do things that benefit the team. Having a good supervisor is an important factor for a smooth career.
  • Huang: He's like a senior in the workplace, having been in the industry for a long time. He knows all kinds of workplace gossip and company culture. When I have troubles, it's easy to find guidance from him.
  • denny: It's quite magical that we used to be colleagues and now we work together in a foreign land. Whenever I see someone wearing a familiar sudo hat, it reminds me of the times we went out to eat, ordered drinks from 50 Lan, and watched Mr. Robot in the office.
  • Thomas: He is the most hardworking colleague I have seen. He has a wide range of knowledge and is always willing to help. He is knowledgeable in both front-end and back-end development. We often discuss low-level topics like Linux and operating systems. I have learned a lot from him, and he is the most impressive engineer I have seen.
  • Jimmy: Besides actively participating in discussions, he always helps improve trivial matters within the team. What impressed me the most was a series of DevOps improvements he made, making the entire development process smoother.
  • Peter: Occasionally, he would come up with new designs and logos for me, and he often gives suggestions on how to modify the website. I'm grateful for his help and suggestions!

Prev

How to read SUICA information with CorenFC

Next

Software Engineering Devastation

If you found this article helpful, please consider buy me a drink ☕️ It'll make my ordinary day shine✨

Buy me a coffee