{"componentChunkName":"component---src-templates-generic-template-js","path":"/lectures/lecture10-agile","webpackCompilationHash":"041090671d318979d692","result":{"data":{"markdownRemark":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"h1","properties":{"id":"development-methodologies-agile-scrum-and-more"},"children":[{"type":"element","tagName":"a","properties":{"href":"#development-methodologies-agile-scrum-and-more","ariaLabel":"development methodologies agile scrum and more permalink","className":["anchor"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Development Methodologies: Agile, Scrum and more"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"revisiting-waterfall"},"children":[{"type":"element","tagName":"a","properties":{"href":"#revisiting-waterfall","ariaLabel":"revisiting waterfall permalink","className":["anchor"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Revisiting Waterfall"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Recall that Waterfall is an implementation of a larger set of \"Plan and\nDocument\" development methodologies. In Waterfall, development follows a\nsequence of 5 (cascading) steps:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Requirements"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Design"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Development"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Testing"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Operations"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Some of the goals are to: 1) catch errors early (and more cheaply) before they\nmanifest in subsequent phase, and 2) provide extensive documentation as a\ndeliverable (to facilitate maintenance and on-boarding new team members)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The problem is reacting to change (e.g. new requirements or new technologies)\nafter that phase is completed."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"agile"},"children":[{"type":"element","tagName":"a","properties":{"href":"#agile","ariaLabel":"agile permalink","className":["anchor"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Agile"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The Agile philosophy, as described in "},{"type":"element","tagName":"a","properties":{"href":"http://agilemanifesto.org"},"children":[{"type":"text","value":"The Manifesto of the Agile Alliance\n(2001)"}]},{"type":"text","value":", was a response to those \"heavy-weight\"\nprocesses. The goal is was to define principles that enable development teams\nto work (more) quickly and be responsive to change."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The Manifesto:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"blockquote","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"We are uncovering better ways of developing software by doing it and helping\nothers do it.  Through this work we have come to value:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Individuals and interactions"}]},{"type":"text","value":" over processes and tools"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Working software"}]},{"type":"text","value":" over comprehensive documentation"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Customer collaboration"}]},{"type":"text","value":" over contract negotiation"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"Responding to change"}]},{"type":"text","value":" over following a plan"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"That is, while there is value in the items on the right, we value the items on\nthe left more."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Note that Agile is a set of principles, not a process. Scrum, Extreme\nProgramming, etc. are \"implementations\" of the Agile philosophy. A common\ncriticism is that the principles and values have been lost in capital \"A\"\nAgile, e.g. the consulting business that has emerged around agile approaches. A\ndefinition of lowercase \"a\" agility I found relevant (from "},{"type":"element","tagName":"a","properties":{"href":"https://www.youtube.com/watch?v=a-BOSpxYJ9M"},"children":[{"type":"text","value":"Dave\nThomas"}]},{"type":"text","value":"):"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Find out where you are,"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Take a small step towards your goal,"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Adjust your understanding based on what you learned, and"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Repeat"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"and, when faced with two or more alternatives that deliver roughly the same\nvalue, choose the path that makes future change easier."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"scrum"},"children":[{"type":"element","tagName":"a","properties":{"href":"#scrum","ariaLabel":"scrum permalink","className":["anchor"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Scrum"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The "},{"type":"element","tagName":"a","properties":{"href":"http://www.scrumguides.org/scrum-guide.html"},"children":[{"type":"text","value":"Scrum Guide"}]},{"type":"text","value":" provides a\ncomprehensive overview of Scrum and will be our reference. Although we will\nimplement Scrum in class, it is just one implementation of Agile (XP or eXtreme\nProgramming is another). And despite what the competing certificate programs\nwould argue, there is no one way to do Scrum. Everyone adapts the processes to\nbest fit their team and project. "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"evaluating-agility"},"children":[{"type":"element","tagName":"a","properties":{"href":"#evaluating-agility","ariaLabel":"evaluating agility permalink","className":["anchor"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Evaluating Agility"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Your project is also about process (not just product). That is we are\npracticing the formal development processes that we have been learning about\nall semester. Thus we will be evaluating you and your team on how well you are\nimplementing Agile practices. That evaluation is based on metrics derived from\nthe SW development literature."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In "},{"type":"element","tagName":"a","properties":{"href":"https://link.springer.com/chapter/10.1007%2F3-540-45672-4_7"},"children":[{"type":"text","value":"\"Turning the Knobs: A Coaching Pattern for XP through Agile\nMetrics\""}]},{"type":"text","value":" the\nauthors provides a measure of XP practices (also relevant to our processes).\nEach question is answered on a scale of 1-10. If you are implementing agile\nprocesses, your self-assessment should have average scores on the order of 7-8.  "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Two people work together at one computer. They trade turns typing or reviewing and thinking about the big picture."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"We deliver more frequent, smaller iterations to customers."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"When working on a big set of code I sync up or check in as follows [...]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Do we have test cases and automated drivers for each product class?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"We move items in and out of the plan based on updated customer needs while keeping the dates steady."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"We have access to our customer and get feedback from her."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"We rewrite or redesign code that smells bad or will help position us for new requirements."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"We keep the design simple now so we can change it as needed in the future."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Do you have and follow enough standards so you can read and change each other’s code? Have ’em? Detail? not too much, not too little, [...]"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"People can change each other’s code. We don’t have to wait for the specialist."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"So you have naming conventions for your objects?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"Do people work at a rate that’s effective for them over the long run?"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The author of "},{"type":"element","tagName":"a","properties":{"href":"https://dl.acm.org/citation.cfm?id=2889182"},"children":[{"type":"text","value":"\"How surveys, tutors, and software help to assess Scrum adoption\nin a classroom software engineering\nproject\""}]},{"type":"text","value":" identify several metrics\nthat they use to evaluate \"agility\" in student projects. Hopefully these\nmetrics provide some examples of behaviors to avoid, such as many commits in\nthe last day/hour of the sprint. "}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ol","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Amount of user story a developer is assigned on average per day."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"The average amount of user stories that were assigned to a developer in a\nsprint (i.e. #sprintUS / #devs). This is without regard to the complexity\nof each story. A good visualization for this is the amount of user stories\na developer has to accomplish on a full work day on average (i.e.\n(#sprintUS / #devs) / #workDays). If this is significantly lower than\naverage / previously, the stories possibly are too large and should be\nsplit, to allow easier parallel work and future estimation. If this number\nis high (especially higher than a critical threshold [10?]), it is possible\nthat nonfunctional requirements (e.g. tests, design requirements,\ndeployment, “definition of done”) and communication and context  switching\noverhead were underrated and there are too many stories in the sprint.'"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Commits within 30 minutes sprint deadline."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Amount of commits during the last day / last week of the sprint. If\neverything was last minute, the Scrum meetings were ineffective, due to\nlack of content. Furthermore, blockers for / from other teams could not be\ncommunicated.'"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"User stories that are still open in previous sprints."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Amount of user stories in previous sprints that are not closed. It is\nlikely that these user stories were worked on, but were simply not closed\ndue to negligence or were “backup” stories that  weren't of high priority.\nThese stories should be closed (or moved) to promote better overview or\nneed special attention if they really were forgotten."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"User stories that were in the backlog of 3 or more sprints."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A user story that is assigned to the sprint backlog of more than 3 sprints,\nwith or without commits referencing it. The more never-ending stories there\nare in a project, the more likely it is that blockers and dependencies will\nbecome an issue."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Amount of commits per Developer."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Commit early, commit often\" is a helpful slogan when developing in large\nteams. In the words of Jeff Atwood (of StackOverflow fame) \"if the code\nisn't checked into source control, it doesn't exist\" ["},{"type":"element","tagName":"a","properties":{"href":"http://blog.codinghorror.com/check-in-early-check-in-often/"},"children":[{"type":"text","value":"Atwood,\n2008"}]},{"type":"text","value":"].  It\nallows coworkers to build on functionality, makes version control easier\nand can help prevent \"Integration Hell\"\n["},{"type":"element","tagName":"a","properties":{"href":"http://c2.com/cgi/wiki?IntegrationHell"},"children":[{"type":"text","value":"Jeffries"}]},{"type":"text","value":"] further down the line."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pull requests that were closed within 30 minutes without comments"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pull requests can be a tool to help inform team members what functionality\nis added in a collection of commits. It allows team members and\nstakeholders to comment and perform code review. Furthermore, continuous\nintegration services can run the proposed changes, making sure all tests\npass. If pull requests are closed in a short timespan, many of these\npossibilities remain unused."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Code is edited heavily by few developers"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Collective Code Ownership, the convention, that every team member is not\nonly allowed, but in fact has a positive duty, to make changes to any code\nfile as necessary, is part of agile development (especially XP). It can\nhelp reduce the risk that the absence of a few developer will stall work on\na certain area of code. Furthermore it can help prevent \"Conway's Law\",\nhelps share technical knowledge between developers and encourages each\ndeveloper to feel responsible for the quality of the whole."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"User stories that are too large."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"User stories should be small enough to get a quick overview of the work to\nbe done, but should contain enough information to be estimatable by the\ndevelopers. It is sometimes stated that user stories should fit on an index\ncard. The issues below have double the average length of issues in the\nselected sprint or have double the amount of checkboxes of other stories.\nBoth of these can be an indicator that a user story is too large and could\nbe split. Smaller user stories can improve the ability to plan as they are\nless likely to deviate from the estimation and sprint backlogs can be\nfilled on a more granular basis."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Commits that increased code complexity without increasing code coverage."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Having a high percentage of code covered by tests is essential for ensuring\nthe system is thoroughly tested. When committing changes that significantly\nincrease the complexity of the code base (>0.5), tests should be committed\nas well, increasing the code coverage. If this is not the case for a high\npercentage of commits, this might be a sign that writing tests and code\ncoverage metrics should be paid more attention to."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Issues which are suspected duplicates."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Issues with comments that point to them being duplicates. User stories that\nduplicate features of previous user stories can lead to features being\nimplemented multiple times by different teams."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}},"frontmatter":{"path":"/lectures/lecture10-agile","title":"Lecture 10 - Agile Development","name":"Lecture 10 - Agile"},"parent":{"__typename":"File","id":"3755cb03-2ca7-53cd-9880-98d5fb684874","name":"lecture10-agile","modifiedTime":"Oct 9 2019 20:02"}}},"pageContext":{"isCreatedByStatefulCreatePages":false}}}