{"id":3465,"date":"2011-12-15T09:56:00","date_gmt":"2011-12-15T09:56:00","guid":{"rendered":"https:\/\/test.simple-talk.com\/uncategorized\/what-counts-for-a-dba-practicality\/"},"modified":"2016-07-28T10:50:40","modified_gmt":"2016-07-28T10:50:40","slug":"what-counts-for-a-dba-practicality","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/what-counts-for-a-dba-practicality\/","title":{"rendered":"What Counts For a DBA: Practicality"},"content":{"rendered":"<p class=\"STHeading1\">As a data architect, and writer on the same subject, I am completely entrenched in learning and applying the discipline of normalization. When I set my course down the road of great database design, my motto is &#8220;<i>Fifth Normal Form or bust<\/i>&#8220;, even if it takes months to finish the design for just a few tables (and, of course, to make sure every table and column is meticulously named). Not much gives me greater pleasure than the beauty of a database that has been honed to a high degree of normalized perfection and that, to the amazement of the many detractors and doubters, also performs magnificently.<\/p>\n<p class=\"MsoNormal\">If this sounds like one of Lewis Carroll&#8217;s stories, there is good reason for it. The reality is that I don&#8217;t live in Wonderland, and rarely get time to design anything, much less everything, in meticulous detail. My average project tends to fall into one of two categories<\/p>\n<ul>\n<li>\n<div class=\"STBullet1CxSpFirst\"><span class=\"STBold\"><i><strong>The Surprise Project<\/strong><\/i><\/span> &#8211; about 30 seconds after you fall asleep for the night, a mobile device starts dancing to that catchy ringtone that was annoying <a href=\"https:\/\/www.simple-talk.com\/community\/blogs\/drsql\/archive\/2011\/04\/01\/101030.aspx\">10 years ago<\/a>. Something has failed and it is time to fix it. As long as the problem wasn&#8217;t caused by you, this can be the most rewarding times of your career, as you put on your Superman Underoos and save the day.<\/div>\n<\/li>\n<li>\n<div class=\"STBullet1CxSpLast\"><b><i>The Incredibly Urgent Project<\/i><\/b> &#8211; after months of furtive meetings between various marketing and project managers, over the need for some innovative new campaign, advertising scheme, or product line, a decision has finally been made to go ahead. And they need the project to start&#8230;<i>immediately<\/i>! And the delivery date is&#8230;<i>as soon as possible<\/i>!<\/div>\n<\/li>\n<\/ul>\n<p class=\"MsoNormal\">My normal workday, as a result, most closely resembles a typical episode of the TV show, Junkyard Wars&#8230;&#8221;<em>Contestants, you have just 10 hours to build a fully-working dragster from the contents of this junkyard.&#8221;<\/em> My favorite team welded together an old motorcycle and a rusty golf cart and went flying down the track. Their solution would never work long enough to survive the complete drag racing season, but it survived 2 trips down the eighth mile. They knew for how long their solution would be used, but most software built like this, with a planned expiration date, usually last years longer than expected.<\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Many project are like this; get it done quick. The best theoretical solutions need not be posited; your deep and hard-won knowledge of advanced &#8220;internals&#8221; is of little good to you here. Practical is what is required. When a manager says &#8220;as soon as possible&#8221;, they don&#8217;t mean &#8220;<i>as soon as you can reasonably arrive at the optimum database design and then build a proper solution with stringent application of sound programming principles<\/i>&#8220;. They mean &#8220;<i>why haven&#8217;t you got something to show me, already?<\/i>&#8220;<\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">The oft-heard battle cry from management is that &#8220;Better is the enemy of good enough&#8221;; true, but in the wrong hands, very dangerous. Too often, the definition of &#8220;good enough&#8221; is taken to mean something works to the point that the manager can check a box, no matter the implications to the future user or maintenance workers.<\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Does this mean that all of your <a href=\"https:\/\/www.simple-talk.com\/community\/blogs\/drsql\/archive\/2011\/07\/12\/102328.aspx\">training<\/a>, all of your dedication to doing your job the right way, is useless? Not at all; in fact, it is going to be more necessary than ever. Just because your solutions need to be devised with practicality and timeliness as a priority, it doesn&#8217;t mean that you can actually do things poorly or technical debt will pile up like dirty clothes in a dorm room. It does mean, however, that you need to stop aiming for perfection and start shooting for &#8220;good enough&#8221;, but where good enough implies a practical solution that adopts at least the basic software engineering principles, and a solution that you are comfortable releasing to the users, even in the knowledge that an even better solution was just out of reach.<\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Almost every solution that is created according to a definition of practical that means &#8220;delivered tomorrow&#8221; is doomed to be a <a href=\"https:\/\/www.simple-talk.com\/community\/blogs\/drsql\/archive\/2011\/04\/16\/101261.aspx\">lesson<\/a> for the next project; when practical means &#8220;as good as practically possible&#8221;, everything will usually be alright.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a data architect, and writer on the same subject, I am completely entrenched in learning and applying the discipline of normalization. When I set my course down the road of great database design, my motto is &#8220;Fifth Normal Form or bust&#8220;, even if it takes months to finish the design for just a few&#8230;&hellip;<\/p>\n","protected":false},"author":56085,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"coauthors":[],"class_list":["post-3465","post","type-post","status-publish","format-standard","hentry","category-blogs"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/3465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/56085"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=3465"}],"version-history":[{"count":2,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/3465\/revisions"}],"predecessor-version":[{"id":42111,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/3465\/revisions\/42111"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=3465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=3465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=3465"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=3465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}