{"id":254,"date":"2024-07-16T18:38:00","date_gmt":"2024-07-16T18:38:00","guid":{"rendered":"https:\/\/permutationcity.co.uk\/bp\/?p=254"},"modified":"2025-01-20T19:24:40","modified_gmt":"2025-01-20T19:24:40","slug":"the-agile-manifesto","status":"publish","type":"post","link":"https:\/\/permutationcity.co.uk\/bp\/2024\/07\/16\/the-agile-manifesto\/","title":{"rendered":"The Agile Manifesto"},"content":{"rendered":"\n<p>I started with <a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/06\/18\/a-brief-history-of-agile\/\">a brief history of Agile<\/a> and\nnow I&#8217;ll look in more detail at the big one <a href=\"https:\/\/agilemanifesto.org\/\">the Agile Manifesto<\/a>.\nMy initial comments were that this was a process rather than a rulebook and\nit would need to involve the right set of people.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-agile-manifesto\">The Agile Manifesto<\/h2>\n\n\n\n<p>They have values:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Individuals and interactions<\/strong> over processes and tools<\/li>\n\n\n\n<li><strong>Working software<\/strong> over comprehensive documentation<\/li>\n\n\n\n<li><strong>Customer collaboration<\/strong> over contract negotiation<\/li>\n\n\n\n<li><strong>Responding to change<\/strong> over following a plan<\/li>\n<\/ul>\n\n\n\n<p>And some principles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.<\/li>\n\n\n\n<li>Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage.<\/li>\n\n\n\n<li>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.<\/li>\n\n\n\n<li>Business people and developers must work together daily throughout the project.<\/li>\n\n\n\n<li>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.<\/li>\n\n\n\n<li>The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.<\/li>\n\n\n\n<li>Working software is the primary measure of progress.<\/li>\n\n\n\n<li>Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.<\/li>\n\n\n\n<li>Continuous attention to technical excellence and good design enhances agility.<\/li>\n\n\n\n<li>Simplicity &#8211; the art of maximizing the amount of work not done &#8211; is essential.<\/li>\n\n\n\n<li>The best architectures, requirements, and designs emerge from self-organizing teams.<\/li>\n\n\n\n<li>At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"individual-vs-processes\">Individual vs processes<\/h2>\n\n\n\n<p>The manifesto values individual over processes and, for me, this could be the first problem.\nI&#8217;ve said before <a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/01\/31\/we-all-make-mistakes\/\">we all make mistakes<\/a>.\nThat means if you leave it to individuals then they are going to make mistakes.\nProcesses can also make mistakes but could then be reviewed and adjusted to avoid that mistake.\nIndividuals are going to keep making mistakes more or less regularly depending on their ability.<\/p>\n\n\n\n<p>For example in the past I ran a project with a set of formatting guidelines.\nNone of the automatic systems had quite the flexibility I was looking for.\nI thought I could do a better job by hand.\nAfter several years on the project I ran an automatic formatter to a comparison.\nIt was able to find places where my manual formatting had failed:\ndouble semi-colons and misplaced white spaces mostly.\nI&#8217;d estimate it was about one mistake every 500 lines or so which I think is pretty good.\nNone of it mattered too much, it&#8217;s just formatting.\nHowever we <em>all make mistakes<\/em> and it affects more than formatting.\nThere will be bugs that affect functionality, bugs that affect security,\ncode that is harder for future developers to understand.\nThere are automatic tools to help with all of these and using them will probably make for better code.\n(Please can people make the automatic formatting tools a bit more flexible though.)<\/p>\n\n\n\n<p>My hope is that when the team reflects on how to become more effective they realise realise automation can help.\nIndividuals need to think about exactly what processes and tools can help the most.\nI don&#8217;t think there is one way best way of writing code.\nIf you&#8217;re using a tool to format or check your code it shouldn&#8217;t just be accepting a pre-existing set of rules.\n<a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/04\/25\/the-power-of-10\/\">NASA has a set of rules<\/a> but\nthose are for NASA, the team needs it&#8217;s own set of rules for it&#8217;s task.\nPicking rules is also not one and done,\nas the project change, as technology changes, as people change the right rules can also change.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"working-software-is-all\">Working software is all<\/h2>\n\n\n\n<p>Working software is a good idea but should it be the only idea? I like the idea of getting software to a &#8220;working&#8221; state. Early on that can just mean the executable opens and then immediate closes. Keeping software in a working state is also good. Throwing a software component away completely and re-writing it from scratch can sound like it will get rid of all the old problems. However, with time, I&#8217;ve realised that it also introduces a whole new set of problems. If possible gradually replacing an old component with a new component can be better. Being able to run it at each stage in-between means you can test it at each stage.<\/p>\n\n\n\n<p>However if you <em>just<\/em> have working software then I think that could be a problem.\nIf you&#8217;re in a situation where all the effort is going in to adding features and\nnone is going in to maintaining the codebase then the project is going to suffer in the long run.\nIt&#8217;s faster to write code well one time than it is to write it badly and then go back and refactor.\nIt might be better to <a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/02\/22\/building-to-throw-away\/\">build one to throw away<\/a>.\nThat way you can find out if a feature is possible without ruining the codebase.\nA project lacking documentation can also be a problem.\nOften there isn&#8217;t information on what exactly project does now or how it came to be that way,\nit&#8217;s frustrating.\nMaybe you can ask the original author but often they&#8217;ve left the team.\nEven after years in my last big project there were sections I had little idea about.\nA few lines or a paragraph in the file header would have made a world of difference.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"customers-collaboration\">Customers collaboration<\/h2>\n\n\n\n<p>A discussion with one of my friends revealed a problem here. The company paying for the software and the company developing the software can have different goals. If you&#8217;re paying then ideally you want to set a budget and then get the most software possible for that. If you&#8217;re developing then you want to make a profit and may want to make the least software possible for that. It&#8217;s not that either party really want to make it hard for the other party but it might happen anyway. If there are any problems during development, which there will be, then there&#8217;s going to be conflict.<\/p>\n\n\n\n<p>An agile process seems most suited when the customer and the developers are on the same side. So either developing something internally or a collaboration where both sides are very close.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"responding-over-planning\">Responding over planning<\/h2>\n\n\n\n<p>Is anyone really going to &#8220;Welcome changing requirements, even late in development&#8221;?\nI suppose if your goal is to make the best system possible then maybe you can change requirements late on.\nI don&#8217;t know if &#8220;welcome&#8221; is the right word though.<\/p>\n\n\n\n<p>I&#8217;m not clear what their idea of a plan is?\nHow much of an outline do you have to do for a system before starting?\nThey&#8217;re pro-change but I&#8217;d like to know more.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"on-balance\">On balance<\/h2>\n\n\n\n<p>I seem to have significant concerns or questions about all of the values here.\nThe bits click most with me are the ones about the team.\nA well motivated team who can all pull in the same direction can do great things.\nHopefully the company can give them the time, space and support to let the team do the job.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I started with a brief history of Agile and now I&#8217;ll look in more detail at the big one the Agile Manifesto. My initial comments were that this was a process rather than a rulebook and it would need to involve the right set of people. The Agile Manifesto They have values: And some principles: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[34],"tags":[16,11],"class_list":["post-254","post","type-post","status-publish","format-standard","hentry","category-review","tag-methodologies","tag-planning"],"_links":{"self":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/comments?post=254"}],"version-history":[{"count":2,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/254\/revisions"}],"predecessor-version":[{"id":420,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/254\/revisions\/420"}],"wp:attachment":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/media?parent=254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/categories?post=254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/tags?post=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}