I regard engineering as a branch of science, aiming to generate new value by combining various technologies. In the realm of application development, this process frequently takes place. In the short term, the focus inclines toward the pursuit of quality in its most apparent form. However, if you take a long-term perspective, paramount questions become how something will be realized, and how can it be realized efficiently.

I derive deep fascination from this problem-solving process. I strive to embrace thoughts that stretch from concrete requirements to an abstract level, and then to actualize these. Furthermore, the solutions that emerge become reusable artifacts, enabling exponential improvements in development efficiency over the long term. Through this process, I continue to create new value in the world of engineering.

On the other hand, it is not to say that abstract solutions are worthless in the short term. The problem is, creating abstract solutions takes time. However, reducing the time it takes to craft these abstract solutions is a vital skill for superior engineers.

Moreover, I consider the choice to abstract the problem or to leave it as is, to be a skill in itself. Pointless abstraction not only results in redundancy, but it can also cause the loss of flexibility, potentially yielding fragile output.

Principles like DRY (Don't Repeat Yourself) and YAGNI (You Aren't Gonna Need It) exist, but they do not always apply when considering the business at heart. Comprehending the business direction deeply is essential to discerning how the code should be constructed.

Business is always changing. The area known as business logic may benefit from being made redundantly adaptable at moderate levels as situations evolve.