{"id":644538,"date":"2019-12-16T09:11:55","date_gmt":"2019-12-16T08:11:55","guid":{"rendered":"https:\/\/www.devoteam.com\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/"},"modified":"2019-12-16T09:11:55","modified_gmt":"2019-12-16T08:11:55","slug":"how-easily-can-backend-solution-break-your-fancy-front-end","status":"publish","type":"expert-view","link":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/","title":{"rendered":"How easily can backend solution break your fancy front-end"},"content":{"rendered":"<p><span style=\"font-weight: 400\">When working on a multi-purpose IT application, there simply is no more crucial phase of the project than the initial analysis. There is a tendency to jump-start certain projects by defining user stories perceived as \u201ceasy\u201c and deliver quick-win functionalities. This, among other things, serves as an assurance that the team is able to deliver from day one, but if not done properly might bring more trouble in the future, because working on a single task without proper knowledge of the whole product is a certain way to fail in the long run.<\/span><\/p>\n<p><span style=\"font-weight: 400\">It is also the reason why multidisciplinary teams exist and why user experience experts are no longer perceived as a money-generating buzzword but rather valuable addition to new (IT non-exclusive) projects.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Let\u2019s move aside from theory and explore, as the title suggests one very easy real-world example. The trouble that could arise from improper stitching of backend and frontend.<\/span><\/p>\n<p><b><i>Scenario<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">Imagine a highly customized ServiceNow portal with a lot of built-from-scratch widgets. Part of the customer portal experience was supposed to be the management of entitlements. The back-end part of the epic was to get those entitlements and related table information to the database, the front-end part was to create a pleasant user interface to manage orders and approvals. One of the key features of the new UI was a custom autocomplete form suggesting information from the dedicated backend tables. The story has been described and reviewed with the customer, the solution developed and successfully tested with a response time of around 250 milliseconds (for the suggested text to appear). But when moved to production, the feature suddenly broke.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2398 size-full\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/Snimek-obrazovky-2019-12-11-v-13.36.37.png\" alt=\"\" width=\"2177\" height=\"770\"><\/p>\n<p><b><i>What happened?<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">It turned out that the only problem was an insufficient sample size. No real data import has ever been tested by the customer. Since company policy rules have prevented usage of the real production file, the source table has been populated only with hundreds of records instead of millions in production. And since advanced grouping and filters have been used, the performance of the autocomplete feature dropped to somewhere around 20 seconds, rendering the whole functionality useless.<\/span><\/p>\n<p><b><i>What could have prevented that?<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">Two things. First: <\/span><b>Keep asking questions.<\/b><span style=\"font-weight: 400\"> Unfortunately for us, we already had answers to most of these questions from the beginning. So the second part of the answer was more important to fix the issue. But let\u2019s follow the line of the question just for the sake of outlining the solution: <\/span><i><span style=\"font-weight: 400\">How many records will there be available for the form? What is the source of the table? Do we have a different more condensed source? Can we create one? Will it be possible to obtain it from your subsidiary? Will we need to source different tables in the future for different forms?<\/span><\/i><span style=\"font-weight: 400\">&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: 400\">Second: <\/span><b>Keep an eye on performance from the beginning.<\/b><span style=\"font-weight: 400\"> The rule of thumb should be: <\/span><i><span style=\"font-weight: 400\">if something is supposed to be big in production (as the data source) make it ten times bigger in testing environment<\/span><\/i><span style=\"font-weight: 400\">. See how it holds up and when it eventually breaks. By simply populating the table in advance, we could have prevented:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">&nbsp;<\/span><span style=\"font-weight: 400\">unhappy stakeholders<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">&nbsp;<\/span><span style=\"font-weight: 400\">defect fixing time<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">several meetings<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">additional development<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Sometimes when you hear from the customer that something cannot be done too often (aka obtaining the real data file), you may forget that you developers could work on tasks that are not implicit in the delivery. For example, you can populate the table by yourself. Even if there are multiple strict rules to be applied to guarantee the uniqueness of the records, it is better to spend a few hours making the <\/span><i><span style=\"font-weight: 400\">useful population script<\/span><\/i><span style=\"font-weight: 400\"> rather than facing production issues down the road with very limited time to solve them.<\/span><\/p>\n<p><span style=\"font-weight: 400\">With the knowledge of similar issues, you should then be able to explain to the client that described tasks are a crucial part of the development and that the additional time for something not visible in the final product may save much more money later.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Also, similar scripts or functionalities could be used for different stories or better yet, for different clients, which could save you more time in the future. You could just add them to your company\u2019s knowledge base if you have a shared space for developers.<\/span><\/p>\n<p><b><i>The solution:<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">In the end, the solution was a mixture of both of these principles. We reopened certain closed topics regarding data sources and understood enough to choose a different set of source files (with a much lower number of records) and we performed tests on randomly populated tables that mimicked the production state as close as possible. With the higher volume of dummy records, we were also able to re-evaluate and simplify the used sorting mechanism.<\/span><\/p>\n<p><b><i>So, what\u2019s the takeaway?<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">Don\u2019t underestimate the quick-win stories and the initial analysis, especially when working on a customized solution or on a scoped application. The data model has to be sound and aligned with not only current requirements but flexible enough to serve for future development as well. It\u2019s no use if your front-end and backend developer have finished their tasks and they have no clue what information are they working with or simply, how the gears should work together. <\/span><i><span style=\"font-weight: 400\">The wholesome understanding of the project should not be a task of a project manager, project owner or development lead but rather of the full team.<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400\">Check how many of these points could you cross out when developing new functionalities:<\/span><\/i><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Keep an eye on performance from day one<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">&nbsp;<\/span><span style=\"font-weight: 400\">Don\u2019t leave certain topics for later in order to generate a quick win<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Before designing front-end, make sure you have sufficient knowledge of your backend<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Introduce developer sessions to assure that all developers are synchronized on their tasks<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Insist on quality of supplied data<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Insist on quality of supplied data (you can never raise it enough)<\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>When working on a multi-purpose IT application, there simply is no more crucial phase of the project than the initial analysis. There is a tendency to jump-start certain projects by defining user stories perceived as \u201ceasy\u201c and deliver quick-win functionalities. This, among other things, serves as an assurance that the team is able to deliver [&hellip;]<\/p>\n","protected":false},"featured_media":644539,"template":"","categories":[],"tags":[4084,4086],"industry":[],"class_list":["post-644538","expert-view","type-expert-view","status-publish","has-post-thumbnail","hentry","tag-devoteam-insight-sk","tag-expert-article-sk"],"acf":[],"cards":"\n\t<div class=\"single-post-card\">\n\n\t\t<figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/\" target=\"_self\" ><img width=\"2560\" height=\"1280\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"How easily can backend solution break your fancy front-end\" style=\"aspect-ratio:4\/3;width:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1.jpg 2560w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-300x150.jpg 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-1024x512.jpg 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-768x384.jpg 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-1536x768.jpg 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-2048x1024.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/a><\/figure>\n\n\t\t\n\t\t<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-43282307 wp-block-group-is-layout-flex\">\n\t<p style=\"font-style:normal;font-weight:700\" class=\"has-link-color wp-elements-1 wp-block-lp-post-type has-text-color has-primary-color has-small-font-size\">Expert View<\/p>\n\n\t\t\n\t\t<h3 style=\"font-style:normal;font-weight:400\" class=\"wp-block-post-title has-base-font-size\"><a href=\"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/\" target=\"_self\" >How easily can backend solution break your fancy front-end<\/a><\/h3><\/div>\n\t\t\n\t<\/div>\n\n","yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How easily can backend solution break your fancy front-end | Devoteam<\/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:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How easily can backend solution break your fancy front-end\" \/>\n<meta property=\"og:description\" content=\"When working on a multi-purpose IT application, there simply is no more crucial phase of the project than the initial analysis. There is a tendency to jump-start certain projects by defining user stories perceived as \u201ceasy\u201c and deliver quick-win functionalities. This, among other things, serves as an assurance that the team is able to deliver [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/\" \/>\n<meta property=\"og:site_name\" content=\"Devoteam\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/\",\"url\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/\",\"name\":\"How easily can backend solution break your fancy front-end | Devoteam\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/shutterstock_373692349-scaled-1.jpg\",\"datePublished\":\"2019-12-16T08:11:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/#breadcrumb\"},\"inLanguage\":\"en-SK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-SK\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/#primaryimage\",\"url\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/shutterstock_373692349-scaled-1.jpg\",\"contentUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/shutterstock_373692349-scaled-1.jpg\",\"width\":2560,\"height\":1280},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/how-easily-can-backend-solution-break-your-fancy-front-end\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Expert View\",\"item\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/expert-view\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How easily can backend solution break your fancy front-end\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/#website\",\"url\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/\",\"name\":\"Devoteam\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/devoteam.info\\\/sk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-SK\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How easily can backend solution break your fancy front-end | Devoteam","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:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/","og_locale":"en_US","og_type":"article","og_title":"How easily can backend solution break your fancy front-end","og_description":"When working on a multi-purpose IT application, there simply is no more crucial phase of the project than the initial analysis. There is a tendency to jump-start certain projects by defining user stories perceived as \u201ceasy\u201c and deliver quick-win functionalities. This, among other things, serves as an assurance that the team is able to deliver [&hellip;]","og_url":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/","og_site_name":"Devoteam","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/","url":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/","name":"How easily can backend solution break your fancy front-end | Devoteam","isPartOf":{"@id":"https:\/\/devoteam.info\/sk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/#primaryimage"},"image":{"@id":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/#primaryimage"},"thumbnailUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1.jpg","datePublished":"2019-12-16T08:11:55+00:00","breadcrumb":{"@id":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/#breadcrumb"},"inLanguage":"en-SK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/"]}]},{"@type":"ImageObject","inLanguage":"en-SK","@id":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/#primaryimage","url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1.jpg","contentUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1.jpg","width":2560,"height":1280},{"@type":"BreadcrumbList","@id":"https:\/\/devoteam.info\/sk\/expert-view\/how-easily-can-backend-solution-break-your-fancy-front-end\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devoteam.info\/sk\/"},{"@type":"ListItem","position":2,"name":"Expert View","item":"https:\/\/devoteam.info\/sk\/expert-view\/"},{"@type":"ListItem","position":3,"name":"How easily can backend solution break your fancy front-end"}]},{"@type":"WebSite","@id":"https:\/\/devoteam.info\/sk\/#website","url":"https:\/\/devoteam.info\/sk\/","name":"Devoteam","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devoteam.info\/sk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-SK"}]}},"uagb_featured_image_src":{"full":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1.jpg",2560,1280,false],"thumbnail":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-150x150.jpg",150,150,true],"medium":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-300x150.jpg",300,150,true],"medium_large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-768x384.jpg",768,384,true],"large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-1024x512.jpg",1024,512,true],"1536x1536":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-1536x768.jpg",1536,768,true],"2048x2048":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_373692349-scaled-1-2048x1024.jpg",2048,1024,true]},"uagb_author_info":{"display_name":"Julien Pawlowski","author_link":"https:\/\/devoteam.info\/sk\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"When working on a multi-purpose IT application, there simply is no more crucial phase of the project than the initial analysis. There is a tendency to jump-start certain projects by defining user stories perceived as \u201ceasy\u201c and deliver quick-win functionalities. This, among other things, serves as an assurance that the team is able to deliver&hellip;","_links":{"self":[{"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/expert-view\/644538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/expert-view"}],"about":[{"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/types\/expert-view"}],"version-history":[{"count":0,"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/expert-view\/644538\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/media\/644539"}],"wp:attachment":[{"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/media?parent=644538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/categories?post=644538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/tags?post=644538"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/devoteam.info\/sk\/wp-json\/wp\/v2\/industry?post=644538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}