ENKO

Beautiful, Interface, and Technology

A junior frontend developer's vision for beautiful code and interfaces, and new technology

While I'm still a junior frontend developer in terms of years of experience, I've truly been passionate about experiencing, contemplating, and growing. 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.

After working for a year now, what are my goals and vision as a developer?

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

Through beautifully and naturally designed code and interfaces, I help more people experience new technology.

Let me try to explain how the values and vision I hold important are implicitly contained within this sentence.

Beautiful and Natural

Beautiful

Pretty things matter. As they say, "what looks good tastes good too," and beautiful, elegant UI can provide better experiences and impressions 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 doesn't just refer to visual beauty. It's like looking at people - I pursue not only external beauty but also internal beauty (which would be code in software). That way, I can love the products I create.

What constitutes beautiful code? While there are various discussions, commonly accepted criteria include: code that follows SOLID principles like single responsibility and interface segregation, code with high flexibility, reusability, and maintainability, code that's declaratively written through appropriate abstraction and easy to understand logically, etc. The standards are diverse and there's probably no single correct answer. However, even at my junior level, there's definitely code that looks readable and well-structured, which I feel is beautifully designed. I'm constantly learning what well-designed code looks like by examining good code.

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

Looking at code I wrote a year ago now, I feel it's not beautiful at all. I can see my past self in that code - being hasty to implement and eagerly trying new technologies without seeing the bigger picture. In a way, it's evidence that I've built the skills to discern code quality over the past year, so I don't feel too bad about it. When I look back at the code I write today later on, I'm sure I won't think it's the best approach. I'll continue working toward writing better, more beautiful structured code. I will become a frontend developer who implements beautiful UI through beautiful code.

Natural

The discussion about beauty went long, so I couldn't properly explain the word "natural." If you've studied UI/UX or HCI, you'd 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've experienced interfaces that flow as naturally as water, and it was truly admirable. 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 can experience the product first before anyone else, constantly think about feedback from a user's perspective, and have the ability to immediately reflect that in the product. I believe the more we fully utilize this ability, the better. In that sense, I find frontend development quite attractive.

Interface

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

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

The contact point and boundary where two different components meet. Starting from user interfaces (UI) to APIs (Application Programming Interfaces), TypeScript interfaces - the two elements can be software, hardware, or even people. In a narrow sense, it's a protocol for components to exchange information with each other, and if we broaden the concept, communication between people could also be viewed 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 of users. To improve product and service usability, we must listen to users' voices, communicate, and think about how to deliver good experiences and value.

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

Component Interfaces

In React, it's important to properly separate components considering their roles and responsibilities, and I feel we need to consider interfaces when separating them.

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

Interface Between Developers and Designers

I like to call myself a person with both developer and designer blood flowing. Since childhood, my two favorite and best skills were using computers and drawing. Even in college, I majored in computer science and industrial design, and now I'm growing my dreams as a frontend developer.

You can often see memes on the internet 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 user experience knowledge could solve such problems and actually 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 handles the designer position when needed. I enjoy communicating with people from various professions - not just developers, but designers, planners, etc. 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 pondered how designers and developers could design AI-infused products with a more unified language (level). It was a truly enjoyable research topic for me, having both designer and developer perspectives. I want to become a developer who has design thinking while understanding technology.

New Technology for More People

At my current company, I 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 and made various attempts on diverse projects: 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). Through failures and experiences, I introduced many unprecedented products to the world. Making technologies like NFT and Web3, which are still unfamiliar and difficult to understand, easier and more fun to access is what I believe frontend engineering needs to solve in the market (Crypto Scene) my current company focuses on. Therefore, I focused on making products using blockchain technology (commonly called Dapps) and cryptocurrency wallets, which are still too inconvenient to use, into products with more convenient and user-friendly interfaces. I want to become someone who creates '0 to 1' value through new technology, allowing more people to conveniently use technology's impact.

The reason I chose Web as a method to create impact is because I believe Web has infinite possibilities. From the days of simply showing static pages (Web 1.0) to adding increasingly interactive dynamic features with technologies like JavaScript, jQuery, and React, and expanding to native territories through Electron and PWA - Web seemed to hold countless possibilities. Isn't the constant emergence of new frontend web frameworks evidence that the web continues to evolve? That's why I must keep studying and developing myself. While I should avoid thoughtlessly following rapidly changing trends, new technologies emerge and change to provide better experiences for users (or developers) than before, so keeping up with and following frontend development trends is not difficult but rather enjoyable. After building substantial skills, one of my goals is to become someone who leads these technology trends rather than just following them.


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

I hope that when I look back at this writing later, I can confirm whether I'm growing quickly while maintaining the right direction.