{
    "componentChunkName": "component---src-templates-module-js",
    "path": "/courses/devops/devops-introduction/",
    "result": {"data":{"module":{"frontmatter":{"duration":"3 hours","slug":"/courses/devops/devops-introduction/","title":"Introduction to DevOps"},"course":{"frontmatter":{"title":"DevOps","slug":"/courses/devops/"}},"slides":[{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/0/","title":"DevOps"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/1/","title":"Why DevOps?"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/2/","title":"DevOps life cycle"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/3/","title":"Site Reliability Engineering (SRE) implements DevOps"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/4/","title":"SRE"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/5/","title":"Site Reliability Engineering (SRE) tools"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/6/","title":"Back to the history"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/7/","title":"Agile vs Waterfall"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/8/","title":"The Agile Manifesto"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/9/","title":"Agile Principles"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/10/","title":"Scrum"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/11/","title":"Scrum"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/12/","title":"Version management with SemVer"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/13/","title":"Naming"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/14/","title":"Naming: ordering multiple names"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/15/","title":"Naming: conflicting rules"}},{"frontmatter":{"slug":"/courses/devops/devops-introduction/slides/16/","title":"Resources"}}],"parent":{"body":"var _excluded = [\"components\"];\n\nfunction _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/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"duration\": \"3 hours\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"The DevOps culture focuses on one goal throughout the entire software delivery lifecycle (not just development and operations): the rapid implementation of stable, high-quality software, from concept to customer or user. The automation of software development, testing, and deployment is a recognized key factor for DevOps. Automation enables faster software implementation and ensures the solutions have the quality, security, and stability they need.\"), mdx(\"h2\", null, \"DevOps\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"DevOps\"), \" is a culture of human communication, technical processes, and tools\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"DevOps\"), \" is breaking barriers between Developers and Operations by automating the processes, so that they can build, test, and release software faster and more reliably.\")), mdx(\"h2\", null, \"Why DevOps?\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Faster Time To Market\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Recovery time is reduced\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Problems are easier to detect\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"System is overall more stable\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"(Most) Repetitive tasks are automated\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You have less and less time available as the workload increases. Automation is essential\")), mdx(\"h2\", null, \"DevOps life cycle\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"512px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/715848d7224989881c444d8faa628b85/36dd4/devops.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"56.44171779141104%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAGQAAAQUAAAAAAAAAAAAAAAAAAAECAwQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAHQSMR5bLf/xAAZEAADAQEBAAAAAAAAAAAAAAABAgMABBL/2gAIAQEAAQUCQCwmvvChXVUC/QoUSUKn/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAEhAhL/2gAIAQMBAT8By31CH//EABcRAQEBAQAAAAAAAAAAAAAAAAEAAhH/2gAIAQIBAT8BcgXb/8QAGxABAAIDAQEAAAAAAAAAAAAAAQARAiEiMZH/2gAIAQEABj8CVX35OslqOJ1TNas3Bx1Cif/EABoQAAMBAAMAAAAAAAAAAAAAAAABESExUaH/2gAIAQEAAT8hYnPGODVs4o/S+IhWxCa9I+ReFPHGIqV0/9oADAMBAAIAAwAAABBnz//EABkRAAMAAwAAAAAAAAAAAAAAAAABESExQf/aAAgBAwEBPxBCesUbrR//xAAZEQACAwEAAAAAAAAAAAAAAAAAASExgfH/2gAIAQIBAT8QXXvSVo//xAAcEAEBAQACAwEAAAAAAAAAAAABEQBBUSExYXH/2gAIAQEAAT8Qr8ifUfMk1ZUfHbLmPCx/M/hMhAV6zCDiIUvOFwALmrzv/9k=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"DevOps life cycle\",\n    \"title\": \"DevOps life cycle\",\n    \"src\": \"/static/715848d7224989881c444d8faa628b85/36dd4/devops.jpg\",\n    \"srcSet\": [\"/static/715848d7224989881c444d8faa628b85/d2f63/devops.jpg 163w\", \"/static/715848d7224989881c444d8faa628b85/c989d/devops.jpg 325w\", \"/static/715848d7224989881c444d8faa628b85/36dd4/devops.jpg 512w\"],\n    \"sizes\": \"(max-width: 512px) 100vw, 512px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"Site Reliability Engineering (SRE) implements DevOps\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"DevOps\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"SRE\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Reduce organization silos\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Using the same tools and techniques\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Accept failure as normal\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Have a formula for balancing accidents and failures against new releases\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Implement gradual change\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Encourage moving quickly by reducing costs of failure\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Leverage tooling & automation\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Minimizing manual systems work to focus on efforts that bring long-term value to the system\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Measure everything\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Measuring availability, uptime, outages, toil, etc.\")))), mdx(\"h2\", null, \"SRE\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service Level Indicators (SLI)\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Metrics over time (latency, throughput of requests per second, or failures per request)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service Level Objectives (SLO)\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Targets for the cumulative success of SLIs over a period (\\\"last 30 days\\\" or \\\"this quarter\\\")\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Service Level Agreement (SLA)\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Promise by a service provider to a service customer about availability. Usually less than SLO.\")), mdx(\"h2\", null, \"Site Reliability Engineering (SRE) tools\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\\"Everything should be completely automated.\\\"\")), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"650px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/a86c55ee683e9c6d4c6d2e2a67187c07/72e01/SRE-tools.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"56.44171779141104%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAEDBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAepdRVH/xAAaEAACAwEBAAAAAAAAAAAAAAAAAQIREjFB/9oACAEBAAEFAsoyiCVUeR5//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFxAAAwEAAAAAAAAAAAAAAAAAACAxIf/aAAgBAQAGPwKEMT//xAAZEAADAQEBAAAAAAAAAAAAAAAAAREhUTH/2gAIAQEAAT8hjX2acCGShHs0YWD/2gAMAwEAAgADAAAAEPPP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFxEAAwEAAAAAAAAAAAAAAAAAARAhMf/aAAgBAgEBPxA3V//EABoQAQEAAwEBAAAAAAAAAAAAAAERACFBMXH/2gAIAQEAAT8QdAq+qb3k9zR2ZPgTzFWhFjPMe3xwFnWu8//Z')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"SRE tools\",\n    \"title\": \"SRE tools\",\n    \"src\": \"/static/a86c55ee683e9c6d4c6d2e2a67187c07/6aca1/SRE-tools.jpg\",\n    \"srcSet\": [\"/static/a86c55ee683e9c6d4c6d2e2a67187c07/d2f63/SRE-tools.jpg 163w\", \"/static/a86c55ee683e9c6d4c6d2e2a67187c07/c989d/SRE-tools.jpg 325w\", \"/static/a86c55ee683e9c6d4c6d2e2a67187c07/6aca1/SRE-tools.jpg 650w\", \"/static/a86c55ee683e9c6d4c6d2e2a67187c07/7c09c/SRE-tools.jpg 975w\", \"/static/a86c55ee683e9c6d4c6d2e2a67187c07/72e01/SRE-tools.jpg 1024w\"],\n    \"sizes\": \"(max-width: 650px) 100vw, 650px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"Back to the history\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Companies were focused on planning and documenting their software development cycles\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Agile Manifesto in 2001 - \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://agilemanifesto.org/\"\n  }, \"https://agilemanifesto.org/\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Agile principles were applied to software development\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"In 2014, we started speaking about DevOps (in \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://landing.google.com/sre/books/\"\n  }, \"Site Reliability Engineering\"), \")\")), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.atlassian.com/agile/manifesto\"\n  }, \"Read more\")), mdx(\"h2\", null, \"Agile vs Waterfall\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"650px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/65dcb84d5108c09ee4126ef682f4c3ef/981a6/waterfall-and-agile-methods.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"75.4601226993865%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHv5sShf//EABgQAAIDAAAAAAAAAAAAAAAAAAABICEx/9oACAEBAAEFAjBXD//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABgQAAMBAQAAAAAAAAAAAAAAAAABESEx/9oACAEBAAE/ITOINA0JW64JRH//2gAMAwEAAgADAAAAECfP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAHBABAAMAAgMAAAAAAAAAAAAAAQARITFhUXGh/9oACAEBAAE/EGt2Glj8h2np3hiLYpUDLodxqFt81zP/2Q==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Agile vs Whaterfall\",\n    \"title\": \"Agile vs Whaterfall\",\n    \"src\": \"/static/65dcb84d5108c09ee4126ef682f4c3ef/6aca1/waterfall-and-agile-methods.jpg\",\n    \"srcSet\": [\"/static/65dcb84d5108c09ee4126ef682f4c3ef/d2f63/waterfall-and-agile-methods.jpg 163w\", \"/static/65dcb84d5108c09ee4126ef682f4c3ef/c989d/waterfall-and-agile-methods.jpg 325w\", \"/static/65dcb84d5108c09ee4126ef682f4c3ef/6aca1/waterfall-and-agile-methods.jpg 650w\", \"/static/65dcb84d5108c09ee4126ef682f4c3ef/981a6/waterfall-and-agile-methods.jpg 761w\"],\n    \"sizes\": \"(max-width: 650px) 100vw, 650px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"The Agile Manifesto\"), mdx(\"p\", null, \"We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Individuals and interactions\"), \" over processes and tools\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Working software\"), \" over comprehensive documentation\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Customer collaboration\"), \" over contract negotiation\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Responding to change\"), \" over following a plan\")), mdx(\"p\", null, \"That is, while there is value in the items on the right, we value the items on the left more.\"), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://agilemanifesto.org/\"\n  }, \"Source\")), mdx(\"h2\", null, \"Agile Principles\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Customer satisfaction is a top priority\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Project requirements can change\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Do frequent deliveries\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Business & Devs must collaborate throughout the project\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Project actors must be motivated\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Prefer face-to-face conversations\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A working software is the main measure of progress\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Project pace should be sustainable and be maintained\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Pay attention to technical aspects and design\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Keep it simple\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Teams should be self-organized\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Reflect on the progress and process used regularly\")), mdx(\"h2\", null, \"Scrum\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Scrum is a framework:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Lightweight\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Simple to understand\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Difficult to master\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Used for:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"developing\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"delivering\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"sustaining complex products\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Consists of:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Scrum Teams and their roles\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"events\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"artifacts\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"rules\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Built on:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Transparency\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Significant aspects of the process must be visible to those responsible for the outcome\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Inspection\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Scrum users must frequently inspect Scrum artifacts and progress toward a Sprint Goal to detect undesirable variances\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Adaptation\")), mdx(\"h2\", null, \"Scrum\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"image/scrum-framework.png\",\n    \"alt\": \"Scrum Framework\"\n  })), mdx(\"h2\", null, \"Version management with SemVer\"), mdx(\"p\", null, \"Formula: \", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"MAJOR.MINOR.PATCH-LABEL\")), mdx(\"p\", null, \"Examples:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"text\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-text\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"2.3.1\\n1.0.0-alpha\\n1.0.0-beta\"))), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"MAJOR\"), \" - version when you make incompatible API changes,\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"MINOR\"), \" - version when you add functionality in a backward compatible manner, and\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"PATCH\"), \" - version when you make backward compatible bug fixes.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"LABEL\"), \" - for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.\")), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://semver.org/\"\n  }, \"Read more about SemVer\")), mdx(\"h2\", null, \"Naming\"), mdx(\"p\", null, \"The company is responsible to define a set of naming rules to ensure the integrity and the coherence of the system. The purpose is to guaranty to business and technical users the comprehension of names while enforcing coherent conventions, structures and names. \"), mdx(\"p\", null, \"Attribution of names must:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"be meaningful\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"be comprehensible without external explanations\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"reflects the targeted resource usages\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"differentiates itself from other names as much as possible\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"maximizes full name when possible\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"uses the same abbreviation\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"be singular\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"be as short as possible while preserving the above\")), mdx(\"h2\", null, \"Naming: ordering multiple names\"), mdx(\"p\", null, \"In case a name includes multiple names of different scopes, it must be ordered from the larger scope to the smallest one. Thinking about how you would organize it in a folder hierarchy.\"), mdx(\"p\", null, \"For example, you have multiple configuration files in your project \", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"myproj\"), \":\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"for different environments (\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"dev\"), \" for development, \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"prod\"), \" for production)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"for different components (\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"db\"), \" for a database, \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"app\"), \" for an application)\")), mdx(\"p\", null, \"The best practice, in this case, would be to choose the format:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"text\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-text\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"project_component_environment\"))), mdx(\"p\", null, \"The list of files would be like this:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"text\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-text\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"myproj_app_dev\\nmyproj_app_prod\\nmyproj_db_dev\\nmyproj_db_prod\"))), mdx(\"h2\", null, \"Naming: conflicting rules\"), mdx(\"p\", null, \"When you have conflicting rules, you must take the following priorities:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"first, you apply the rules of the community/ecosystem\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"then, the rules of the company/project\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"then, you own rules\")), mdx(\"p\", null, \"Examples:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"MyComponent.class\"), \" and not \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"My_Component.class\"), \" assuming the language is Java\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"snake_case\"), \" instead of \", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kebab-case\"), \" when naming files in the documentation of a project assuming it is applied to your company or this project\")), mdx(\"h2\", null, \"Resources\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.altexsoft.com/blog/engineering/devops-principles-practices-and-devops-engineer-role/\"\n  }, \"DevOps: Principles, Practices, and DevOps Engineer Role\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.scrumguides.org/scrum-guide.html\"\n  }, \"The Scrum Guide\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://medium.com/@alexbmeng/site-reliability-engineering-principals-fd52229bfcd6\"\n  }, \"Site Reliability Engineering Principles\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://landing.google.com/sre/books/\"\n  }, \"Site Reliability Engineering books\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://newsletter.pragmaticengineer.com/p/project-management-in-tech\"\n  }, \"How Big Tech Runs Tech Projects and the Curious Absence of Scrum\"), \" (\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://news.ycombinator.com/item?id=28669514\"\n  }, \"HN\"), \")\")));\n}\n;\nMDXContent.isMDXComponent = true;"}}},"pageContext":{}},
    "staticQueryHashes": []}