Chinese Idiom Stories for Software Professionals: #35 A bird startled by the mere twang of a bowstring (惊弓之鸟)
Living in fear
This article is one of the “Chinese Idiom Stories for Software Professionals” series.
Story
Geng Ying was a famous archer in the State of Wei. He went sightseeing with the King of Wei. At that time, a bird was circling in the sky, uttering sad and shrill cries now and then. The King looked up at it for a while and said to Geng Ying: “ Can you shoot that bird down?”
“I can shoot it down without using an arrow,” Geng Ying said.
After a while, the bird flew near. Geng Ying pulled his bow to the full and plucked the bowstring. At the sound, the bird fell to the ground before their feet.
The King of Wei said in surprise: “You can shoot down a bird without an arrow. Your skill in archery is wonderful.”
Geng Ying said: “Your Majesty, this is not due to my good skill, but because this is a bird of bad luck. It wailed sadly and shrilly, and flew tiredly. It was already wounded, and for a long time could not find its companion. Therefore it couldn’t stand the least fright. As soon as I twanged my bow, it thought it had been shot and fell down of its own accord from the sky.”
Meaning
This idiom is used to describe those who frighten easily, due to past experiences.
Examples in Software Development
In software development, the most intensive time is towards to the release date. I witnessed and had been part of many of what I call ‘release panic syndromes’. That is, with the deadline approaching, the team’s panic level rises. A minor issue would startle the team, “Oh, no”. As you can imagine, working in that atmosphere would only cause more issues.
Here is a typical scenario. Many defects were found from the last round of manual testing by the testers. The manager started prioritizing the defects (or adjusting some to features), and programmers rushed to fix just the critical ones. Testers restarted the testing on the new build that had fixed some but not all the defects. Then there came the bad news: several previously working features are now broken (regression errors), Argh!
No one likes this experience, yet most IT professionals have to repeat it year after year. Somehow, it became normal, and many accepted it, including me before 2005.
Despite all the fuss, the solution is actually obvious, that is, automated end-to-end regression testing. However, many IT managers or tech leads didn’t try to attack the root of the problem, rather, they focused on human processes, such as:
Strict code preview
Every check-in must be correlated to a ticket
Prioritize test cases
Hire more testers
Change high-severity defects to lower ones.
…
Why? few actually have experienced or witnessed real Automated End-to-End (via UI) regression testing. Most of test automation attempts failed, so, automated regression testing won’t come to their mind.
When I decided to develop my own apps, I decided not to say NO to “‘release panic syndrome’. My weapon is to take test automation and continuous testing seriously from Day 1. In fact, I spent 70+% of the whole SDLC effort on testing, in return, I gained at least 10X productivity.
No Defect Tracking (internal).
(For any issues/defects, I would add/update the automated tests)Release to production on the same day when there is a change.
(I achieved that at least 99%)
Because of my efficient Continuous Testing process, I managed to develop and maintain the following apps (quite complex and large) in my spare time since 2007.
With the exception of the new TestWisely, all others have commercial customers.
Besides my day-time test automation consulting/coaching work, I also published 12 ebooks on test automation, continuous testing and programming, delivered trainings and spoke at international software testing conferences.
In terms of the number of software deployments, I probably have done thousands over the last 15 years. If I get the green build (passing all end-to-end testing on the BuildWise CT server), I deploy it to production immediately. I trust my automated testing process. (Is there any other way to achieve daily production such as Facebook’s ‘twice release a day’, I doubt it?)
I wouldn’t say developing/maintaining software is stress-free, but life is certainly a whole lot better than without the safety net (automated end-to-end regression testing suite).