{"id":23,"date":"2007-10-29T22:28:02","date_gmt":"2007-10-30T03:28:02","guid":{"rendered":"http:\/\/steve.vinoski.net\/blog\/2007\/10\/29\/theres-no-hope-for-it\/"},"modified":"2007-10-30T14:57:23","modified_gmt":"2007-10-30T19:57:23","slug":"theres-no-hope-for-it","status":"publish","type":"post","link":"https:\/\/steve.vinoski.net\/blog\/2007\/10\/29\/theres-no-hope-for-it\/","title":{"rendered":"There&#8217;s No Hope For IT"},"content":{"rendered":"<p>When you read <a href=\"http:\/\/service-architecture.blogspot.com\/2007\/05\/engineering-v-art-challenge-of-masses-v.html\">stuff like this<\/a>, you can&#8217;t help but feel that IT is, without a doubt, doomed.<\/p>\n<p>The gist of the posting is<\/p>\n<ul>\n<li>REST is too hard for the average developer<\/li>\n<li>Dynamic languages are too hard for the average developer<\/li>\n<\/ul>\n<p>Along these same lines, a couple of folks told me in person that my recent blog entries about REST, dynamic languages, and ESBs were misguided because today&#8217;s enterprises are interested only in approaches, frameworks and platforms that allow average developers to produce quality systems.<\/p>\n<p>This all strikes me as nothing but wrong-headed thinking.<\/p>\n<p>On the dynamic language front, the worst code I have seen in my career has always, always, <em>always<\/em> been in compiled imperative languages, most often Java and C++. I would much rather let an average developer loose with a dynamic language, because the surface area is smaller, there&#8217;s a lot less rope available for self-hanging, and if they&#8217;re going to fail, they&#8217;ll fail way faster and thus allow much more time for recovery. The fact that dynamic language programs are usually smaller than their compiled counterparts means that they&#8217;re easier to read and review, and statistically, they&#8217;re likely to have fewer bugs. Furthermore, counting on the static language compiler to save you is simply wishful thinking. To paraphrase <a href=\"http:\/\/www.pluralsight.com\/blogs\/tewald\/\">Tim Ewald<\/a> from a conversation he and I had during lunch a week or so ago, compilation really amounts to just another unit test.<\/p>\n<p>On the REST front, if you\u2019re claiming that it\u2019s harder than the alternatives, to me that\u2019s just a sign that you don\u2019t understand it. Is REST simple? No, but neither is SOA. However, unlike SOA, which is fairly wishy-washy, noncommittal, and loose, REST\u2019s constraints provide real, actual guidance for developers, and those same constraints also provide opportunities for significant flexibility, extensibility, performance, scalability, and <a href=\"http:\/\/www.stucharlton.com\/blog\/archives\/000165.html\">serendipity<\/a>. SOA\u2019s contracts come with no rules or constraints, and thus can easily result in a system that\u2019s extremely brittle, tightly-coupled, and virtually impossible to upgrade. SOA itself isn\u2019t inherently bad, as it\u2019s certainly a step above the &#8220;every application for itself&#8221; mode of development that\u2019s so widely practiced. Unlike REST, though, SOA doesn\u2019t go nearly far enough to provide real, useful guidance to the poor developer who has to actually write the stuff, make it work, and keep it running.<\/p>\n<p>And finally, regarding the overall notion that enterprises cater only to average developers, I\u2019m not sure I agree. In my <a href=\"http:\/\/blogs.iona.com\/vinoski\/\">former life<\/a> I met countless enterprise developers who were extremely sharp. While I have no doubt that there are numerous bean-counting CIOs and middle IT managers out there who think they can build high-quality IT systems with low-quality developers, at the end of the day, businesses generally know better than to think they can get something for nothing. Or to put it another way, they know they get what they pay for, and if they pay only for average developers or worse, they\u2019ll get only average software and average systems, or worse. That\u2019s a no-brainer.<\/p>\n<p>If you\u2019re in a position of technical leadership or project management and you\u2019re asked to come in ahead of schedule and under budget, my advice is that you\u2019re generally more likely to succeed with REST and dynamic languages than with the alternatives because their inherent constraints allow for better focus. Also, if you find yourself in such a position, you owe it to yourself and your team to continually lobby your superiors to help them understand the very real costs of their budgetary stinginess.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you read stuff like this, you can&#8217;t help but feel that IT is, without a doubt, doomed. The gist of the posting is REST is too hard for the average developer Dynamic languages are too hard for the average developer Along these same lines, a couple of folks told me in person that my [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,6,10,7],"tags":[],"class_list":["post-23","post","type-post","status-publish","format-standard","hentry","category-dynamic-languages","category-enterprise","category-rest","category-services"],"_links":{"self":[{"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/posts\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":0,"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/posts\/23\/revisions"}],"wp:attachment":[{"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/media?parent=23"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/categories?post=23"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/steve.vinoski.net\/blog\/wp-json\/wp\/v2\/tags?post=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}