{"id":17985,"date":"2016-10-03T00:00:57","date_gmt":"2016-10-03T00:00:57","guid":{"rendered":"https:\/\/www.fullcontact.com\/?p=17985"},"modified":"2020-03-23T17:12:08","modified_gmt":"2020-03-23T17:12:08","slug":"follow-the-smells-be-agile","status":"publish","type":"post","link":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/","title":{"rendered":"Follow The Smells \/ Be Agile"},"content":{"rendered":"<p id=\"5ce2\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware, platform, and even munging around in data warehouses. I guess you could call me a \u201cfull-stack\u201d engineer.<\/p>\n<p id=\"1191\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">Recently, I had an excellent opportunity to be the tech-lead for a rewrite into <a class=\"ew fu gw gx gy gz\" href=\"http:\/\/fullc\" target=\"_blank\" rel=\"noopener noreferrer\">FullContact<\/a>\u2019s new web-platform dubbed <a class=\"ew fu gw gx gy gz\" href=\"http:\/\/beta.fullcontact.com\" target=\"_blank\" rel=\"noopener noreferrer\">Redboat<\/a>. During the stretch, I stumbled across a \u201cCode Smell\u201d while digging around the code of an upcoming feature.<\/p>\n<p id=\"40c5\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">In Software Engineering, the term \u201cCode Smell\u201d implies something is fundamentally wrong with code, but you\u2019re not quite sure what it is. Typically an experienced engineer will sense the smell, then follow it until the underlying cause is addressed.<\/p>\n<p id=\"5c45\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">What was particularly interesting about this smell, was the fact that it became apparent that the code itself didn\u2019t smell. In fact, I came to the conclusion that this code shouldn\u2019t be written at all. The design \/ ux smelled. With no buy-in necessary; The Designer, Product Manager and I came to the same conclusion that the feature would fit nicely within an already awesome part of our product.<\/p>\n<p id=\"f116\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">This was a big milestone for <a class=\"ew fu gw gx gy gz\" href=\"https:\/\/beta.fullcontact.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Redboat<\/a>. It signaled to me that the Engineering, Design and Product had started to fit well enough together that \u201cSmells\u201d in one aspect of the application could signal issues to others.<\/p>\n<p id=\"451a\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">I\u2019d never found myself having such a strong capability to detect underlying issues with an application and act on them. I found myself wondering, what the hell happened?<\/p>\n<p id=\"c19b\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">A friend recently linked me to this excellent \/ controversial <a class=\"ew fu gw gx gy gz\" href=\"http:\/\/www.ustream.tv\/recorded\/61491014\" target=\"_blank\" rel=\"noopener noreferrer\">talk<\/a> by Marty Cagan (Great Engineering, Failed Product). The talk surfaced a lot of my career-long frustrations as an Engineer. Marty also led me to the answer of the question above, what the hell happened during <a class=\"ew fu gw gx gy gz\" href=\"http:\/\/beta.fullcontact.com\" target=\"_blank\" rel=\"noopener noreferrer\">Redboat<\/a>\u2026<\/p>\n<ul class=\"\">\n<li id=\"5881\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv ha hb hc\" data-selectable-paragraph=\"\">We ditched the roadmap.<\/li>\n<li id=\"29c4\" class=\"gi gj ck bg gk b gl hd gn he gp hf gr hg gt hh gv ha hb hc\" data-selectable-paragraph=\"\">We defined the core idea \u2014 Build a web-platform that distills our product into something that is faster and easier to understand.<\/li>\n<li id=\"4c03\" class=\"gi gj ck bg gk b gl hd gn he gp hf gr hg gt hh gv ha hb hc\" data-selectable-paragraph=\"\">We got a Designer, Product Manager and Engineering Team into a separate office to promote collaboration.<\/li>\n<li id=\"d432\" class=\"gi gj ck bg gk b gl hd gn he gp hf gr hg gt hh gv ha hb hc\" data-selectable-paragraph=\"\">Most Importantly, we empowered the entire team to act as peers and follow \u201cSmells\u201d everywhere. This led to interesting ideas \/ improvements on the fly.<\/li>\n<\/ul>\n<p id=\"c871\" class=\"gi gj ck bg gk b gl gm gn go gp gq gr gs gt gu gv dj\" data-selectable-paragraph=\"\">Looking back, It was the first time in my career as an Engineer where the term \u201cagile\u201d was truly applicable to how the team operated, and not just an arbitrary engineering process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware, platform, and even munging around in data warehouses. I guess you could call me a \u201cfull-stack\u201d engineer. Recently, I had an excellent opportunity to be the tech-lead for a rewrite into FullContact\u2019s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_improvement_type_select":"improve_an_existing","_thumb_yes_seoaic":false,"_frame_yes_seoaic":false,"seoaic_generate_description":"","seoaic_improve_instructions_prompt":"","seoaic_rollback_content_improvement":"","seoaic_idea_thumbnail_generator":"","thumbnail_generated":false,"thumbnail_generate_prompt":"","seoaic_article_description":"","seoaic_article_subtitles":[],"footnotes":""},"categories":[656],"tags":[],"class_list":["post-17985","post","type-post","status-publish","format-standard","hentry","category-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.1 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Follow The Smells \/ Be Agile | FullContact<\/title>\n<meta name=\"description\" content=\"Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware,\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Follow The Smells \/ Be Agile\" \/>\n<meta property=\"og:description\" content=\"Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\" \/>\n<meta property=\"og:site_name\" content=\"FullContact\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-03T00:00:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-23T17:12:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2020\/07\/party-data-blog-li.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"FullContact\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fullcontact\" \/>\n<meta name=\"twitter:site\" content=\"@fullcontact\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"FullContact\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\"},\"author\":{\"name\":\"FullContact\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/person\/046a6157300f0577cf0a6122fb63080e\"},\"headline\":\"Follow The Smells \/ Be Agile\",\"datePublished\":\"2016-10-03T00:00:57+00:00\",\"dateModified\":\"2020-03-23T17:12:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\"},\"wordCount\":404,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.fullcontact.com\/#organization\"},\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\",\"url\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\",\"name\":\"Follow The Smells \/ Be Agile | FullContact\",\"isPartOf\":{\"@id\":\"https:\/\/www.fullcontact.com\/#website\"},\"datePublished\":\"2016-10-03T00:00:57+00:00\",\"dateModified\":\"2020-03-23T17:12:08+00:00\",\"description\":\"Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware,\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fullcontact.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Follow The Smells \/ Be Agile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fullcontact.com\/#website\",\"url\":\"https:\/\/www.fullcontact.com\/\",\"name\":\"FullContact\",\"description\":\"Relationships, reimagined.\",\"publisher\":{\"@id\":\"https:\/\/www.fullcontact.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fullcontact.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.fullcontact.com\/#organization\",\"name\":\"FullContact\",\"url\":\"https:\/\/www.fullcontact.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png\",\"contentUrl\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png\",\"width\":200,\"height\":38,\"caption\":\"FullContact\"},\"image\":{\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/fullcontact\",\"https:\/\/www.linkedin.com\/company\/fullcontact-inc-\",\"https:\/\/www.youtube.com\/user\/FullContactAPI\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/person\/046a6157300f0577cf0a6122fb63080e\",\"name\":\"FullContact\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514?s=96&d=mm&r=g\",\"caption\":\"FullContact\"},\"url\":\"https:\/\/www.fullcontact.com\/blog\/author\/user\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Follow The Smells \/ Be Agile | FullContact","description":"Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware,","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:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/","og_locale":"en_US","og_type":"article","og_title":"Follow The Smells \/ Be Agile","og_description":"Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware,","og_url":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/","og_site_name":"FullContact","article_published_time":"2016-10-03T00:00:57+00:00","article_modified_time":"2020-03-23T17:12:08+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2020\/07\/party-data-blog-li.png","type":"image\/png"}],"author":"FullContact","twitter_card":"summary_large_image","twitter_creator":"@fullcontact","twitter_site":"@fullcontact","twitter_misc":{"Written by":"FullContact","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#article","isPartOf":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/"},"author":{"name":"FullContact","@id":"https:\/\/www.fullcontact.com\/#\/schema\/person\/046a6157300f0577cf0a6122fb63080e"},"headline":"Follow The Smells \/ Be Agile","datePublished":"2016-10-03T00:00:57+00:00","dateModified":"2020-03-23T17:12:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/"},"wordCount":404,"commentCount":0,"publisher":{"@id":"https:\/\/www.fullcontact.com\/#organization"},"articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/","url":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/","name":"Follow The Smells \/ Be Agile | FullContact","isPartOf":{"@id":"https:\/\/www.fullcontact.com\/#website"},"datePublished":"2016-10-03T00:00:57+00:00","dateModified":"2020-03-23T17:12:08+00:00","description":"Over the years I\u2019ve bounced around quite a bit in the engineering world; I\u2019ve found myself actively developing applications on the front-end, middleware,","breadcrumb":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/follow-the-smells-be-agile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fullcontact.com\/"},{"@type":"ListItem","position":2,"name":"Follow The Smells \/ Be Agile"}]},{"@type":"WebSite","@id":"https:\/\/www.fullcontact.com\/#website","url":"https:\/\/www.fullcontact.com\/","name":"FullContact","description":"Relationships, reimagined.","publisher":{"@id":"https:\/\/www.fullcontact.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fullcontact.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.fullcontact.com\/#organization","name":"FullContact","url":"https:\/\/www.fullcontact.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png","contentUrl":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png","width":200,"height":38,"caption":"FullContact"},"image":{"@id":"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/fullcontact","https:\/\/www.linkedin.com\/company\/fullcontact-inc-","https:\/\/www.youtube.com\/user\/FullContactAPI"]},{"@type":"Person","@id":"https:\/\/www.fullcontact.com\/#\/schema\/person\/046a6157300f0577cf0a6122fb63080e","name":"FullContact","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fullcontact.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514?s=96&d=mm&r=g","caption":"FullContact"},"url":"https:\/\/www.fullcontact.com\/blog\/author\/user\/"}]}},"_links":{"self":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/posts\/17985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/comments?post=17985"}],"version-history":[{"count":0,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/posts\/17985\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/media?parent=17985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/categories?post=17985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/tags?post=17985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}