Featured in
Process & Practices

In-App Subscriptions Made Easy

There are various types of subscriptions: recurring, non-recurring, free-trial periods, various billing cycles and any possible billing variation one can imagine. But with lack of information online, you might discover that mobile subscriptions behave differently from what you expected. This article will make your life somewhat easier when addressing an in-app subscriptions implementation.

Featured in
Enterprise Architecture

EIP Designer: Bridging the Gap Between EA and Development

This article presents the EIP Designer project, an Eclipse-based tool for introducing integration patterns into an EA design, providing fluidity and continuity while filling the gap existing between EA practices and concrete software development.

For most software, however, we don’t actually want zero bugs. Any defect, once it is in there, takes time and effort to remove. That time and effort will take away from effort spent putting in features. So you have to decide what to do.

Not enough courage to refactor complex, messy, buggy, but important piece of code.

Can’t make important decision, instead make less risky, but wrong decision.

Do everything to avoid responsibility, that leads to coward and stupid behavior.

Michael suggested that in reality having bugs in a production system is normal. This does not mean that teams should get complacent and avoid fixing bugs. However, this does imply that the so called 'last bug' is a mirage.

Jim suggested that one should be selective about the bugs that need to be fixed. Teams should first determine the importance of the bug to business operations by validating its severity and frequency. As a next step, technical factors like 'cost to fix' and 'risk to rest of the system' need to be considered before going ahead with the fix.

Zero bug tolerance naively assumes that it is always good, it’s always right, to fix a bug. But fixing a bug is not always the right thing to do, because with any fix you run the risk of introducing new problems

Test-First coding that is fundamental in achieving the goal of Zero Defects. Test-First coding requires that an automated unit-test is written before the production code and the test-to-code cycle time be 5-15 minutes long.

Likewise, Michael Dubakov suggested a combination of TDD, continuous integration, automated regression suite, root cause analysis and high development skills to reduce the number of defects.

Thus, though the system should have minimal defects, striving for zero defects is an unending goal. The key lies in knowing when to stop. As Jim advised,

Knowing when to stop fixing bugs, when you’ve reached the point of diminishing returns, when you should focus on more important work, isn’t easy. Knowing which bugs to fix and which ones not too, or which ones you can’t or shouldn’t fix now, isn’t easy. And you will be wrong sometimes.

We have a zero defect policy implemented as a quarterly objective. I have seen it has driven a lot of process and practice changes along with an increased emphasis on quality which is helping us write quality bug free software. But we are implementing this policy in an incremental manner. As we are following SCRUM , it is further helping us to incrementally reach our goal of a defect free system.