ENKO

Beauty, Interfaces, and Technology

A One-Sentence Vision Chosen by a First-Year Developer

While I'm still a junior frontend developer in terms of years of experience, I've been striving to experience, contemplate, and grow with real intensity. Looking back at an article I wrote about 2 years ago, it was interesting to see what kind of thoughts I had while trying to grow back then.

After working for a year now, what is my goal and vision as a developer?

After careful consideration and choosing my words thoughtfully, I've summarized it in the following sentence:

I help more people experience new technologies through beautifully and naturally designed code and interfaces.

Let me explain how the values and vision I hold dear are encapsulated in this sentence.

Beautiful and Natural

Beautiful

Pretty things matter. As the saying goes, "good-looking rice cakes taste good too" - beautiful and elegant UI can provide a better experience and impression even for the same service or product. I strive to implement beautiful UI and obsess over details. When I get good UI insights, I record and collect them for future reference. However, what I mean by "beautiful" here isn't just visual beauty. It's like looking at a person - I pursue not only external beauty but also internal beauty (which would be code in the case of software). Only then can I truly love the products I create.

What is beautiful code? While there may be various discussions about this, commonly accepted ideas include code that follows SOLID principles like single responsibility and interface segregation, code with high flexibility, reusability, and maintainability, and code that is declaratively written through appropriate abstraction to make logic easy to understand... The criteria are diverse and there may be no single correct answer. However, there's definitely code that even I, at a junior level, find readable and well-structured, and I feel it's beautifully designed. I'm constantly trying to learn what well-designed code is by looking at good code examples.

Implementing functionality often isn't difficult. You can somehow make it work. However, if you consider whether the code has well-separated concerns, proper exception handling, etc., creating beautiful and elegant code requires tremendous effort and experience, and I always keep this in mind when developing.

Looking at code I wrote a year ago now, I don't find it beautiful at all. I can see in the code how I was rushing to implement and hastily using new technologies without seeing the big picture back then. In a way, it feels pretty good because it seems like evidence that I've built up the ability to discern code quality in just one year. When I look back at the code I write today later, I'm sure I won't think it's the best approach. I'll continue to strive to write code with better, more beautiful structure. I will become a frontend developer who implements beautiful UI through beautiful code.

  • Natural

My discussion of beauty got long, so I don't think I properly explained the word "natural." If you've studied UI/UX or HCI, you'll know that human-centered thinking and psychology are considered important in design.

Natural user experience is good user experience. It works as users intend and provides satisfying feedback. I once experienced an interface that flowed as naturally as water, and it was truly amazing. I hope I can become a developer who provides such experiences.

  • I don't think design is the exclusive domain of designers. Frontend developers are, in a way, super alpha testers. While developing, they're the first to use the product and have the ability to constantly think about feedback from a user's perspective and immediately reflect it in the product. The more we can fully utilize this ability, the better. In that sense, I find frontend development truly attractive.

Interface

Interfaces can be applied in various ways. I drew a diagram of the interfaces I think about.

Interface is a word that should be familiar if you do frontend development. The dictionary definition of interface is as follows:

The contact point and boundary where two different components meet. From user interfaces (UI) to APIs (Application Programming Interfaces) and TypeScript interfaces, the two elements can be software, hardware, or even people. In narrow terms, it's a protocol for components to exchange information with each other, and if we broaden the concept, communication between people could also be seen as an interface. We communicate with each other through interfaces. Code also communicates with each other through interfaces.

I find great interest and joy in beautifully (=well) connecting two different things.

User Interface (UI)

Developing the part where users and services meet is no different from developing a face. Therefore, frontend developers need serious consideration about users. We must listen to users' voices, communicate with them, and think about how to deliver good experiences and value to improve the usability of products and services.

Most of my peers seem to choose backend development that requires logical thinking or the currently hot ML/AI field. Choosing frontend doesn't seem to be a common case. I've also tried ML and backend development, but I didn't feel the thrilling fun and passion I feel when doing frontend development. I believe that the field where I have real passion and can leverage my strengths to achieve outstanding results is Front End - designing and technically implementing user interfaces that meet users.

Component Interfaces

In React, it's important to properly separate components considering roles and responsibilities, and I feel that interfaces should be considered when separating them.

In object-oriented languages, interfaces help develop software as independent modules. The same applies to components. Writing component Props well with TypeScript interfaces helps check what a component is dependent on, whether coupling is too high, helps separate components well, and increases reusability. Users should be able to predict how it will work by looking at the interface without seeing inside the component. Through interfaces, we can separate domain elements and hide complex business logic. This is why we can create components that are flexible to changes through well-made interfaces.

Interface Between Developers and Designers

I'd like to call myself a person with both developer and designer blood flowing simultaneously. Since childhood, my two favorite and best skills were handling computers and drawing. Even in university, I majored in computer science and industrial design, and now I'm nurturing my dream as a frontend developer.

You can often see memes online about developers and designers (or planners) fighting, which I see as communication problems arising from differences in understanding and perspective. A developer who can provide clear theoretical grounds for their arguments based on knowledge of user experience could solve these problems and even make the team create greater synergy. I actively communicate with designers and make suggestions about design based on technical knowledge. When participating in hackathons, I sometimes compete as a frontend developer who also takes on the designer position when needed. Enjoying communication with people from various professions - not just developers but also designers and planners - and being able to serve as an 'interface' connecting developers and designers might be one of my great strengths.

The research topic I worked on as a research intern at Professor Kim Juho's KIXLAB was also about designing an AI intelligence level framework that could help Designer Developer Communication. Looking at papers and design systems from Microsoft, Google, and Apple, I contemplated how designers and developers could design AI infused products with a more unified language (level). It was a research topic I truly enjoyed, having both designer and developer perspectives. I want to become a developer who has Design Thinking while understanding technology.

New Technology to More People

At my current company, I've imagined what kind of impact we could have on people through the convergence of blockchain and AI, and developed web products that could deliver this to users. I took ownership of various attempts and experienced failures while introducing many unprecedented products to the world: a token reward SNS service for fans and creators, a serverless cloud platform for one-click open source deployment, NFT minting pages, and unique React projects (NFT image generation tools, interactive gallery kiosks). I think making technologies like NFT and Web3, which are still unfamiliar and difficult to understand, easier and more fun to deliver is a task that needs to be solved through frontend engineering in the market (Crypto Scene) that our current company focuses on. Therefore, I focused on creating products with more convenient and user-friendly interfaces from cryptocurrency wallets that are still too inconvenient to use and products using blockchain technology (commonly called Dapps). I want to become someone who creates '0 to 1' value through new technology, making the impact of technology more conveniently accessible to more people.

The reason I chose Web as a method to create impact is because I thought Web has infinite possibilities. From the days when it simply showed static pages (Web 1.0) to now, with technologies like JavaScript, jQuery, and React adding increasingly interactive dynamic features, and expansion into native territory through Electron and PWA, the web seemed to hold countless possibilities. Isn't the frontend web frameworks that emerge almost daily evidence that the web continues to evolve? That's why I myself must continue studying and developing. While I should avoid blindly following rapidly changing trends without deep consideration, new technologies are born and change to provide better experiences to users (or developers) than before, so watching and following up on frontend development trends isn't difficult - it's just fun. One of my goals is to become someone who leads these technology trends, not just follows them after building up skills.


It was difficult to introduce myself in a short sentence. It was good to have time to organize around my ideals for growth, my dreams and vision, among the many elements I possess.

I hope when I look back at this writing later, I can confirm that I'm growing rapidly while maintaining good direction.