{"id":186,"date":"2002-01-24T00:03:07","date_gmt":"2002-01-24T00:03:07","guid":{"rendered":"https:\/\/www.joelonsoftware.com\/?p=186"},"modified":"2002-01-24T00:03:07","modified_gmt":"2002-01-24T00:03:07","slug":"20020124","status":"publish","type":"post","link":"https:\/\/www.joelonsoftware.com\/2002\/01\/24\/20020124\/","title":{"rendered":"2002\/01\/24"},"content":{"rendered":"<p><P><STRONG>Rub-a-dub-dub<\/STRONG><\/P> <P>One reason people are tempted to rewrite their entire code base from scratch is that the original code base wasn&#8217;t designed for what it&#8217;s doing. It was designed as a prototype, an experiment, a learning exercise, a way to go from zero to IPO in nine months, or a one-off demo. And now it has grown into a big mess that&#8217;s fragile and impossible to add code to, and everybody&#8217;s whiny, and the old programmers quit in despair and the new ones that are brought in can&#8217;t make head or tail of the code so they somehow convince management to give up and start over while Microsoft takes over their business. <A href=\"https:\/\/www.joelonsoftware.com\/articles\/fog0000000348.html\">Today let me tell you a story about what they could have done instead.<\/A><\/P> <P><STRONG>New Web Shop for Fog Creek Software<\/STRONG><\/P> <P><A href=\"https:\/\/shop.fogcreek.com\"><IMG data-recalc-dims=\"1\" height=\"90\" alt=\"Fog Creek Store\" hspace=4 src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2002\/01\/online-store.jpg?resize=108%2C90&#038;ssl=1\" width=\"108\" align=right border=0><\/A>We got sick of paying the 13.9% transaction charge that&nbsp;<A href=\"http:\/\/discuss.fogcreek.com\/joelonsoftware\/default.asp?cmd=show&amp;ixPost=2211\">Digibuy<\/A> is charging us for every software download, and we needed more control over our commerce server so that we could run a proper affiliate program. So we got our own merchant account and rolled our own software for it. It&#8217;s been fun, and the transaction cost should be down to about 2.5%.<\/P> <P><STRONG>Patching Code?<\/STRONG><\/P> <P>I wanted to use <A href=\"http:\/\/www.pocketsoft.com\/products.html\">.RTPatch<\/A> for the upcoming CityDesk service pack, but it costs $5000 for one license. Yipes. That&#8217;s a lot to pay for what computer scientists call <A href=\"http:\/\/citeseer.nj.nec.com\/context\/11464\/0\">[Aho75]<\/A>. Can anybody <A href=\"http:\/\/discuss.fogcreek.com\/joelonsoftware\/default.asp?cmd=show&amp;ixPost=2931&amp;ixReplies=9\">suggest an alternative<\/A>?<\/P><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rub-a-dub-dub One reason people are tempted to rewrite their entire code base from scratch is that the original code base wasn&#8217;t designed for what it&#8217;s doing. It&hellip; <span class=\"read-more\"><a class=\"more-link\" href=\"https:\/\/www.joelonsoftware.com\/2002\/01\/24\/20020124\/\" rel=\"bookmark\">Read more <span class=\"screen-reader-text\">&#8220;2002\/01\/24&#8221;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[2],"tags":[],"class_list":["post-186","post","type-post","status-publish","format-standard","hentry","category-news"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s83KNI-20020124","_links":{"self":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/comments?post=186"}],"version-history":[{"count":0,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/186\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/media?parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/categories?post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/tags?post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}