In this article, I would like to introduce some techniques about how to apply automatic refactoring in your daily work through some usage of jscodeshift. To be more specific, I will introduce during the process of developing and maintaining a design-system recently, how have we used jscodeshift to upgrade breaking API changes to minimise the impact to our consumers.

When your component has either an internal or external consumers, and if you don’t have the access to the consuming codebase (you cannot apply changes directly to the codebase), then the techniques and patterns discussed here can be useful to you…


Six team behaviors that crush collaboration

Thanks to my colleague at ThoughtWorks Daisy Park for her hard work on editing and making the article more readable.

It’s almost inevitable that we need to work with people in our day jobs. However, it can always feel a little risky to work with unfamiliar co-workers. We often hear inspiring stories about “high-performance teams” and the benefits of team collaboration, but in reality, it’s rare to have smooth teamwork from the get-go.

When I look back on some of my past projects, I feel grateful to have worked with so many talented people who inspired me in many different…

To Buy Screenshots

Undoubtedly, Covid-19 has, in many ways, affected our lives profoundly. Mandatory face masks when you go out for a coffee, social distancing in public, How to wash your hands in 6 steps, or the negative mental impacts since physical isolation because of working from home and so on. Those changes are shaping our life.

What I’m sharing today has something to do with covid-19. It’s about how I built and published a mobile App from scratch after Daniel Andrews announced Victoria enters Disaster State for two months and I have to stay at home for almost 24 hours per day…


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.

However, since every abstraction omits some details and emphasises some other features, sometimes it can block us from understanding the problem (I guess our brains prefer tangible things more). And that’s when examples jump in for help. In other words, during a creative process, either coding or designing we, on the one hand, need to extract concepts…

This excerpt is from my book Mastering Test Driven Development with React. It is the fundamental part of the book — about applying TDD with an end-to-end example, follow this link for more details.

In this chapter, we will learn together about how to apply TDD in your daily development routine by a step-to-step guide. Along with this demo, you will get the idea of how to split a big task into relative smaller ones, and accomplish each one with a set of passing tests and a bit refactoring techniques. …

In my not-so-long career, I have received a variety of positive feedback from a lot of awesome co-workers (of course, there could be even more constructive feedback as well, and unsurprisingly I chose to ignore them). Some appreciated my sophisticated command line tricks, and others thought I was able to write high-quality code fast, whereas people like the customisation of my vim plugins, furthermore, someone once told me that she turns to be more effective on PowerPoint composition when sitting next to me. …

When the Product Owner told you it’s a small change, don’t trust him.

An estimation session

After the iteration planning meeting, when all the stories had been walked through, the PO turned to you with a lovely smile, pretending it was just an impromptu chat, asking you how long would it take for adding an InputBox to one of the pages.

What he described was a “simple” InputBox for the user to enter his/her address along with other personal information and persist to the backend.

He even sketched an irregular box on a whiteboard to illustrate the idea and trying to make it…

Pair programming is far more than two developers sit together and writing code. — Unknown

Pair programming

Pair programming is a relatively controversial practice among all the agile practices — if not the most. In fact, only a few teams that adopting it can actually benefit from it. For most of the rest, even they claim they are doing agile, it’s often seen two contrary communities: advocates emphasis things such as knowledge transform, reduce potential defects, avoid information island, etc. The opponents, on the other hand, believe it's sort of a waste of time: it's hard for developers always focus on a…

If I had only one hour to fix a defect in production, I would spend 50 minutes writing correspond tests, and 10 minutes making the code changes.

Are you sure it’s a defect?

Santhosh from QA team walked to you with a severe and pale face, even before he opened his mouth, you know something went wrong. He didn’t start with a greeting like ‘lovely day’ or ‘how is that going’, instead, he started directly describing you the steps to reproduce the ‘defect’, and told you someone in QA team was blocked.

You were a little worried and tried to dive into the code and fix…

All great teams are alike; each poor-formed team has their own problem(s)

If you walk into any well-running agile team, you would surprisingly find that what people do are pretty simple and straightforward on daily basis. It’s not saying the problems they’ve been solving are less challenging than any other projects. The tasks are just simple and well defined and have less friction with each other or with their environment.

They delivery workable software, in an end-to-end fashion, every piece of work has clearly defined acceptance criteria, tasks have well-defined priority, the backlog is sufficient but not creating any anxieties…

Juntao Qiu

A software developer at ThoughtWorks. A technical writer, recreational fisherman, and amateur boxer.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store