{"id":711,"date":"2011-01-18T07:50:14","date_gmt":"2011-01-17T19:50:14","guid":{"rendered":"https:\/\/www.deltics.co.nz\/blog\/?p=711"},"modified":"2011-01-18T07:50:14","modified_gmt":"2011-01-17T19:50:14","slug":"bring-me-problems-not-solutions","status":"publish","type":"post","link":"https:\/\/www.deltics.co.nz\/blog\/posts\/711\/","title":{"rendered":"Bring Me Problems, Not Solutions"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">2<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span><p>The most important lesson I ever learned in this business&#8230;<\/p>\n<blockquote><p>Be cautious or even suspicious when a specification\/question is provided in the form of a request for a specific technical solution.<\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>When someone presents a request in this form, the first thing you should do is obtain an understanding of the <em>problem<\/em> that the solution is supposed to solve.<\/p>\n<p>Anyone that can ask for a specific technical solution should be able to provide that solution themselves. \u00a0 If they have to ask for help in building the solution, then they are most likely simply not equipped to identify it as the solution in the first place, and so they should be guided back to the problem itself.<\/p>\n<p><em>[Of course, it may be that even with complete understanding the same technical solution is, after all, arrived at &#8211; never rule out blind luck!]<\/em><\/p>\n<p>An example might be someone asking for help in building a flotilla of reed boats.<\/p>\n<ul>\n<li><strong>Option 1: <\/strong>Show them how\/Help them to build a boat out of reeds<\/li>\n<li><strong>Option 2: <\/strong>Ask them why they need such a seemingly odd flotilla of boats &#8230;<\/li>\n<\/ul>\n<p>Take option 2 and imagine you receive the reply:-<\/p>\n<blockquote><p>Because I need to get a few hundred people across a river, and\u00a0where we are there are no trees nearby so I have no wood with\u00a0which to build regular boats.  There are plenty of reeds though,\u00a0and I heard about this guy that built a boat of reeds and so I\u00a0figured I&#8217;d do that but I need someone to tell me how to do it.<\/p><\/blockquote>\n<p>Then ask them where this river is and where they are.  Then imagine that when you learn that where they are, you know that there is already a foot-bridge across the river, just around a bend that they apparently didn&#8217;t know about.  TA DA!<\/p>\n<p>They presented a request for a solution to a problem without fully understanding their own problem domain.  With a proper understanding of the problem domain, the asked for solution is readily identified as misguided &#8211; at best &#8211; and a cheaper, faster, more appropriate solution identified.<\/p>\n<p>In my experience, when a request comes in the form of a specific solution, 9 times out of 10 there is a better, more appropriate solution.  Indeed, quite often it becomes apparent that the asked for solution would not actually have even been a solution at all.<\/p>\n<p>The species of reed at hand may not be suitable for building boats out of, so your flotilla would simply have sunk and your user still would not have made it across the river.<\/p>\n<p>To add insult to injury, you would most likely have been blamed for not building the boats properly!<\/p>\n<p>Understand the problem &#8211; only then can you provide the solution.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">2<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span> The most important lesson I ever learned in this business&#8230; Be cautious or even suspicious when a specification\/question is provided in the form of a request for a specific technical solution.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[4,1],"tags":[292,129,130],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-bt","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":633,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/633\/","url_meta":{"origin":711,"position":0},"title":"As If One Blog Wasn&#8217;t Enough","date":"25 May 2010","format":false,"excerpt":"Today is a special day indeed, marking as it does my first contribution to the blog of the product I work on, announcing a technical overview of the forthcoming new version of Flow, the middleware, EDI and integration solution developed using Delphi by us at Flow Software,\u00a0here in New Zealand.","rel":"","context":"In &quot;Blogging&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":147,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/147\/","url_meta":{"origin":711,"position":1},"title":"MultiCast Events &#8211; Video #2","date":"09 Aug 2008","format":false,"excerpt":"At the end of my last post I described a problem that arises if an object adds handlers to an event and is then destroyed without having removed those handlers.\u00a0 This video demonstrates that problem and also shows a solution provided by the multicast events framework itself. The details of\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1207,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1207\/","url_meta":{"origin":711,"position":2},"title":"Adventures in Syntax: Something Old, Something New etc&#8230;","date":"20 Sep 2012","format":false,"excerpt":"As the post title says, this will be a brief detour through some features of the Pascal language and a presentation of some (theoretical) alternatives that could have been introduced instead. That is, some are real but little known syntax, others are what I think might be preferable to the\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":725,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/725\/","url_meta":{"origin":711,"position":3},"title":"FinalBuilder and Delphi: 64-Bit Registry Gotcha","date":"02 Aug 2011","format":false,"excerpt":"Just a short post to share something I learned the hard way today when moving a FinalBuilder installation from a 32-bit Windows server to a shiny new 64-bit Windows 2008 server on our even shinier new HyperV platform: \u00a0The 64-bit registry can catch you out. The registry on 64-bit Windows\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2219,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2219\/","url_meta":{"origin":711,"position":4},"title":"&#8220;The Operation Could Not Be Completed&#8221; &#8211; Solved!","date":"06 Mar 2014","format":false,"excerpt":"For a while now I had been frustrated by Visual Studio's sudden decision to be un-cooperative when saving new projects, but have finally solved the problem! Or at least, that manifestation of the problem that was afflicting me. The issue I was experiencing was baffling. Following these steps: Create new\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2118,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2118\/","url_meta":{"origin":711,"position":5},"title":"Creation Stories","date":"07 Nov 2013","format":false,"excerpt":"In the beginning there was The Word a HWND. But not all gifts of creation can be relied upon, as I just learned. Or rather, remembered. As regular readers will know, I am currently polishing up my Smoketest framework for release (don't worry, this post won't take long and then\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.deltics.co.nz\/blog\/wp-content\/uploads\/Very-Pretty.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/711"}],"collection":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/comments?post=711"}],"version-history":[{"count":4,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/711\/revisions"}],"predecessor-version":[{"id":715,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/711\/revisions\/715"}],"wp:attachment":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/media?parent=711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/categories?post=711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/tags?post=711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}