{"id":6921,"date":"2013-09-24T09:38:04","date_gmt":"2013-09-24T14:38:04","guid":{"rendered":"http:\/\/www.mrc-productivity.com\/blog\/?p=6921"},"modified":"2021-10-14T11:27:24","modified_gmt":"2021-10-14T16:27:24","slug":"7-deadly-sins-of-web-application-development","status":"publish","type":"post","link":"https:\/\/www.mrc-productivity.com\/blog\/2013\/09\/7-deadly-sins-of-web-application-development\/","title":{"rendered":"7 deadly sins of web application development"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2010\/11\/Education.jpg\" alt=\"Education\" width=\"76\" height=\"100\" class=\"alignleft size-full wp-image-725\" \/>What percentage of IT projects fail? It\u2019s hard to say. I\u2019ve seen surveys that put the number at 25%. Others surveys push it closer to 70%. While that\u2019s quite a range, the point is this: those numbers are far too high. Even if it is \u201cjust\u201d 25%, that\u2019s still 1 out of every 4 projects. That\u2019s too many. <\/p>\n<p>How can we bring those numbers down? Today, let\u2019s focus on ways to reduce failure for one common project type: web application development projects. In this article, we\u2019ll take a look at mistakes that hurt web application development projects. These are chronic bad habits that turn web application development projects into disasters.<\/p>\n<p>What deadly sins do even the most experienced web application developers make? What common web app development mistakes crop up over and over again? We posed those questions to a few experienced developers and have compiled these answers below. Without further ado, here are 7 deadly sins of web application development:<br \/>\n<a name=\"20130923\"><\/a><!--more--><\/p>\n<h3>Sin #1: Forgetting your audience<\/h3>\n<blockquote style=\"line-height: 1.7em; background-image: none; margin-left: 0; padding-left: 18px;\">\n<p>\u201cDon&#8217;t forget your audience,\u201d explains Walden Leverich, CEO of <a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Source', 'Tech Soft']); \" href=\"http:\/\/www.techsoftinc.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">Tech Software<\/span><\/a> \u201cIt doesn&#8217;t matter what the makeup of Reddit&#8217;s audience is; it doesn&#8217;t matter what the most popular browser on Google is; the adoption of mobile technology by Facebook users is irrelevant. What matter is your customer base. Look at the analytics for your web application and make your code decisions based on that. Our user base took a good 12-18 months to decide IE6 was dead after the &#8216;internet&#8217; decided it was dead.\u201d<\/p>\n<\/blockquote>\n<p>It\u2019s an excellent point, and highlights the importance of understanding your users. What browsers do they use? What problems are they trying to solve? It\u2019s easy to get caught up in the latest technology or the latest trends&#8211;when in reality&#8211;those trends may not apply to your users.<\/p>\n<h3>Sin #2: Re-inventing the wheel<\/h3>\n<p>These days, coding everything from start to finish is usually unnecessary. With all of the available frameworks, tools, and applications that exist today, you can probably find something that gets you most (or all) of the way to your goal. Why reinvent the wheel and build everything from scratch when you don\u2019t have to? <\/p>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\n\u201cPurchasing and integrating solutions is much faster than developing them,\u201d Douglas Karr, CEO of <a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Source', 'DK New Media']); \" href=\"http:\/\/www.dknewmedia.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">DK New Media<\/span><\/a>. \u201cDevelopers can be an ornery bunch, always wanting to take on too much and badmouthing canned controls. But purchased solutions often have better support, a greater user history, and can be integrated much easier than paying a developer to build it from scratch.\u201d<\/p><\/blockquote>\n<h3>Sin #3: Building without clearly defined requirements <\/h3>\n<p>What one issue causes more problems than any other? Communication&#8230;or, a lack thereof. It destroys relationships, kills <a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Inside Link', 'IT\/Business Alignment']); \" href=\"https:\/\/www.mrc-productivity.com\/blog\/2013\/08\/5-major-itbusiness-alignment-stumbling-blocks\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">IT\/business alignment<\/span><\/a>, and ruins development projects. How does this apply to development projects? Don\u2019t start projects with undefined goals or unclear instructions. For instance, if a user asks for a scheduling application, figure out exactly what they mean by that. Their definition may vary greatly from your definition. Vague requirements almost always lead to disaster. <\/p>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\n<a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Source', 'SelectBidder']); \" href=\"http:\/\/about.me\/ken.bodnar\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">Ken Bodnar<\/span><\/a>, CTO of SelectBidder.com, sums this up clearly and concisely: \u201cSo many times I have been asked to &#8220;Build me something wonderful&#8221; and when I did, it turned out not to be the wonderful that they envisioned.\u201d<\/p><\/blockquote>\n<h3>Sin #4: Assuming your code is obvious<\/h3>\n<figure id=\"attachment_6927\" aria-describedby=\"caption-attachment-6927\" style=\"width: 200px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.mrc-productivity.com\/blog\/wp-content\/uploads\/2013\/09\/small_4661409838.jpg\" alt=\"photo credit: *n3wjack&#039;s world in pixels via photopin cc\" width=\"200\" height=\"150\" class=\"size-full wp-image-6927\" \/><figcaption id=\"caption-attachment-6927\" class=\"wp-caption-text\">photo credit: <a href=\"http:\/\/www.flickr.com\/photos\/n3wjack\/4661409838\/\">*n3wjack&#8217;s world in pixels<\/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>Some developers make the mistake of assuming their code is so well-organized, it doesn\u2019t need comments. While it may seem obvious at the time, what happens when you (or someone else) need to maintain that uncommented code a few years down the line? I guarantee you, it won\u2019t seem quite so obvious then. <\/p>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\n\u201cGood applications will live for years, even decades, and will need ongoing maintenance,\u201d explains Leverich. \u201cDon&#8217;t curse the poor developer that has to fix something at 3AM with code that has no comments, poor variable names and cool programming shortcuts that are all &#8220;obvious.&#8221; When it&#8217;s 3AM, production is down, and your boss is looking for updates every 10 minutes nothing is \u2018obvious\u2019.\u201d<\/p><\/blockquote>\n<h3>Sin #5: Skimping on the user interface<\/h3>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\n\u201cThe biggest problems with applications, both on the web as well as mobile apps, is that there is not enough thought put into how the end user interacts with the application,\u201d says Hamid Shojaee, founder of <a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Source', 'Axosoft']); \" href=\"http:\/\/www.axosoft.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">Axosoft<\/span><\/a>. \u201cDevelopers often assume the user knows too much about the inner workings of their applications. This is by far the deadliest sin.\u201d<\/p><\/blockquote>\n<p>For developers, a confusing user interface is one of the most dangerous, yet difficult problems to identify. It\u2019s dangerous because a confusing user interface will kill an application. It\u2019s difficult to identify because the developer has spent weeks working on the application. They know it inside and out. The interface isn\u2019t confusing at all to them. The hard part: Looking at the interface from the user\u2019s perspective. <\/p>\n<p>So, how can you avoid a confusing user interface? First, as explained in this <a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Inside Link', 'How to build apps users will hate']); \" href=\"https:\/\/www.mrc-productivity.com\/blog\/2013\/04\/how-to-build-applications-your-users-will-hate\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">article<\/span><\/a>, involve the users from the beginning. Understand what problems they\u2019re trying to solve. Second, as explained below, don\u2019t ask the developers to handle design.<\/p>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\nBodnar explains why it\u2019s a mistake to make developers also handle the graphics and design: \u201cThose are two different functions and skillsets. Web developers are the mechanics that deliver the artistry. Brand designers and graphic artists are the creative control and possess the knowledge base to transmit the messages of the web [app].\u201d<\/p><\/blockquote>\n<h3>Sin #6: Ignoring test cases<\/h3>\n<p>In an effort to get their application shipped, or meet a deadline, proper testing is often bypassed. Don\u2019t make this mistake. The assumption that everything \u201cjust works\u201d is a recipe for disaster. <\/p>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\n\u201cSadly, too much code is still written without even creating any test cases,\u201d explains Klaus Sonnenleiter, CEO at <a onclick=\"_gaq.push(['_trackEvent', 'Blog', 'Source', 'Printed Art']); \" href=\"http:\/\/www.printedart.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: red;font-weight: bold\">PrintedArt<\/span><\/a>. \u201cInstead it is handed over in the hopes that everything works and nobody will find any problems. Even if it works initially, any later change can break the system in unexpected ways and the only protection is a good set of test cases that tells whether or not a change has broken existing functionality.\u201d<\/p><\/blockquote>\n<h3>Sin #7: Focusing on an arbitrary \u201crelease date\u201d<\/h3>\n<p>Tell me: What makes a successful web application? Would you rather have one that\u2019s released on time, or one that does everything it\u2019s supposed to do? Of course, it\u2019s the latter. Yet, so many web apps suffer because the developers rush through the final stages in an effort to meet the release date.<\/p>\n<blockquote style=\"background-image: none; margin-left: 0; padding-left: 18px;\"><p>\n\u201cFocus on the goals of the application, not the goals of the timeline,\u201d says Karr. \u201cWe see too many companies fail because they worry about the launch date over the functionality. A launch date can be moved later, a missing feature can destroy your chances of having a workable application. User stories that provide detail on where a customer starts and finishes with your web app are critical. You&#8217;re launch is successful when the user can do what you said they can do.\u201d<\/p><\/blockquote>\n<p>What do you think? Would you add anything to this list? If you can think of any deadly sins of web app development, feel free to share in the comments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What percentage of IT projects fail? It\u2019s hard to say. I\u2019ve seen surveys that put the number at 25%. Others surveys push it closer to 70%. While that\u2019s quite a range, the point is this: those numbers are far too high. Even if it is \u201cjust\u201d 25%, that\u2019s still 1 out of every 4 projects. &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.mrc-productivity.com\/blog\/2013\/09\/7-deadly-sins-of-web-application-development\/\"> <span class=\"screen-reader-text\">7 deadly sins of web application development<\/span> Read More &raquo;<\/a><\/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":"7 deadly sins of web application development - mrc&#039;s Cup of Joe Blog","description":"What percentage of IT projects fail? It\u2019s hard to say. I\u2019ve seen surveys that put the number at 25%. Others surveys push it closer to 70%. While that\u2019s quite a"},"footnotes":""},"categories":[8],"tags":[36,15],"class_list":["post-6921","post","type-post","status-publish","format-standard","hentry","category-education","tag-web-applications","tag-web-development"],"_links":{"self":[{"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts\/6921","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=6921"}],"version-history":[{"count":19,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts\/6921\/revisions"}],"predecessor-version":[{"id":13134,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/posts\/6921\/revisions\/13134"}],"wp:attachment":[{"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/media?parent=6921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/categories?post=6921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/blog\/wp-json\/wp\/v2\/tags?post=6921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}