{"id":1447,"date":"2012-02-09T22:59:24","date_gmt":"2012-02-10T05:59:24","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=1447"},"modified":"2016-12-06T06:34:36","modified_gmt":"2016-12-06T11:34:36","slug":"the-development-pendulum","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/","title":{"rendered":"The Development Pendulum"},"content":{"rendered":"<p>I\u2019ve noticed a rather interesting thing about best practices and trends in software development, they tend to oscillate from one extreme to another over time.\\n\\nSo many of the things that are currently trendy or considered \u201cgood\u201d are things that a few years back were considered \u201cbad\u201d and even further back were \u201cgood.\u201d\\n\\nThis cycle and rule seems to repeat over and over again and is prevalent in almost all areas of software development.\\n\\n<\/p>\n<h2>It has three dimensions<\/h2>\n<p>\\n\\nDon\u2019t misunderstand my point though, we are advancing.\u00a0 We really have to look at this from a 3 dimensional perspective.\\n\\nHave you ever seen one of those toys where you rock side to side in order to go forward?\\n\\n<a href=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0; padding-right: 0; display: inline; padding-top: 0; border: 0;\" title=\"snakeboard\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg\" alt=\"snakeboard\" width=\"489\" height=\"326\" border=\"0\" \/><\/a>\\n\\nSoftware development is doing this same thing in many areas.\u00a0 We keep going back and forth, yet we are going forward.\\n\\nLet&#8217;s look at some examples and then I\u2019ll tell you why this is important.\\n\\n<\/p>\n<h2>JavaScript!<\/h2>\n<p>\\n\\nIs JavaScript good or bad?\\n\\nDepends on who you ask, but it is definitely popular right now.\\n\\nIf we go back about 5 years or so, you\u2019ll get a totally different answer.\u00a0 Most people would suggest to avoid JavaScript.\\n\\nNow, JavaScript itself hasn\u2019t changed very much in this timespan, <strong>but what has changed is how we use it<\/strong>.\\n\\nWe learned some tricks and the world changed around us.\u00a0 We figured out how to solve the biggest problem of all for JavaScript\u2026\\n\\nWorking with the DOM!\\n\\n<a href=\"http:\/\/jquery.com\">JQuery<\/a> made it extremely easy to manipulate the DOM, the pain was removed.\\n\\nYet, new pains emerge, hence <a href=\"http:\/\/wiht.link\/backbonejs-intro\">backbone.js<\/a> is born.\\n\\n<\/p>\n<h2>Thick client or the web?<\/h2>\n<p>\\n\\nTake a look at how this has changed back and forth so many times.\u00a0 First the web was a toy and real apps were installed on your machine.\\n\\nThen it became very uncool to develop a desktop app, everyone was developing web apps.\\n\\nBut soon we ran into a little problem \u2013 those darn page refreshes.\u00a0 Gosh!\\n\\nSo what did we do?\u00a0 We sort of made the browser a thick client with AJAX.\\n\\nThat created so much of a mess that we really needed clean separation of views from our models and our logic (at least on the .NET side), so we went back to rendering the whole view on the server and sending it down to the client with MVC.\u00a0 (Yes, you could argue this point, but just pretend like you agree and bear with me.)\\n\\nThen we decided that we needed to start moving this stuff back to the client so we could do much more cool things with our pages. We started pumping JavaScript into the pages and ended up creating thick clients running in browsers running on JavaScript and HTML5.\\n\\nAnd now we are seeing traditional thick clients again with iOS and Android devices and even those will probably eventually migrate to the web.\\n\\n<\/p>\n<h2>Simple data vs descriptive data<\/h2>\n<p>\\n\\nCheck out this sine wave!\\n\\n<a href=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/sinewave.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0; padding-right: 0; display: inline; padding-top: 0; border: 0;\" title=\"SineWave\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/sinewave_thumb.png\" alt=\"SineWave\" width=\"479\" height=\"304\" border=\"0\" \/><\/a>\\n\\nFirst we had fixed-length records where we specified the length of each column and exactly what data went there.\\n\\nThen we moved over to CSV, where we had loose data separated by commas.\\n\\nThen we thought XML was all the rage and beat people up who didn\u2019t define XSDs, because <strong>data without definition is just noise you know!<\/strong>\\n\\nNow we are sending around very loosely structured JSON objects and throw-up whenever we see angle brackets.\\n\\n<\/p>\n<h2>So many other examples<\/h2>\n<p>\\n\\nTake a look at this list:\\n\\n<\/p>\n<ul>\\n    <\/p>\n<li>Static vs dynamic languages<\/li>\n<p>\\n    <\/p>\n<li>Web services ease of use vs unambiguity (SOAP and REST)<\/li>\n<p>\\n    <\/p>\n<li>Design upfront vs Agile (remember when we just wrote code and deployed it, it was kind of like Agile, but different)<\/li>\n<p>\\n    <\/p>\n<li>Source control, constant collaboration vs branching<\/li>\n<p>\\n    <\/p>\n<li>Testing and TDD<\/li>\n<p>\\n    <\/p>\n<li>Databases, stored procs vs inline SQL<\/li>\n<p>\\n    <\/p>\n<li>&lt;% %&gt; vs Controls<\/li>\n<p>\\n    <\/p>\n<li>\u2026<\/li>\n<p>\\n<\/ul>\n<p>\\n\\nIt goes on forever\\n\\n<\/p>\n<h2>So why is this important?<\/h2>\n<p>\\n\\nIt is not just important, as a developer, it is <strong>CRITICAL<\/strong> for you to understand.\\n\\nWhy?\\n\\nBecause whatever happens to be \u201ccool\u201d right now, whatever happens to be the \u201cright\u201d way to do things right now, will change.\\n\\n<strong>Not only will it change, but it will go the complete opposite direction.<\/strong>\\n\\nIt won\u2019t look exactly the same as it did before \u2013 we will learn from our previous mistakes \u2013 but it will be the same concepts.\\n\\nAdvancement follows this sine wave pattern.\u00a0 <strong>Don\u2019t try and fight it so hard.<\/strong>\\n\\nYou have to be balanced.\u00a0 You have to be able to understand the merits, strengths and weaknesses of both sides of a technology or best practice choice in development.\\n\\nYou have to understand why TDD improved our code until it led us into overuse of IoC and pushed C# and Java developers to the freedom of dynamic languages like Ruby.\\n\\nYou have to understand that eventually the course will correct itself yet again and head back to the direction of the new static language or even an old static language that will be resurrected.\\n\\n<\/p>\n<h2>This is how you will grow<\/h2>\n<p>\\n\\nIt is also very important to realize that this is exactly how you will grow.\\n\\nJust as the technological world around you is in a constant forward progressing pendulum swing, so are you, at a different pace, to a different beat.\\n\\nI know that through my personal development journey, I have switched sides on a topic countless times.\\n\\nYou might call me a \u201cwaffler,\u201d but I call it progress.\\n\\nLife is a game of overshooting and adjusting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve noticed a rather interesting thing about best practices and trends in software development, they tend to oscillate from one extreme to another over time.\\n\\nSo many of the things that are currently trendy or considered \u201cgood\u201d are things that a few years back were considered \u201cbad\u201d and even further back were \u201cgood.\u201d\\n\\nThis cycle and rule&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[2185,14560],"tags":[],"class_list":["post-1447","post","type-post","status-publish","format-standard","hentry","category-best-practices","category-career"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Development Pendulum - Simple Programmer<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/the-development-pendulum\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Development Pendulum - Simple Programmer\" \/>\n<meta property=\"og:description\" content=\"I\u2019ve noticed a rather interesting thing about best practices and trends in software development, they tend to oscillate from one extreme to another over time.nnSo many of the things that are currently trendy or considered \u201cgood\u201d are things that a few years back were considered \u201cbad\u201d and even further back were \u201cgood.\u201dnnThis cycle and rule...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/the-development-pendulum\/\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-10T05:59:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-12-06T11:34:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg\" \/>\n<meta name=\"author\" content=\"John Sonmez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Sonmez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/\"},\"author\":{\"name\":\"John Sonmez\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"headline\":\"The Development Pendulum\",\"datePublished\":\"2012-02-10T05:59:24+00:00\",\"dateModified\":\"2016-12-06T11:34:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/\"},\"wordCount\":969,\"commentCount\":11,\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2012\\\/02\\\/snakeboard_thumb.jpg\",\"articleSection\":[\"Best Practices\",\"Career\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/\",\"name\":\"The Development Pendulum - Simple Programmer\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2012\\\/02\\\/snakeboard_thumb.jpg\",\"datePublished\":\"2012-02-10T05:59:24+00:00\",\"dateModified\":\"2016-12-06T11:34:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#primaryimage\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2012\\\/02\\\/snakeboard_thumb.jpg\",\"contentUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2012\\\/02\\\/snakeboard_thumb.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/the-development-pendulum\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Development Pendulum\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\",\"name\":\"John Sonmez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"caption\":\"John Sonmez\"},\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/jsonmez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Development Pendulum - Simple Programmer","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/","og_locale":"en_US","og_type":"article","og_title":"The Development Pendulum - Simple Programmer","og_description":"I\u2019ve noticed a rather interesting thing about best practices and trends in software development, they tend to oscillate from one extreme to another over time.nnSo many of the things that are currently trendy or considered \u201cgood\u201d are things that a few years back were considered \u201cbad\u201d and even further back were \u201cgood.\u201dnnThis cycle and rule...","og_url":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/","og_site_name":"Simple Programmer","article_published_time":"2012-02-10T05:59:24+00:00","article_modified_time":"2016-12-06T11:34:36+00:00","og_image":[{"url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg","type":"","width":"","height":""}],"author":"John Sonmez","twitter_card":"summary_large_image","twitter_misc":{"Written by":"John Sonmez","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/"},"author":{"name":"John Sonmez","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"headline":"The Development Pendulum","datePublished":"2012-02-10T05:59:24+00:00","dateModified":"2016-12-06T11:34:36+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/"},"wordCount":969,"commentCount":11,"image":{"@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg","articleSection":["Best Practices","Career"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/the-development-pendulum\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/","url":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/","name":"The Development Pendulum - Simple Programmer","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#primaryimage"},"image":{"@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg","datePublished":"2012-02-10T05:59:24+00:00","dateModified":"2016-12-06T11:34:36+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/the-development-pendulum\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#primaryimage","url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg","contentUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2012\/02\/snakeboard_thumb.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/the-development-pendulum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"The Development Pendulum"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67","name":"John Sonmez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","caption":"John Sonmez"},"url":"https:\/\/simpleprogrammer.com\/author\/jsonmez\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/1447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=1447"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/1447\/revisions"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=1447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=1447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=1447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}