Thursday, November 14, 2013

Applying the 80:20 Rule in Software Development

Managers don’t want to think harder than they have to. They like simple rules of thumb, quick and straightforward ways of looking at problems and getting pointed in the right direction. The simpler, the better.

One of the most useful rules of thumb is the 80:20 rule:

80% of effects come from 20% of causes and 80% of results come from 20% of effort.
It’s the flip side of diminishing returns: instead of getting less out of doing more, you can get more from doing less, by working smarter, not harder.

You can see obvious cases where the 80:20 rule applies in software without looking too hard. For example, 80% of performance improvements are found by optimizing 20% of the code – although the actual ratio is probably much closer to 90:10 or even 99:1 when it comes to performance optimization. But whether it's 80:20 or 90:10 or 70:30, the rule works essentially the same.

80:20 Who uses What, What do you Really have to Deliver

Another well-known 80:20 rule in software is that 80% of users only use 20% of features. This came out of research from the Standish Group back in 2002, where they found that:

  • 45% of features were never used;
  • 19% used rarely;
  • 16% sometimes;
  • only 20% were used frequently or always.

Like the like the cost of change curve, this is another example of a widely-held “truth” in software development which is based on limited evidence – it would be good to see more research that backs this claim up.

This finding has heavily influenced Agile and Lean development, encouraging people to focus on delivering minimum marketable features or defining a minimum viable product, even in large-scale enterprise projects. Instead of trying to design and plan out all of the features that a system may need, come up with the smallest, tightest possible definition of what people think is important and useful in itself, prioritize the features and deliver in steps as quickly as possible.

Standish Group’s latest research shows that thinking smaller and delivering less is a key to improving the success of software projects: While more than 70% of small projects are delivered successfully, large projects have “virtually no chance of success: … more than twice the chance of being late, over budget, and missing critical features”.

“In summary, there is no doubt that focusing on the 20% of the features that give you 80% of the value will maximize the investment in software development and improve overall user satisfaction. After all, there is never enough time or money to do everything. The natural expectation is for executives and stakeholders to want it all and want it all now. Therefore, reducing scope and not doing 100% of the features and functions is not only a valid strategy, but a prudent one.”

But thinking small and delivering less faster can also come with a downside: a “reduction in value and innovation”, when people play too safe and set the bar too low. Delivering 20% or 50% of a system won’t always be enough to succeed, even supposing that you can figure out what the right 20-50% is – some of those “extra features” are still important and necessary to somebody even if they aren't used much. You’ll need more than a minimum viable product to redefine a market or how people work or play, to set the world on fire.

80:20 Bugs and Testing

Code quality, bugs and testing is another area where the 80:20 rule is especially useful:

80% of bugs are found in 20% of the code

90% of downtime comes from 10% (or less) of defects

Bugs cluster in certain parts of code, especially serious bugs. Most of your most serious problems will come from a small number of bugs.

“80% of the errors and crashes in Windows and Office were caused by 20% of the entire pool of bugs detected.”
Microsoft’s CEO: 80-20 Rule Applies to Bugs, Not Just Features Oct 2002
Understanding where most of your most serious bugs are and why they got there and what you need to do to prevent more of them is where you should be spending a lot of your time.

Some studies have found that half of your code might not have any bugs at all, while most bugs will be found in only 10-20% of the code – often the 10-20% of the code that is changed most often (see “80:20 Which code gets changed and how often” below).

Each time that you find a bug in this code, chances are that it means there are still more bugs left to find and fix. The more bugs you find, the more chances there are that there are still more bugs to be found, in a downward spiral.

Capers Jones says that having to work on – or work around – high-risk error-prone code is the single largest drag on developer productivity over the life of a system and that not figuring out what code is causing you the most trouble and doing something about it is one of the most expensive mistakes that a development team can make.

Each time that you touch this code, even when you’re trying to fix it, there is a good chance that you are making it worse, not better: there is more than a 20% chance that a developer trying to fix a bug in error-prone code will accidentally introduce a new bug as a side-effect. Most of the effort put into trying to understand this code and fix it and understand it and fix it over and over, is wasted:

“Most error-prone modules are so complex and so difficult to understand that they cannot be repaired once they are created“.

When code gets this bad, it needs extensive and “brutal refactoring” to make it understandable and safer to work with, or it needs to be “surgically removed and replaced” with new code written from scratch by somebody who knows what they are doing.

It’s not hard to identify what parts of the code are bad if you have the same people working on the same code for a while – ask anyone on the team and they’ll know where that nasty stink is coming from. In big systems and big organizations with lots of turnover, you’ll probably need to track bugs over time and mine defect data for bug clusters, rather than just fixing bugs and moving on.

80% of time spent fixing bugs is on 20% of the bugs

Some bugs are much harder to fix than others. Sometimes because the code is so bad (see the rule above). Sometimes because the problems are so hard to reproduce and debug. Sometimes because they are much deeper than they appear to be – fundamental bugs in design, bugs that you can’t code your way out of. Be prepared for those times when even your best developers won’t be able to tell you when – or even if – some bugs will be fixed.

80:20 Which code gets changed and how often

Michael Feathers has found more 80:20 power law distributions by looking at changes to code bases over time (“Discovering Startling Things from your Version Control System”):

80% of changes are made in 20% of the code

A lot of code is written once, and never changed: static and standardized interfaces, basic wiring and config, back office functions. Then there’s other code that changes all of the time: the 20% of features which are used 80% of the time and need to be tweaked and tuned and occasionally overhauled as needs change; core code that needs to be optimized; and other code that needs to be fixed a lot because it contains too many bugs (back again to the 80:20 bug cluster rule above).

Feathers has found that code that gets changed a lot also tends to get bigger as time gets on, because of a simple, built-in bias:

it is easier to add code to an existing method than to add a new method and easier to add another method to an existing class than to add a new class.
As a result, many systems end up with a few very large classes which contain a few very large methods, and which keep getting bigger and bigger as code gets changed.

Hot spots in code are easy to find by reviewing check-in history for areas with high churn and through simple static analysis of the code base. This is where you get the most value out of refactoring, where you can do the most to keep the code from losing structure and becoming dangerously unmaintainable – and it is also the code that naturally should get refactored most often as part of making changes (changed more often = refactored more often if you’re refactoring properly).

80:20 and Programming Time

The first 80% of code is done in 20% of time…the remaining 20% of the code takes the other 80% of the time

It usually doesn't take long to get something almost working, or something that looks like it works, especially if you’re working iteratively and incrementally, delivering frequently and fast.

But there’s a lot of work that still needs to be done “behind the scenes” to finish things up, to catch the edge cases and handle errors, make sure that the system performs and scales, find and fix all of the little bugs, get the code into shape before it can be deployed. Product Owners/Customers (and managers) often don’t understand why it takes so long to get the “last 20%” of the work done. And programmers often forget how long this takes too, and don’t include this work in their estimates. This is why a developer’s estimates are so often wrong. And why prototyping can be so dangerous in setting unrealistic expectations.

80:20 and Managing Software Development

Keeping the 80:20 rough rule in mind can save you money and time, and improve your chance of success by keeping you focused on what’s important: the features that really matter, the parts of the code where most of your most serious bugs are (and the bugs that take the most time to fix); the parts of the code that are changing the most; and how and where your team really spends their time.

59 comments:

Anonymous said...

Hi Jim, I found your post very interesting. I was looking for "how to manage dev teams in order to understand the importance of Pareto principle relaying on business definitions". It was with some kind of joy that I read your blog, but what do you think about dealing with incomplete business definitions where the 80% of profit comes from 20% of the relevant business operations? I'm a senior Business Analyst's manager and I still didn't find a proper balance between partials business definitions and the need for programmers to have everything defined in order to have every single detail in account.
thanks in advance! Diego

Sada Rajagopalan said...

Scrum = 80% ceremonies 20% real work

Shekhar Singh said...

Waterfall 20% functional 80% dead applications

Cary Bel said...

Yes I totally agree with your rules. These are very important rule in any software development company. We at Cryptex follow standard rule of agile development software.

Apsara G said...

Interesting blog post. This blog shows that you have a great future as a content writer. Waiting for more updates...
Pega Training in Chennai | Python Training in Chennai

Apsara G said...

The strategy you have posted on this technology helped me to get into the next level and had lot of information in it... Java Training in Chennai | RPA Training in Chennai

Priya Rajesh said...

Thanks for sharing this information admin, it helps me to learn new things. Continue sharing more like this.
RPA Training in Chennai | Robotics Process Automation Training in Chennai | UiPath Training in Chennai | UiPath Training | Blue Prism Training Institute in Chennai | Blue Prism course in Chennai

Stephanica said...

Really nice topics you had discussed above. I am much impressed. Thank you for providing this nice information here.

Game Testing Automtion Company

Compliance Game Testing Services

Functionality QA Testing

Video Game Testing Companies

Shreya Shukla said...

I am really thankful to the admin of this blog for sharing the interesting stuff with us. IT training is really useful for the career. If you don't have much idea what can IT Traning do for you, then you should search it first over the Google that IT services are in demand at the present time in the market.

SEO Training in Lucknow | Software Training in Lucknow

Outsourced Product Development said...

I am really impressed with your blog article, such great & useful knowledge you mentioned here.Your post is very informative. I have read all your posts and all are very informative. Thanks for sharing and keep it up like this.

Robotic Process Automation Tutorial said...

Nice article with excellent way of approach. Your post was really helpful.Thanks for Sharing this nice info.
rpa training chennai | rpa training in velachery | rpa fees in chennai

Adams Young said...

Cyberviman believes in 100% client satisfaction. We work round the clock to understand the customer need and deliver the best software compatible with the latest technology that sustains for a long period of time. IT consultant services

nandakishor said...

Tutuapp

tutuapp download

tutuapp apk

tutuapp downloading

tutuapp install

Tutuapp free

tutuapp ios

tutuapp vip free

tutuapp vip

tutuapp android

https://www-tutuapp.com

Anbarasan14 said...

Nice post. Thanks for sharing such a worthy information.

TOEFL Classes in Chennai
Best TOEFL Classes in Chennai
TOEFL in Chennai
TOEFL Classes near me
Spanish Classes in Chennai
Spanish Language Course in Chennai
Spanish Courses in Chennai

pavithra dass said...

This is an awesome post.Really very informative and creative contents. These concept is a good way to enhance the knowledge.I like it and help me to development very well.Thank you for this brief explanation and very nice information.Well, got a good knowledge.
RPA Training in Chennai
Selenium Training in Chennai
RPA Training Institute in Chennai
Robotic Process Automation Courses
Selenium classes in chennai
Selenium testing training in chennai

Anoushka Sakthi said...

This is the best article on recent technology. Thanks for taking your own time to share your knowledge,

Selenium Training in Chennai
Selenium Course in Chennai
iOS Course in Chennai
iOS Training Chennai
best ios training in chennai
JAVA Training in Chennai
JAVA Course in Chennai

Anjali Siva said...

Thanks for sharing this pretty post, it was good and helpful. Share more like this.
ccna Training institute in Chennai
ccna institute in Chennai
ccna Training center in Chennai
Best CCNA Training Institute in Chennai
ccna certification in Chennai
ccna Training in Velachery

Shadeep shree said...

The information you have shared is more useful to us. Thanks for your blog.
List of Franchise Business in India
Franchise Opportunities in India with Low Investment
Best Franchise Business in India
Frenchies in India
Top Franchise in
India


Annie said...


Awwsome informative blog ,Very good information thanks for sharing such wonderful blog with us ,after long time came across such knowlegeble blog. keep sharing such informative blog with us.
Airport Management Courses in Chennai | Airport Management Training in Chennai | Diploma in Airport Management Course in Chennai | Airlines Training Chennai | Airline Academy in Chennai

Arunaram said...

Your blog is very interesting. Thank you for your sharing this post. I want more information in your blog...!
Web Designing Training in Saidapet
Web Designing Course in Aminjikarai
Web Designing Training in Vadapalani
Web Designing Training in Kelambakkam
Web Designing Training in Karappakkam
Web Designing Course in Padur

Stephanica said...

Thank you for the nice article here. Really nice and keep update to explore more gaming tips and ideas.

Video Game Testing

Xplore IT Corp said...

Hey Nice Blog!! Thanks For Sharing!!!Wonderful blog & good post.Its really helpful for me, waiting for a more new post. Keep Blogging!
networking training
ccna Training

nanadhini chandran said...

Nice way of expressing your ideas with us.
thanks for sharing with us and please add more information's.
Best institute for Cloud computing in Bangalore
Cloud Computing Training in Ambattur
Cloud Computing Training in Guindy
Cloud Computing Certification Training in OMR

sumathi s said...

It is really a great work and the way in which you are sharing the knowledge is excellent. Thanks for your informative article
occupational health and safety course in chennai

Swetha Gauri said...

Thanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.
nebosh course in chennai

sharmi chithra said...

Nice post. I learned some new information. Thanks for sharing.

Xamarin Training in Chennai
Xamarin Course in Chennai
Xamarin Training
Xamarin Course
Xamarin Training Course
Xamarin Classes
Best Xamarin Course

361online said...

Thanks for sharing this valuable information to us.

big data analytics training online

big data training online

pavithra dass said...

I am obliged to you for sharing this piece of information here and updating us with your resourceful guidance. Hope this might benefit many learners. Keep sharing this gainful articles and continue updating us.
Hadoop Training in Chennai
CCNA Training in Chennai
Big Data Course in Chennai
Big Data Hadoop Training in Chennai
CCNA Training institute in Chennai
CCNA institute in Chennai

pavithra dass said...

I wanted to thank you for this great blog! I really enjoying every little bit of it and I have you bookmarked to check out new stuff you post.
Web Designing Course in chennai
PHP Training in Chennai
web designing training in chennai
Web Development courses in Chennai
PHP Course in Chennai
PHP Training Institute in Chennai

Meera Kumar said...

Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.
R Programming Training in Chennai | R Programming Training in Chennai with Placement | R Programming Interview Questions and Answers | Trending Software Technologies in 2018

LindaJasmine said...

Thanks for sharing such an amazing post. Your style of writing is very unique. It made me mesmerized in your words. Keep on writing.
Informatica Training chennai
Informatica Training institutes in Chennai
Best Informatica Training Institute In Chennai
Best Informatica Training center In Chennai
Informatica institutes in Chennai
Informatica courses in Chennai
Informatica MDM Training in Chennai

vishnu said...

You have done an excellent work by posting this in your blog. I found really useful.

C++ Training in Chennai
C++ Training
C++ Training in Adyar
C++ Training in Tambaram
C++ Training in Velachery

kavinilavu G said...


Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.hadoop developer skills Set | hadoop training course fees in chennai | Hadoop Training in Chennai Omr

Robotic Process Automation Tutorial said...

Very interesting blog.Thanks for sharing this much valuable information.Keep Rocking.
rpa training institute in chennai | rpa course fee in chennai | trending technologies list 2018

Aruna ram said...

Fantastic concept, this is very helpful for improve my knowledge. I like more content from your blog....
Machine Learning Training in Nungambakkam
Machine Learning Course in Saidapet
Machine Learning Training in Aminjikarai
Machine Learning Course in Vadapalani
Machine Learning Course in Chennai

getsol india said...

nice post..Business Consultants in chennai
Digital Marketing Companies in Chennai
Social Media Marketing Chennai
website design and development in chennai

getsol india said...

nice post..web design company in chennai
web design services in chennai
website designing company in chennai
website developers in chennai
best web design company in chennai

aruna ram said...

What a wonderful information, how you had written this content. This content is very helpful for me. Thank you for your nice post!!!
Big Data Hadoop Course in Bangalore
Big Data Hadoop Training institutes in Bangalore
Big Data Hadoop Training institute in Bangalore
Best Big Data Hadoop Training in Bangalore
Big Data Training in Tambaram
Big Data Hadoop Training in sholinganallur

swetha singh said...

Very useful information, Keep posting more blog like this, Thank you.
Aviation Academy in Chennai
Aviation Courses in Chennai
fly air aviation academy chennai
aviation training in chennai

jenny lia said...

Agree completely. But what I often find is that an external client wants a fixed scope that must be contractually delivered for a fixed price and be agile at the same time so basically getting changes for free. An otherwise nice article...
web development services

jenny lia said...
This comment has been removed by the author.
karthik said...

https://sattaking2018.co/
satta king 2018
satta king online
satta king gali
satta king

Unknown said...

safety course in hyderabad
nebosh igc course in hyderabad
fire and safety course in hyderabad
lead auditor course in hyderabad
safety professionals courses in hyderabad

venu bharath said...

The post was amazing. It showcases your knowledge on the topic. Thanks for Posting.
Informatica Training in Chennai
Informatica Training center Chennai
Informatica Training Institute in Chennai
Best Informatica Training in Chennai
Informatica Course in Chennai
Informatica Training center in Chennai
Informatica Training chennai
Informatica Training institutes in Chennai

Stephanica said...

Thank you for the nice article here. Really nice and keep update to explore more gaming tips and ideas.

Game Testing Services Companies

Video Game Testing

Subhash Komuravelli said...

Good Information... Thanks for sharing
erp hyderabad
erp companies in hyderabad

ajay prakash said...

Such an excellent and interesting blog, Do post like this more with more information, This was very useful, Thank you.
Airport management courses in chennai
airlines training chennai
airline academy in chennai
Airline Courses in Chennai

venu bharath said...


Amazing Post. It showcases your in-depth knowledge on the topic. Thanks for Posting.
SAS Training in Chennai
SAS Course in Chennai
SAS Training Institutes in Chennai
SAS Institute in Chennai
Drupal Training in Chennai
Drupal Certification Training
Drupal Training
Drupal 8 Training

Jeffrey James said...

I don’t know who you are but certainly you are going to a famous blogger if you aren’t already ?? Cheers!

NFR live stream
Watch NFR live Online
NFR live stream 2018
NFR Live on CBS Sports Network

Buy Growth Flex Online said...

Zoho Partners Australia
Looking for Zoho Partner in Australia? Look no further. We're experts in setting up, integrating and automating Zoho apps in the Zoho One ecosystem.

Riya Raj said...

The blog which you have shared is very useful for us. Thanks for your information.
Software Testing in Coimbatore
Software Testing Training in Coimbatore
Software Testing Course in Coimbatore with placement
Best Software Testing Training Institute in Coimbatore
Software Testing Training Center in Coimbatore

akhilapriya404 said...

Thanks you for sharing the article. The data that you provided in the blog is infromative and effectve. Through you blog I gained so much knowledge. Also check my collection at selenium Online Training

Praylin S said...

Very informative article! I read your article and gathered a lot of information. Thanks for sharing. Looking forward for more posts from you.
Embedded System Course Chennai | Embedded systems Training in Chennai | Embedded Training in Chennai | Embedded course in chennai | Embedded courses in chennai | Embedded Systems Course | Embedded systems courses in chennai | Embedded Training institutes in chennai | Embedded Training institute in chennai | Embedded systems Training | Embedded course | Embedded Training

Millan Ta said...

Thanks for sharing nice information with us. i like your post and all you share with us is uptodate and quite informative, i would like to bookmark the page so i can come here again to read you, as you have done a wonderful job.
Best Cross Platform Mobile Development

Buy Growth Flex Online said...

Software Development Sydney
Finding it hard to find great Software Development Sydney? Look no further for high quality Software Development designed just for your business!

LindaJasmine said...

Awesome Blog. You are an amazing writer. Pls keep on wiriting.
Primavera Training in Chennai
Primavera Course in Chennai
Primavera Software Training in Chennai
Best Primavera Training in Chennai
Primavera p6 Training in Chennai
IELTS coaching in Chennai
IELTS Training in Chennai

Subhash Komuravelli said...

Nice blog, very interesting to read
I have bookmarked this article page as i received good information from this.

ERP Software for Manufacturing Industry in Hyderabad

Cloud Based ERP Software in Hyderabad

ERP Software Companies in Hyderabad

Unknown said...

https://acmarketapk.co.in/
ac market
ac market apk
ac market downloading
download ac market
ac market download

kayal m said...

Very interesting blog!!! I learn lot of information from your post. It is very helpful to me. Thank you for your fantastic post.
RPA Training in Bangalore
Robotics Courses in Bangalore
Automation Courses in Bangalore
RPA Courses in Bangalore
Robotics Classes in Bangalore
Robotics Training in Bangalore

Site Meter