{"id":31823,"date":"2006-03-22T11:00:24","date_gmt":"2006-03-22T11:00:24","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2006\/03\/22\/solving-one-problem-by-creating-a-bigger-problem\/"},"modified":"2006-03-22T11:00:24","modified_gmt":"2006-03-22T11:00:24","slug":"solving-one-problem-by-creating-a-bigger-problem","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20060322-24\/?p=31823","title":{"rendered":"Solving one problem by creating a bigger problem"},"content":{"rendered":"<p>Often, people will not even realize that their solution to a problem merely replaces it with another problem. The quip attributed to Jamie Zawinski captures the sentiment:<\/p>\n<blockquote class=\"q\"><p> Some people, when confronted with a problem, think  &#8220;I know, I&#8217;ll use  regular expressions.&#8221;  Now they have two problems. <\/p><\/blockquote>\n<p> For example, in response to &#8220;How do I write a batch file that&#8230;&#8221; some people will say, &#8220;First, install &lt;perl|bash|monad|&#8230;&gt;&#8221;. This doesn&#8217;t actually solve the problem; it merely replaces it with a different problem.\n In particular, if the solution begins with &#8220;First, install&#8230;&#8221; you&#8217;ve pretty much lost out of the gate. Solving a five-minute problem by taking a half hour to download and install a program is a net loss. In a corporate environment, adding a program to a deployment is extraordinarily expensive. You have to work with your company&#8217;s legal team to make sure the licensing terms for the new program are acceptable and do not create undue risk from a legal standpoint. What is your plan of action if the new program stops working, and your company starts losing tens of thousands of dollars a day? You have to do interoperability testing to make sure the new program doesn&#8217;t conflict with the other programs in the deployment. (In the non-corporate case, you still run the risk that the new program will conflict with one of your existing programs.)\n Second, many of these &#8220;solutions&#8221; require that you abandon your partial solution so far and rewrite it in the new model. If you&#8217;ve invested years in tweaking a batch file and you just need one more thing to get that new feature working, and somebody says, &#8220;Oh, what you need to do is throw away you batch file and <a href=\"http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2005\/09\/09\/462906.aspx#463156\"> start over in this new language<\/a>,&#8221; you&#8217;re unlikely to take up that suggestion.<\/p>\n<p> So be careful when you suggest a solution that has a high activation energy. Sure, something could be taken care of by a one-line perl script, but getting perl onto the machine is hardly a one-line endeavor. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Often, people will not even realize that their solution to a problem merely replaces it with another problem. The quip attributed to Jamie Zawinski captures the sentiment: Some people, when confronted with a problem, think &#8220;I know, I&#8217;ll use regular expressions.&#8221; Now they have two problems. For example, in response to &#8220;How do I write [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-31823","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>Often, people will not even realize that their solution to a problem merely replaces it with another problem. The quip attributed to Jamie Zawinski captures the sentiment: Some people, when confronted with a problem, think &#8220;I know, I&#8217;ll use regular expressions.&#8221; Now they have two problems. For example, in response to &#8220;How do I write [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/31823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=31823"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/31823\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=31823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=31823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=31823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}