2019 in review
# Year in reviewIn 2019, during the first five days of January, I was still counting steamed buns in the barracks (compulsory military service). After four months of military life, I started looking for a job.
In the first half of the year, I was almost entirely preparing for interviews, but after moving to Japan in the second half of the year, I gradually got on track.
First half of 2019
In the first half of 2019, I was a little anxious because I had no job. But I was also actually quite free at that time. During this period, I focused on filling gaps in my frontend and React knowledge.
I also took advantage of this period to rewrite my blog with gatsby (a frontend legacy issue), and bought the .dev domain.
It is also worth mentioning that at the time, I was very interested in the browser’s Audio Context, so I made a few interesting small projects. If I have the chance to make them public, I will share them with you.
While I was waiting for interview responses, most of my time was spent doing Leetcode, writing some small frontend projects for practice, and then starting to plan a series of frontend-related articles.
During this time, I also went back to sign up for Japanese tutoring classes, mainly with Japanese teachers, to prepare for life in Japan.
Several interviews also started during this period. For details, please refer to the job search experience I wrote a few months ago.
Then the timeline moved into the second half of the year. I flew to Japan in late June. After spending some time settling into my basic life, I started working in July.
I also spent some time writing a series of articles about my experience learning Japanese and going to Japan over the past few years. If you’re interested, you can check it out: My distance from japan
In the second half of the year, work in Japan
Although frontend development here is quite different from the frontend work at my previous company, I can feel that working in a large company can bring a lot of rich resources and greatly help a career. But perhaps because of that, if you don’t use it properly, it can become a retirement zone, and over time you can become a redundant employee.
Under such circumstances, and with a strong backend team, I also started to study backend knowledge and infrastructure more deeply, and tried to understand backend operations in more detail, specifically:
- How to design a solid message queue mechanism. Following the team’s footsteps, I also discovered Kafka, a very powerful tool.
- Set up a server. While someone on the team has Ansible and nginx experience, I have gained a basic understanding of the basic settings and how to make adjustments. I no longer SSH into servers as before, and if I make a mistake, there are people who can teach and guide me. There are also many playbooks inside the company that I can refer to.
- I wrote a general Slack bot myself, which can cover different usage scenarios, and it is easy to write my own custom scripts.
- Set up the frontend’s common CI and automatic deployment mechanism (Slack).
- Prometheus, Kibana, and other metric monitoring tools.
- I set up ElasticSearch myself and tried to integrate the database (Postgres) with ElasticSearch to create a more complete full-text search service.
- Learned how DBs work. Postgres has been with me for five years and is still a solid partner.
In addition to backend work, I also spent some time digging into mobile development (iOS) and Swift.
I feel that the essence of frontend and app development is actually the same. We are all dealing with UI, data flow, and state management.
It’s just that the language and development platform are different. It is very interesting to see how different areas handle UI and state management with different syntax, and you can often learn from one another. For example, Swift recently released SwiftUI and Combine, and I think its state management approach is very worth referencing on the frontend.
Another big change was probably writing tests. Previously, there was no full QA period in my former company, so the tests were not written well. But now there is a whole QA period dedicated to QA, so writing tests becomes very important; otherwise, a bunch of QA bugs will be reported.
I’m happy to sacrifice a bit of performance in order to achieve greater testability and maintainability, because bugs and the workarounds that come with them are usually the biggest reason an entire codebase gets messed up. I also found it really easy to write tests in React! It’s also good for simulating actual user behavior.
I used to like Enzyme a lot (a powerful React testing wrapper), but now I feel that having such a powerful tool can entangle me in testing implementation details instead of behavior, so I am more inclined toward React Testing Library. It is a more straightforward way to do tests.
Break through the bottleneck
For me, my career in frontend may have reached a bottleneck. In addition to wanting to get into some relatively different areas (high-interaction requirements, video processing, image processing, text editing, music, etc.), I also want to continue learning lower-level technologies.
Another thing I have been thinking about recently is that I want to lead an excellent team to build better products together.
Although at age 25, for a lead role, the obstacles are often greater than the advantages, if there is such an opportunity, I want to take it.
life
2019 was the year with the best work-life balance for me. Because the number of appliances (oven, microwave) increased, my salary increased, and the size of the kitchen also increased, I could cook more frequently and try different kinds of food.
In addition to cooking more often, the number of tools (oven, microwave) increased, and the kitchen got bigger and bigger.
I cooked some more special dishes like:
- Dongpo pork (non-standard version)
- Spanish paella
- Baked cookies
- Baked pudding
- Fried fish (including handling the internal organs and scaling)
- Homemade burger steak
I have taken my cooking skills to the next level. I hope that this year I can continue trying different cuisines and find better sources of meat. Japan is not like Taiwan. There are not traditional butcher shops everywhere.
After coming to Japan, my weight also increased significantly lol, so I signed up for the gym, and then tried to control my diet and drinking frequency as much as possible, although the drinking culture in Japan is really terrible!
As for travel, although I didn’t intend to plan any big trips, if there was nothing special to deal with during the holidays, I would usually just go out for a walk.
As mentioned in the bottleneck section just now, in the future I still want to continue going deeper into the technical field, but I may not want to be limited to Web frontend knowledge and instead try to move into different areas as much as possible.
In 2020, in addition to continuing to grow in the frontend field, I also want to expand my scope to the entire computer science field. Among these, WebGL, low-level languages (C++ and C, Assembly), operating systems, and programming languages are topics I specifically want to touch on.
Understanding these things is very interesting to me.
I would like to mention in particular that at the end of 2019, I bought a PS4 and the game Death Stranding. I feel that the story of Death Stranding completely changed my life and thoughts, and also made me want to get to know Hideo Kojima (the director of Death Stranding). In 2020, I hope I can get more into the game field.
Thank
Each company has always had some people who are better than me, and it’s worth learning from them. The following order comes to mind:
- Weak self: Although it is an iOS podcast, in fact, many concepts are transferable. Every time I go to the gym, that’s when Weak Self is on. I can hear familiar voices in different places, and I feel very moved. (Although there are many Taiwanese colleagues XD)
- koji: In addition to speaking Japanese as fluently as a Japanese person (with no accent at all!), as a manager, he often cares about everyone’s situation, which also allows me to work in the company with peace of mind.
- Hirayama: My current supervisor gives me a lot of space to do what I want to do, and always encourages me to do things that are helpful to the team. I feel that being able to meet a good supervisor is an important factor in making my career go smoothly!
- Huang: He is a bit like a senior in the workplace. He has been in the workplace for a long time. He knows all kinds of workplace gossip and company culture. It’s easy to find a hint of direction when you are in trouble.
- denny: It’s pretty amazing to think about it now, from being former colleagues to working together in another country. When I see the familiar sudo T-shirt, I think of ordering lunch with Igarashi and the RD team, and watching Mr. Robot in the office together.
- Thomas: He is the most workaholic colleague I have ever seen, and he has a wide range of interests, which helps me a lot when I want to dig into a field I am not familiar with. As long as he can help, he is willing to help as soon as possible. Also, he is very passionate about technology. He often discusses low-level topics like Linux and operating systems. I have learned a lot from him, and he is also the most professional engineer I think I have encountered in my career.
- Jimmy: In addition to participating in discussions, he always helps improve the little things in the team. What impressed me most was a series of DevOps changes that made the whole development process smoother.
- Peter: Sometimes he throws me new designs and logos, and also often gives me suggestions on how to modify the website. Thanks, and thanks again!