{"id":245,"date":"2024-06-18T18:42:00","date_gmt":"2024-06-18T18:42:00","guid":{"rendered":"https:\/\/permutationcity.co.uk\/bp\/?p=245"},"modified":"2024-06-17T17:48:42","modified_gmt":"2024-06-17T17:48:42","slug":"a-brief-history-of-agile","status":"publish","type":"post","link":"https:\/\/permutationcity.co.uk\/bp\/2024\/06\/18\/a-brief-history-of-agile\/","title":{"rendered":"A brief history of Agile"},"content":{"rendered":"\n<p>To deal with\n<a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/05\/14\/forever-change\/\">endless change<\/a>\nthe industry seems to have settled on\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Agile_software_development\">Agile software development<\/a>.\nHowever the original definition of Agile coming from the\n<a href=\"https:\/\/agilemanifesto.org\/\">Agile Manifesto<\/a>\nin 2001 hasn&#8217;t really survived.\nAll these techniques call themselves agile but often it&#8217;s just a popular label rather than something deeper.\nDealing with change is not new and existed before the word Agile.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"before-the-manifesto\">Before the manifesto<\/h2>\n\n\n\n<p>The <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Waterfall_model\">Waterfall model<\/a>\nis the classic heavyweight engineering method.\nThis has a strict separation between a series of phases:\nrequirements capture, analysis, design, coding, testing, operations.\nEach phase should be completed before moving on to the next.\nHowever if problems occur or changes are required at later stages then\nthis necessitates returning to and repeating earlier phases.\nAny changes are likely to result in a much longer and more expensive project.\nThis technique favours well understood technology with clear goals for it&#8217;s use.\nEven some of the originators of the model acknowledged problems with the dogmatic application of it.<\/p>\n\n\n\n<p>More <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Iterative_and_incremental_development\">incremental approaches<\/a>\ntake phases of the waterfall model and turn it in to a cycle,\nI learned this as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Spiral_model\">spiral model<\/a>.\nA project is the result of many cycles.\nEarly ones will focus more on capture and design but may include coding.\nLater ones would focus more on coding and testing but may still include design.\nBy including some coding early on their is the possibility of discovering problems early.\nBy including some design later on it encourages leaving flexibility to cope with changes that may be required.\nThis technique is more open to less understood technology.<\/p>\n\n\n\n<p>Even more flexible approaches were taken in\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Extreme_programming\">extreme programming<\/a>.\nHere the expected that customers will change their requirements over time as the problem is better understood.\nTherefore the method concentrates on high quality but flexible coding using:\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Pair_programming\">pair programming<\/a>,\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Code_review\">code reviews<\/a>,\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Unit_testing\">unit testing<\/a> and\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/You_aren%27t_gonna_need_it\">sticking to essential code<\/a>.\nA short release cycle gives high visibility for progress allowing for course corrections.\nHowever with an extreme focus on the short term this can miss out on long term savings\nthat planning and investment in code can bring.<\/p>\n\n\n\n<p>That&#8217;s just a couple, there were others:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Rapid_application_development\">Rapid application development<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.m.wikipedia.org\/w\/index.php?title=Unified_process\">Unified process<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Dynamic_systems_development_method\">Dynamic systems development method<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Feature-driven_development\">Feature driven development<\/a><\/li>\n<\/ul>\n\n\n\n<p>They mix together practices, iteration and cycle times in different ways,\nplus a few extra details for each method.\nThen a bunch of people came together with experience of these and came up with the manifesto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-agile-manifesto\">The Agile Manifesto<\/h2>\n\n\n\n<p>The <a href=\"https:\/\/agilemanifesto.org\/\">Agile Manifesto<\/a> starts with some 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 <a href=\"https:\/\/agilemanifesto.org\/principles.html\">twelve principles<\/a> with a similar feel to extreme programming.\nThe embrace change, short development cycles, close working relationships and simple working software.<\/p>\n\n\n\n<p>Deciding to follow the Agile Manifesto doesn&#8217;t give you a rulebook.\nIt&#8217;s the start of a journey and not the end.\nThe team and the customer will have to work together, continuously,\nin order to work out what development will look like.\nTo me this sounds as though it needs the right team of people and the right customers.<\/p>\n\n\n\n<p>However without process and tools,\nwhich it doesn&#8217;t rule out but does de-prioritise,\nthis is a hard to sell to companies.\nLiterally companies are not going to pay much for something that can be printed on a couple of sheets of paper.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"after-the-manifesto\">After the manifesto<\/h2>\n\n\n\n<p>My first proper experience of Agile was\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Scrum_(software_development)\">Scrum<\/a>.\nIn contrast to the Agile Manifesto&#8217;s rejection of processes Scrum has many.\nYou are expected to have daily <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Stand-up_meeting\">stand-ups<\/a>,\n<a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Retrospective\">retrospectives<\/a> and sprint planning.\nSome people have specific roles, product owner and scrum master, with specific responsibilities.\nWorking time is divided up into sprints which must occur on an fixed cycle.\nYou might well end up using specific tools in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Jira_(software)\">Jira<\/a>\nto help with all this.\nIt all tells a story that if you&#8217;re not doing it the Scrum way then it&#8217;s not being done right.\nThat goes along with the accredited courses that teach you the Scrum way of doing things.\nThe <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Scrum_(development)#Product_backlog\">product backlog<\/a>\nprovides the mechanism by which future tasks can be refined and updated as new information becomes available.<\/p>\n\n\n\n<p>I&#8217;ve also had a little experience of <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Kanban_(development)\">Kanban<\/a> where one of the keys to have a <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Kanban_board\">board<\/a> that can visualise current situation. Work is restricted more by the number of tasks in each state of play than specific cycle times. Expect to see many similar tools to Scrum perhaps with a different focus.<\/p>\n\n\n\n<p>Again, that&#8217;s just a couple.\nThe older methods are still out there,\nsometimes with a new coat of paint.\nSearching around I can also see:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.fastagile.io\/\">Fluid Scaling Technology (FAST)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Scaled_agile_framework\">Scaled Agile Framework (SAFe)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.atlassian.com\/agile\/agile-at-scale\/less\">Large-Scale Scrum (LeSS)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Disciplined_agile_delivery\">Disciplined Agile<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.atlassian.com\/agile\/agile-at-scale\/spotify\">Spotify Model<\/a><\/li>\n<\/ul>\n\n\n\n<p>As you can see they often want to have a good acronym.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"in-the-end\">In the end<\/h2>\n\n\n\n<p>I&#8217;m not an expert in Agile,\njust someone who wanted some background in order to make look for better practices.<\/p>\n\n\n\n<p>A lot of what is called Agile today seems to be down to marketing. The future was, apparently, Agile so any new method you try to sell has to have that branding. Then some projects don&#8217;t work and people start to wonder if Agile is the problem, despite all the different flavours that are out there.<\/p>\n\n\n\n<p>People want to deal with change but also want to have a timeline for development.\nEven without change <a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/01\/29\/time-estimation-is-hard\/\">estimation is hard<\/a>.\nI don&#8217;t think this is a solved problem and it feels difficult to research as well.\nA lot of promises but it&#8217;s hard to tell if they will pan out.\nAt least I&#8217;ve got a few things to compare anything new against now.\nHopefully I can come back and explore some of these in more detail.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To deal with endless change the industry seems to have settled on Agile software development. However the original definition of Agile coming from the Agile Manifesto in 2001 hasn&#8217;t really survived. All these techniques call themselves agile but often it&#8217;s just a popular label rather than something deeper. Dealing with change is not new and [&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":[1],"tags":[16,11],"class_list":["post-245","post","type-post","status-publish","format-standard","hentry","category-general","tag-methodologies","tag-planning"],"_links":{"self":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/245","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=245"}],"version-history":[{"count":1,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/245\/revisions"}],"predecessor-version":[{"id":246,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/245\/revisions\/246"}],"wp:attachment":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/media?parent=245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/categories?post=245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/tags?post=245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}