{"id":107,"date":"2004-10-29T23:21:10","date_gmt":"2004-10-29T23:21:10","guid":{"rendered":"http:\/\/localhost:8000\/?p=107"},"modified":"2004-10-29T23:21:10","modified_gmt":"2004-10-29T23:21:10","slug":"all-you-have-to-do-is","status":"publish","type":"post","link":"https:\/\/blog.gwadej.org\/programmer-musings\/2004\/10\/all-you-have-to-do-is\/","title":{"rendered":"&#8220;All you have to do is&#8230;&#8221;"},"content":{"rendered":"<p>What is it about the programming field that makes everyone believe that it is easy? I can&#8217;t count the number of times I have had someone tell me:<\/p>\n<ul>\n<li>All you have to do is&#8230;<\/li>\n<li>How hard can it be? You just&#8230;<\/li>\n<li>It won&#8217;t take <em>that<\/em> long. It&#8217;s just a little program.<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>Most of these people have never written a line of code in any language. Many of them only hve a vague idea of what a programmer does.<\/p>\n<p>I sometimes wonder if other professionals get this. When a patient disagrees with a doctor&#8217;s opinion, he may get a second opinion. I doubt he would say <q>All you have to do is a little surgery, how hard can that be?<\/q> When someone is hiring a company to build a house, they probably don&#8217;t tell the contractor <q>Oh it couldn&#8217;t possibly take that long. After all, I&#8217;ve told you everything you need to know. Just go build it.<\/q><\/p>\n<p>When dealing with most professionals, you may not agree with their decisions, and you may go with a second opinion or, even a third; but you normally make the assumption that they know their field. They might not have all of the particulars nailed down in their first estimate. You don&#8217;t expect them to change their estimates by a factor of ten just because you want it.<\/p>\n<p>But in software development, this seems to be the norm. Customers, salesmen, and even some managers expect to be able to override a programmer&#8217;s professional opinion on a whim. Some might say that our estimates are more fluid because no one understands software as well as, say, bridge building. I would point out that people rarely overrule a doctor&#8217;s professional opinion, even though I&#8217;ve had my share of diagnoses that weren&#8217;t any better than a wild guess.<\/p>\n<p>In addition to the professional aspects of this problem, it spills over into everyday conversation. In my experience, people always seem to assume that what I do for a living is easy. They come up with an idea that will make them big bucks and I should be able to make it happen in a few days for less than a hundred dollars. Many of them seem offended when I don&#8217;t volunteer to give up my weekends and evenings to make their dream a reality.<\/p>\n<p>Even professional customers (and employers) want to be able to negotiate time estimates and costs. It seems they believe that their five minutes of thought means more than the years I have spent working in the field.<\/p>\n<p>I know others have had this experience, and I would like to know: does anyone have a good technique for explaining this idea to a potential customer. How do we make people understand that the programs we write are real, even though you can&#8217;t touch them? How do we get across the mind-boggling complexity of even relatively <em>simple<\/em> problems?<\/p>\n<p>Maybe it&#8217;s just that the field is so new that people don&#8217;t have a grasp of what it takes. If I told you it would take me a year to design and build a new car from scratch. No one would try to convince me that it should only take 6 months. (Although, they might suggest I was nuts and it would take more like two or three.) So, why should a program with even more individual moving parts seem trivial.<\/p>\n<p>It does tend to make one think.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is it about the programming field that makes everyone believe that it is easy? I can&#8217;t count the number of times I have had someone tell me: All you have to do is&#8230; How hard can it be? You just&#8230; It won&#8217;t take that long. It&#8217;s just a little program. etc. Most of these\u2026 <span class=\"read-more\"><a href=\"https:\/\/blog.gwadej.org\/programmer-musings\/2004\/10\/all-you-have-to-do-is\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[44,71,109,336],"_links":{"self":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/107"}],"collection":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/comments?post=107"}],"version-history":[{"count":0,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/posts\/107\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/media?parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/categories?post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gwadej.org\/programmer-musings\/wp-json\/wp\/v2\/tags?post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}