{"id":8911,"date":"2015-02-24T10:19:37","date_gmt":"2015-02-24T16:19:37","guid":{"rendered":"http:\/\/www.mrc-productivity.com\/blog\/?p=8911"},"modified":"2023-05-04T16:41:38","modified_gmt":"2023-05-04T21:41:38","slug":"how-to-create-applications-that-last-20-years","status":"publish","type":"post","link":"https:\/\/www.mrc-productivity.com\/blog\/2015\/02\/how-to-create-applications-that-last-20-years\/","title":{"rendered":"How to create applications that last 20 years"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-725\" src=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2010\/11\/Education.jpg\" alt=\"Education\" width=\"76\" height=\"100\" \/><span style=\"font-size: 14px;\"><em>Summary: Technology is evolving at breakneck speed. No one knows what the development landscape will look like in 5 or 10 years. How can you create enterprise applications that stand the test of time&#8230;when you don&#8217;t know what lies ahead? This article lists 7 tips to help you create applications that last.<\/em><\/span><br \/>\n<a name=\"20150223\"><\/a><!--more--><br \/>\nWhat\u2019s the next big tech trend? How will development standards evolve? What will the web look like in 10 years?<\/p>\n<p>Who knows?<\/p>\n<p>That\u2019s the enterprise application development problem in a nutshell. No one knows the future, yet businesses expect future-proof applications. After all, no business wants to (or can afford to) recreate their applications every few years.<\/p>\n<p>So, the question is: How can you create business applications that stand the test of time? How can you create applications that will still be in use 20 years down the road?<\/p>\n<p>It starts with an underlying principle: Build for change. An application will never survive even a few years if left untouched. To stand the test of time, your application must evolve. It must adapt to meet changing business needs and trends.<\/p>\n<p>How can you do that? Creating future-proof applications is a passion of ours, and today, I\u2019d like to share some tips to help you do the same. Here are 7 rules you must follow to create applications that adapt to change:<\/p>\n<h3>1. Focus on your data<\/h3>\n<p>Do you remember what caused the Y2K problem? It was the practice of abbreviating a four-digit year to two digits in the database. This led to software that couldn\u2019t tell the difference between the year 1900 and 2000.<\/p>\n<p>In other words, it was a data problem. Developers designed their database structure assuming the applications wouldn\u2019t last until 2000. This is always a mistake.<\/p>\n<p>A clean, well-planned data structure is the first step in building future-proof applications. Create your data schemes with the assumption that it will last for 20 years (or even longer). Just think&#8211;if everyone thought like that, the Y2K problem would\u2019ve never existed.<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cFirst and foremost, when building your web application, your focus should be on the data,\u201d says Jitesh Keswani, Co-Founder of <a href=\"https:\/\/eintelligenceweb.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red; font-weight: bold;\">e Intelligence<\/span><\/a>. \u201cPlatforms may change, newer technologies may be introduced, but if your app has a strong future-proof relevant data, then users will adapt themselves automatically.\u201d<\/p><\/blockquote>\n<h3>2. Don\u2019t build for a single platform<\/h3>\n<figure id=\"attachment_7437\" aria-describedby=\"caption-attachment-7437\" style=\"width: 160px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-7437\" src=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2014\/01\/small_9530886897.jpg\" alt=\"photo credit: archer10 (Dennis) via photopin cc\" width=\"160\" height=\"240\" \/><figcaption id=\"caption-attachment-7437\" class=\"wp-caption-text\">photo credit: <a href=\"http:\/\/www.flickr.com\/photos\/archer10\/9530886897\/\">archer10 (Dennis)<\/a> via <a href=\"http:\/\/photopin.com\">photopin<\/a> <a href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/\">cc<\/a><\/figcaption><\/figure>\n<p>What happens when you build applications for a specific technology, platform, framework, database, etc\u2026? You\u2019re tied to that technology. Your application\u2019s success depends (in part) on outside factors.<\/p>\n<p>What if the technology becomes obsolete? What if the platform vendor stops supporting their software? What if the framework evolves in a different direction? I\u2019ve seen it happen time and time again. A business locks themselves into a single platform, and then struggles to adapt once it changes or becomes obsolete.<\/p>\n<p>Guess what? It\u2019s happening all over again with mobile. Rather than building for the web (a future-proof platform), some businesses are building platform-specific mobile apps. Will these platforms exist in a few years? Who knows?<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cThe current trend is to build device specific apps for the iPad, Android devices, etc,\u201d says Kevin Baker, CTO of <span style=\"color: red; font-weight: bold;\">PageProdigy.com<\/span>. \u201cHowever, these apps cost a lot of money to maintain across all devices and platforms. Instead, building for HTML 5 and eventually HTML 6, an application can span across all devices. Since technology moves so fast, this method insures that all upgrades and improvements happen in one central place &#8211; maximizing resources and increasing the life span of the application.\u201d<\/p><\/blockquote>\n<h3>3. Separate your architecture<\/h3>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cTo future-proof your app, you&#8217;d better have your application architecture well thought out,\u201d says Dennis Kayser, CEO of <a href=\"http:\/\/forecast.it\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red; font-weight: bold;\">Forecast.it<\/span><\/a>. \u201cIt&#8217;s probably THE most important thing to do right, unless you want to risk refactoring a large portion of your codebase. Hint: You don&#8217;t want to spend money refactoring many thousands of lines of code. It&#8217;s expensive and sucks! No matter the technology you choose, the overall system needs to be well architected. A good architecture makes it simple to change parts of the code for new tech, new features, to run faster or migrate to a new platform. It also makes the application easier and cheaper to maintain. The goal of a proper architecture is that it enables business strategy today AND tomorrow.\u201d<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-1403\" src=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2011\/01\/nTierMobile1-300x250.jpg\" alt=\"nTierMobile\" width=\"300\" height=\"250\" srcset=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2011\/01\/nTierMobile1-300x250.jpg 300w, https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2011\/01\/nTierMobile1.jpg 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>So, how do you create well-architected applications? We\u2019re a huge proponent of n-Tier architecture, which separates your application into layers. While you can learn more about <a href=\"https:\/\/www.mrc-productivity.com\/research\/videos\/videontier.html\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red; font-weight: bold;\">n-Tier architecture in this video<\/span><\/a>, here\u2019s the main point: It lets you maintain and enhance each application layer separately.<\/p>\n<p>Why is that so important? Here\u2019s a great example: Suppose you need to make your applications responsive for use on mobile devices. n-Tier architecture lets you replace the presentation layer, without altering the other layers.<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cThe key to building future-proof web applications is to build them in a modular way using proven open source technologies,\u201d says Reggie Cole, Software Engineer at <a href=\"http:\/\/www.broadleafcommerce.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red; font-weight: bold;\">Broadleaf Commerce<\/span><\/a>. \u201cProven open source technologies evolve and improve over time to solve problems as they come along and if you use them in a modular way, you can simply switch a part of your application to use another technology that is more suited to solve a new problem rather than having to remake your entire application.\u201d<\/p><\/blockquote>\n<h3>4. Stick to the standards<\/h3>\n<p>Imagine if everyone designed applications using whatever standards they personally deem best. Now imagine you were suddenly responsible for maintaining applications built by others using no clear standards.<\/p>\n<p>Sounds like a nightmare, right?<\/p>\n<p>This highlights the importance of web standards. Web standards are the formal, non-proprietary standards that define web development best practices. In short, they give developers a guide so every developer isn\u2019t just making up their own \u201cbest practices.\u201d<\/p>\n<p>Standards aren\u2019t always exciting. But, they leave you with a solid foundation on which to grow.<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cAdhere to the most current standards you can while creating your site,\u201d says Eric W. Brown, Contractor at <a href=\"http:\/\/www.thoughtsynth.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red; font-weight: bold;\">ThoughtSynth<\/span><\/a>. \u201cEnsure your HTML, CSS, JavaScript, RDF, robots.txt, etc. all follow both the letter of the law per the standards for each and the industry best practices for each.\u201d<\/p><\/blockquote>\n<h3>5. Use proven technology<\/h3>\n<figure id=\"attachment_8710\" aria-describedby=\"caption-attachment-8710\" style=\"width: 300px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-8710\" src=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2014\/12\/ball-457334_640-300x168.jpg\" alt=\"photo credit: geralt via pixabay cc\" width=\"300\" height=\"168\" srcset=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2014\/12\/ball-457334_640-300x168.jpg 300w, https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2014\/12\/ball-457334_640.jpg 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-8710\" class=\"wp-caption-text\">photo credit: <a href=\"http:\/\/pixabay.com\/en\/ball-about-binary-ball-hand-keep-457334\/\">geralt<\/a> via <a href=\"http:\/\/pixabay.com\/\">pixabay<\/a> <a href=\"http:\/\/creativecommons.org\/publicdomain\/zero\/1.0\/deed.en\">cc<\/a><\/figcaption><\/figure>\n<p>Developers love using the \u201clatest and greatest\u201d technology. There\u2019s nothing wrong with that. Experimenting with new technology drives advancement.<\/p>\n<p>Just don\u2019t opt for unproven, new technology when building business applications.<\/p>\n<p>Why? You run the risk of choosing a technology that might never catch on. Opting for proven technology in your development projects promotes stability, security, and maintainability\u2013and the overall success of your applications.<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cEnterprises are notoriously weary of new technology so if you&#8217;re building enterprise apps think twice before you use &#8220;alien&#8221; technology,\u201d says Kayser. \u201cWe all remember when Twitter moved from Ruby to Java because they had scalability issues. It&#8217;s a bit of a controversy, especially in the startup world where everyone is addicted to running the newest things. Enterprises like things to be predictable and with few risks, so they don&#8217;t end up supporting a system built on the next great thing, because what if it turns out not to be the next great thing? Then they&#8217;ll either have to redo the solution or end up paying huge amounts of money for a specialist to support them. Not a good situation.\u201d<\/p><\/blockquote>\n<h3>6. Listen to your users<\/h3>\n<p>If your application will stand the test of time, it must evolve. But, how do you know which features to add? How do you know which direction to take your application? As explained below, it all starts with your users. If you stay in close contact with your users, they will give you more ideas than you\u2019ll ever have time to implement.<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cListen to your users,\u201d says Harry E. Keller, PhD, President and Founder, <a href=\"http:\/\/www.smartscience.net\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red; font-weight: bold;\">Smart Science Education Inc<\/span><\/a>. \u201cYou may have the same product in 20 years, but it will have evolved if it has survived.\u201d<\/p><\/blockquote>\n<h3>7. Do it right the first time<\/h3>\n<p>As mentioned above, your application will evolve. You will make changes and add new features. How you make these changes is of critical importance.<\/p>\n<p>What do I mean by that? Sometimes, you\u2019ll need a new feature added to your application quickly. Or, your application might need a quick fix. It\u2019s tempting to just throw a bandaid on the problem. Cobble together some patchwork fix and throw it on the application. Over time, those \u201cquick fixes\u201d become an unmanageable mess.<\/p>\n<p>There are two key principles to long-term application maintenance. First, fix problems the right way. Sure, this will take longer. But, it will save weeks of future headaches. Second, as explained below, document everything. Don\u2019t assume you (or anyone else) can figure out what was changed.<\/p>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px; height: auto;\"><p>\u201cAnother important aspect is to document everything, even the minutest detail,\u201d says Keswani. \u201cOver the span of two decades, you may not have the same staff that coded your app originally. A wiki like documentation system that can be tied to your data backup and bug tracking will help overall all such institutional shortcomings.\u201d<\/p><\/blockquote>\n<p>So, what do you think? Is there anything you would add to this list? If so, please share your thoughts in the comments.<\/p>\n<div id=\"sendgrid_nlvx_widget-2\" class=\"widget widget_sendgrid_nlvx_widget\" style=\"padding-bottom: 10px; width: auto; text-align: center; background-color: #edeff4; border: 1px solid #d1d1d1;\">\n<h3 class=\"widget-title\" style=\"font-size: 18px; margin-top: 28px; font-weight: 400; margin-bottom: 25px;\">If you enjoyed this article, sign up for email updates<\/h3>\n<p>Sign up below, and we&#8217;ll notify you of new blog articles via email. We value your privacy and will never share or sell your information. To learn more about how we handle data, please review our <a href=\"https:\/\/www.mrc-productivity.com\/about\/privacy.html\">privacy policy<\/a>.<br \/>\n<script type=\"text\/javascript\" src=\"\/\/mautic.mrc-productivity.com\/mautic\/form\/generate.js?id=27\"><\/script><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Technology is evolving at breakneck speed. No one knows what the development landscape will look like in 5 or 10 years. How can you create enterprise applications that stand the test of time&#8230;when you don&#8217;t know what lies ahead? This article lists 7 tips to help you create applications that last.<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","slim_seo":{"title":"How to create applications that last 20 years - mrc&#039;s Cup of Joe Blog","description":"Summary: Technology is evolving at breakneck speed. No one knows what the development landscape will look like in 5 or 10 years. How can you create enterprise a"},"footnotes":""},"categories":[4],"tags":[15],"class_list":["post-8911","post","type-post","status-publish","format-standard","hentry","category-productivity","tag-web-development"],"_links":{"self":[{"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts\/8911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/comments?post=8911"}],"version-history":[{"count":18,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts\/8911\/revisions"}],"predecessor-version":[{"id":14867,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts\/8911\/revisions\/14867"}],"wp:attachment":[{"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/media?parent=8911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/categories?post=8911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/tags?post=8911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}