All Articles

In this blog, I share insights on software development, focusing on design principles and patterns to address complex business challenges. Topics like refactoring, test-driven development, and pair programming are covered, emphasizing how they contribute to more maintainable and enjoyable coding practices.

Software development is an intellectually stimulating journey. It's rewarding to overcome challenges and achieve a deep sense of satisfaction. This blog is where I document these enriching experiences, hoping to inspire and engage fellow enthusiasts in the art of coding.


Interview with Packt on my new book React Anti-Patterns

As an application grows and more code is added, the initial loading time can become noticeably longer. This delay, sometimes lasting several seconds, can frustrate users. To avoid this, it's essential to optimize loading times.

Juntao Qiu • 01/10/2024

Implementing Dynamic Import and Code Splitting

As an application grows and more code is added, the initial loading time can become noticeably longer. This delay, sometimes lasting several seconds, can frustrate users. To avoid this, it's essential to optimize loading times.

Juntao Qiu • 12/21/2023

Headless Component: a pattern for composing React UIs

As React UI controls become more sophisticated, complex logic can get intertwined with the visual representation. This makes it hard to reason about the behavior of the component, hard to test it, and necessary to build similar components that need a different look. A Headless Component extracts all non-visual logic and state management, separating the brain of a component from its looks.

Juntao Qiu • 11/07/2023

Why Web UI Development Is So Hard?

The landscape of web UI development is fraught with challenges that extend beyond writing code and designing interfaces. The inherent language limitations, nuanced data management, async complexities, and often-ignored unhappy paths collectively make this a formidable field. Architectural decisions ...

Juntao Qiu • 10/10/2023

Modularizing React Applications with Established UI Patterns

Established UI patterns are often underutilized in the frontend development world, despite their proven effectiveness in solving complex problems in UI design. This article explores the application of established UI building patterns to the React world, with a refactoring journey code example to showcase the benefits. The emphasis is placed on how layering architecture can help organize the React application for improved responsiveness and future changes.

Juntao Qiu • 02/16/2023

Test-Driven Development Mini Course

The Mini-Course on React and Test-Driven Development will provide you with the skills and knowledge to build robust, scalable and maintainable React applications.

Juntao Qiu • 02/01/2023

React Clean Code - mocking network scenarios

Handling network requests is complicated. There are too many cases you have to consider on top of the asynchronised process. And testing these code can be even more challenging...

Juntao Qiu • 12/21/2022

If I Could Only Teach One Thing to a Beginner Developer

A few weeks ago, I got an interesting idea when I was writing a blog post about how to abstract your code to make it easier to reuse. I wanted to know what other developers think is the most important principle they would teach a newbie developer and why they would choose that design principle.

Juntao Qiu • 12/01/2022

Implementing Design System

So it’s not a single standard of how you would design at scale but a set of standards, and it is a visual language, which is important both by the user experience design and implementation...

Juntao Qiu • 11/19/2022

A story: from idea to product

As the saying goes: all great things have small beginnings. Even the most complicated product starts with a small and simple idea. And during the process of implementing it, even for a simple App like To Buy, there are many details to consider and polish.

Juntao Qiu • 10/28/2020

Different Levels of Abstraction

The ability of abstracting should be the most fundamental skill a developer should have, and I can't emphasise this enough. By abstracting, we can escape from the overwhelming seemingly irrelevant details to a solution that could solve all the problems at one go.

Juntao Qiu • 07/10/2020
© 2023