{"id":170,"date":"2010-08-04T11:55:42","date_gmt":"2010-08-04T18:55:42","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=170"},"modified":"2010-08-04T11:56:24","modified_gmt":"2010-08-04T18:56:24","slug":"the-broken-bullet-anti-pattern","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/the-broken-bullet-anti-pattern\/","title":{"rendered":"The broken bullet anti-pattern"},"content":{"rendered":"<p>I\u2019ve been meaning to write about this particular <a href=\"http:\/\/en.wikipedia.org\/wiki\/Anti-pattern\" target=\"_blank\">anti-pattern<\/a> for a while now, as I think it contributes far too much to the lack of progress in advancing software testing. Up until five minutes ago, I called this the <em>anti-silver bullet theory, <\/em>in reference to Fred Brooks 1986 paper, <a href=\"http:\/\/en.wikipedia.org\/wiki\/No_Silver_Bullet\" target=\"_blank\"><em>No Silver Bullet<\/em><\/a><em>\u00a0<\/em>as much as the Silver Bullet idiom in general<em>. \u201c<\/em>Silver Bullets\u201d refer to solutions that are extremely (or completely) effective for a given situation (like killing werewolves). In software, there are no silver bullets \u2013 there\u2019s no practice, tool, language, approach, technique, or whatever that will solve all of your problems for you (and if some tool vendor tells you differently, don\u2019t believe them!)<\/p>\n<p>The broken bullet is the backwards version of the silver bullet. In the broken bullet anti-pattern, people dismiss ideas, approaches, etc. just because they <em>are not a silver bullet<\/em>. I caught myself applying the broken bullet a few weeks ago in a discussion about GUI automation \u2013 I don\u2019t like most GUI automation because it\u2019s fragile and rarely achieves enough return to justify the investment and maintenance, but I made the mistake of dismissing GUI automation as a solution <em>just because I knew it didn\u2019t work everywhere, and it was easy to get wrong<\/em> \u2013 even though it could have worked well in this particular situation. Fortunately I caught myself before I made too much of a fool of myself.<\/p>\n<p>Unfortunately, many others seem to embrace this anti-pattern regularly. The conversations usually go something like this:<\/p>\n<blockquote><p><strong>Tester<\/strong>: hey everyone, I\u2019m checking out floober as a test approach \u2013 seems like it will help me<\/p>\n<p><strong>Broken Bullet<\/strong>: don\u2019t waste your time \u2013 floober is a mostly a myth and doesn\u2019t work unless you use your brain. Here, I wrote a paper\u2026<\/p>\n<p><strong>Tester<\/strong>: thanks for the help \u2013 I\u2019ll go back to what I was doing before<\/p>\n<p><strong>Broken Bullet<\/strong>: no problem\u00a0 &#8211; glad to keep you on the right track<\/p><\/blockquote>\n<p>Sometimes it\u2019s more proactive. I can\u2019t go a week without seeing an article or blog post saying \u201cDon\u2019t do X\u201d \u2013 \u201chere are all the ways it can go poorly for you and ruin your product \/ team \/ company \/ life. Stay away and don\u2019t even think about X\u201d<\/p>\n<p>The problem is, that X (and floober for that matter) <em>do<\/em> work (if used carefully), and may be good solutions for some teams (and likely great solutions for others) \u2013 but will likely never get the attention they deserve because of broken bullets.<\/p>\n<p>My call to action (if you care) is this: If you believe in No Silver Bullets- that there are no magic solutions to solve your software challenges, then you should also believe that there are no (ok, <span style=\"text-decoration: underline;\">few<\/span>) universally <em>bad<\/em> practices. Some practices are indeed much easier to get wrong, but that should only scare you \u2013 not stop you.<\/p>\n<p>And the next time you see someone dismiss something because it <em>can<\/em> fail, tell them to take their broken bullets and leave you alone.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve been meaning to write about this particular anti-pattern for a while now, as I think it contributes far too much to the lack of progress in advancing software testing. Up until five minutes ago, I called this the anti-silver bullet theory, in reference to Fred Brooks 1986 paper, No Silver Bullet\u00a0as much as the&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-170","post","type-post","status-publish","format-standard","hentry","category-allposts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/comments?post=170"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/170\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}