{"componentChunkName":"component---src-templates-post-js","path":"/blog/development-principles/","result":{"data":{"mdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Development Principles\",\n  \"date\": \"2020-02-13T00:00:00.000Z\",\n  \"tags\": [\"development\"],\n  \"banner\": \"banner.png\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"One of the great parts of software development is the ability to solve a given\\nproblem in a variety of ways. But that\\u2019s also an aspect that makes it\\nchallenging and, at times, frustrating. Just like core values can help evaluate\\nand guide your choices, so, too, can a set of \\\"Development Principles\\\".\"), mdx(\"p\", null, \"Here are my Development Principles.\"), mdx(\"h2\", {\n    \"id\": \"establish-conventions\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#establish-conventions\",\n    \"aria-label\": \"establish conventions permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Establish conventions.\"), mdx(\"p\", null, \"Spend the upfront time establishing conventions and guidelines for how to write\\nand organize code so you don't have to waste the cognitive energy later.\"), mdx(\"h2\", {\n    \"id\": \"ask-questions\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#ask-questions\",\n    \"aria-label\": \"ask questions permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Ask questions.\"), mdx(\"p\", null, \"There are no bad questions. Any question will help unlock more knowledge and\\ninsight into \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"why\"), \" something was done. The developer who wrote the code should\\nbe able to explain \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"why\"), \" they did it that way. If they can't, it's an\\nopportunity to \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"em\", {\n    parentName: \"strong\"\n  }, \"Strive for clarity\")), \".\"), mdx(\"h2\", {\n    \"id\": \"narrow-the-scope\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#narrow-the-scope\",\n    \"aria-label\": \"narrow the scope permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Narrow the scope.\"), mdx(\"p\", null, \"Continually refine the scope of the problem so that the solution is narrow in\\nfocus, making it easier to reason about, and easier to refine over time. The\\ngoal is to make the least amount of changes to solve the problem.\"), mdx(\"h2\", {\n    \"id\": \"strive-for-clarity\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#strive-for-clarity\",\n    \"aria-label\": \"strive for clarity permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Strive for clarity.\"), mdx(\"p\", null, \"Don't try and be terse for the sake of being terse. Name a variable what it is\\nand does. Reading code should make sense. Make it clear to other developers what\\nthe code does and \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"why\"), \" it does it.\"), mdx(\"h2\", {\n    \"id\": \"be-intentional\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#be-intentional\",\n    \"aria-label\": \"be intentional permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Be intentional.\"), mdx(\"p\", null, \"When you do something, make sure your intentions are clear, and it is geared\\ntowards solving the root problem. Don't let your Pull Requests change 10\\ndifferent things. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"em\", {\n    parentName: \"strong\"\n  }, \"Narrow the scope\")), \".\"), mdx(\"h2\", {\n    \"id\": \"dont-overthink-it\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#dont-overthink-it\",\n    \"aria-label\": \"dont overthink it permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Don't overthink it.\"), mdx(\"p\", null, \"Keep it simple, and make the solution as clear and as simple as possible. No\\ncode is perfect, and code, like any text, is an iterative function that evolves\\nover time.\"), mdx(\"h2\", {\n    \"id\": \"favor-real-use-cases-over-edge-cases\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#favor-real-use-cases-over-edge-cases\",\n    \"aria-label\": \"favor real use cases over edge cases permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Favor real use-cases over edge-cases.\"), mdx(\"p\", null, \"There will \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"always\"), \" be edge-cases and things lurking in the unknown, so make\\nsure to err on the side of \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"real\"), \" use-cases that solve \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"real\"), \" user problems.\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"em\", {\n    parentName: \"strong\"\n  }, \"Don't overthink it\")), \".\"), mdx(\"h2\", {\n    \"id\": \"focus-on-the-user\"\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#focus-on-the-user\",\n    \"aria-label\": \"focus on the user permalink\",\n    \"className\": \"headerLink\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"xmlns\": \"http://www.w3.org/2000/svg\",\n    \"width\": \"24\",\n    \"height\": \"24\",\n    \"fill\": \"none\",\n    \"stroke\": \"currentColor\",\n    \"strokeWidth\": \"2\",\n    \"strokeLineCap\": \"round\",\n    \"strokeLineJoin\": \"round\",\n    \"className\": \"feather feather-link\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\"\n  })), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"d\": \"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\"\n  })))), \"Focus on the user.\"), mdx(\"p\", null, \"The code is meant to solve problems of an end-user. Keep the focus on them\\nprimarily, and secondarily on other developers \\u2014 the users of the code itself.\\nThink first that you're writing this code to solve a real pain a user is\\nfeeling, and you're also writing it so another developer can understand it and\\nimprove it in the future.\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"date":"February 13, 2020","title":"Development Principles","banner":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAABHUlEQVQ4y52Ty1KDMBSG+/7voZuOTndqVW6ScCuxlLYqhbHSIroS3cEIv73BYAZbaVaE88/Hdw5JB3+soiiwb3H1clN0moJ5vq3bzggi0aANGCRqQCA62MitcjXoAeAueCOrEIwhFDbBJWWYhREklSLLMt5yP7AMEnMAN1hAcTzYTy/4Xr227odI07QdMM/zzXNfVNDri+hdy6AWA3MnEBS1qrc2TD6/4Pk+TrtnOOme43Hm4yNJ2s2w/uX47R3iHcHFrYgrQYJCdSxf4/Y/pR5eW2mWDWpaCJ7njZmDhrwlMSw44ymieGtXzvBf55BvJ1xGkKm2MfT8oAIebbgGEsNcQfVfwFaGfMvu9AGGzTAPF8cD+ftab7HhnlfAHxZb7JjI6xRNAAAAAElFTkSuQmCC","aspectRatio":1.5,"src":"/static/5ada961dfaffc7154e52d395f06e44f3/d456e/banner.png","srcSet":"/static/5ada961dfaffc7154e52d395f06e44f3/8005d/banner.png 188w,\n/static/5ada961dfaffc7154e52d395f06e44f3/49959/banner.png 375w,\n/static/5ada961dfaffc7154e52d395f06e44f3/d456e/banner.png 750w,\n/static/5ada961dfaffc7154e52d395f06e44f3/130bf/banner.png 1125w,\n/static/5ada961dfaffc7154e52d395f06e44f3/52e98/banner.png 1500w","sizes":"(max-width: 750px) 100vw, 750px"}}},"tags":["development"]},"timeToRead":1,"fields":{"slug":"/development-principles/"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/development-principles/"}}}