{"id":944,"date":"2017-03-18T13:30:32","date_gmt":"2017-03-18T13:30:32","guid":{"rendered":"http:\/\/www.seonthemon.com\/wp351\/?p=944"},"modified":"2017-03-18T13:46:46","modified_gmt":"2017-03-18T13:46:46","slug":"agile-first-principles","status":"publish","type":"post","link":"https:\/\/www.seonthemon.com\/wp351\/2017\/03\/18\/agile-first-principles\/","title":{"rendered":"Agile, by First Principles"},"content":{"rendered":"<p>Agile gives me the warm and fuzzy, because like all good systems it can be characterized by a small set of rules, first principles, from which we can derive all other relevant lessons.<\/p>\n<p><a href=\"http:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/first-principles.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-946 size-full\" src=\"http:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/first-principles.png\" alt=\"first principles\" width=\"666\" height=\"205\" srcset=\"https:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/first-principles.png 666w, https:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/first-principles-300x92.png 300w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><\/a><\/p>\n<p>Arguably, the <a href=\"http:\/\/agilemanifesto.org\/\">Agile Manifesto<\/a>, is the most famous attempt to lay out the first principles of the agile approach to software development. \u00a0The Agile Manifesto comes in two forms &#8211; an elegant and concise one, which is shown below, and a <a href=\"http:\/\/agilemanifesto.org\/principles.html\">slightly longer<\/a>, more expository one\u00a0that I will leave you to discover.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-18-at-7.42.35-AM.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-950\" src=\"http:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-18-at-7.42.35-AM-300x158.png\" alt=\"Shorter Agile Manifesto\" width=\"400\" height=\"211\" srcset=\"https:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-18-at-7.42.35-AM-300x158.png 300w, https:\/\/www.seonthemon.com\/wp351\/wp-content\/uploads\/2017\/03\/Screen-Shot-2017-03-18-at-7.42.35-AM.png 627w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<h2>The problem with first principles<\/h2>\n<p>First principles are distillations of wisdom that practitioners gained only after a lot of experience. \u00a0 For that very reason, they often make little sense to the newbie engineer. \u00a0We read the words and some of us ask, &#8220;Really? \u00a0Why ?&#8221;. \u00a0We don&#8217;t have an answer. \u00a0I know that is how it was for me. \u00a0 Eventually, I acquired the critical mass of hard knocks that were necessary to see the inevitability of those first principles.<\/p>\n<p>These days I seem to practice Agile almost instinctively. \u00a0 So much so, that I struggle to explain what I am doing, and why I am doing it. \u00a0 In trying to unpack how I go about software development, \u00a0I tried to write down the working set of principles that I work by.<\/p>\n<p>Once the words were on paper, I could see how they derive from the Agile Manifesto. \u00a0It reminded of a line from <a href=\"http:\/\/www.imdb.com\/title\/tt0083987\/quotes\">Gandhi<\/a>, &#8220;I&#8217;ve traveled so far. And all I&#8217;ve done is come back&#8230; home.&#8221;<\/p>\n<h2>A very personal agile manifesto<\/h2>\n<p>Below, you will find my working principles for\u00a0agility. \u00a0Notice that my words don&#8217;t exactly match those of the Agile Manifesto. \u00a0That is as it should be. \u00a0My own personal manifesto, so to speak, is necessarily colored by my particular work experiences, and my personal strengths, weaknesses and prejudices.<\/p>\n<p>Again, let me emphasize, this is not meant to be consumed blindly. \u00a0Ask yourself why this is valid. Think about what implications these ideas have. \u00a0Don&#8217;t be surprised if you do not understand or even agree with some of these. \u00a0 This works for me; this, among other things, makes me an effective IT worker.<\/p>\n<ul>\n<li>The only acceptable &#8216;status&#8217; is working software that delivers business value.\n<ul>\n<li>Don&#8217;t tell me the status. Prove it.\n<ul>\n<li>Where is the code? Let me read the code. Let me see it running.<\/li>\n<li>Where is the test? Is the test correct? Is it adequate? Let me see the test working.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>The earlier you know the status the better.\n<ul>\n<li>Short iterations.<\/li>\n<li>Frequent feedback.<\/li>\n<li>Continuous integration.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>If you can&#8217;t answer the question, &#8220;what is done, and what remains&#8221;, in terms that the business understands, you&#8217;ve got nothing.\n<ul>\n<li>User stories, in strictly business terms.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Change is the only constant.\n<ul>\n<li>You will never get correct nor complete business requirements at any one instant. \u00a0The same applies to solution specifications. \u00a0Roll with it.<\/li>\n<li>No design nor solution will ever be right the first time. \u00a0Roll with it.<\/li>\n<li>Priorities will change. \u00a0Roll with it.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Information is indispensable. \u00a0 Documentation, and meetings are incidental.\n<ul>\n<li>Putting words on paper, and communicating are two different things.<\/li>\n<li>Just because you talk, talk, and talk, does not mean you are communicating anything useful.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>If you are not putting software in production, for business to do business with, you&#8217;ve got nothing.\n<ul>\n<li>All the process in the world, all the fancy tools, the &#8220;best and brightest&#8221; people, mean nothing, if you are not delivering.<\/li>\n<li>The answer to every question of the kind, &#8220;is this the correct process, is this Scrum, is this Agile&#8221;, is one simple thing.\n<ul>\n<li>If it helps you deliver, yes. \u00a0If you are not delivering, none of it matters.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>&#8220;<a href=\"https:\/\/en.wikiquote.org\/wiki\/Helmuth_von_Moltke_the_Elder\">No battle plan survives contact with the enemy<\/a>&#8220;.\n<ul>\n<li>Human beings are unreliable. \u00a0Human judgment is unreliable.\n<ul>\n<li>Estimates are less correct, the farther out into the future they extend.<\/li>\n<li>You will never anticipate everything that can go wrong.<\/li>\n<li>Every process will break down.<\/li>\n<li>Remember, <a href=\"https:\/\/www.brainyquote.com\/quotes\/quotes\/d\/dwightdei164720.html\">Eisenhower&#8217;s advice<\/a>, &#8220;In preparing for battle, I have always found that plans are useless, but planning is indispensable&#8221;.<\/li>\n<\/ul>\n<\/li>\n<li>You must be able to adjust and keep moving forward. \u00a0 How?\n<ul>\n<li>There are no short-cuts.<\/li>\n<li>This comes entirely from the attitude, ownership, knowledge, and skill, that people on the ground can bring to bear.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Someone, anyone, must <strong>own<\/strong> the work.\n<ul>\n<li>Get. \u00a0It. \u00a0Done. \u00a0By hook or crook. \u00a0Failure is not an option.<\/li>\n<li>Never, ever tell me that it is someone else&#8217;s fault.\n<ul>\n<li>You work with business folks, managers, analysts, developers, and testers.\n<ul>\n<li>If they help, use them, if they are amenable, teach them, if they are obstacles, work around them.\n<ul>\n<li>Do it without pissing any one off.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>This.\n<ul>\n<li><a href=\"https:\/\/www.brainyquote.com\/quotes\/quotes\/m\/mahatmagan109075.html\">&#8220;Be the change you wish to see.&#8221;<\/a><\/li>\n<li><a href=\"https:\/\/cwoodbury.wordpress.com\/2009\/10\/27\/every-damn-thing-is-your-own-fault\/\">\u201cEvery damn thing is your own fault\u2026if you\u2019re any good\u201d<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Agile gives me the warm and fuzzy, because like all good systems it can be characterized by a small set of rules, first principles, from which we can derive all other relevant lessons. Arguably, the Agile Manifesto, is the most famous attempt to lay out the first principles of the agile approach to software development. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[39,42,38],"_links":{"self":[{"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/posts\/944"}],"collection":[{"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/comments?post=944"}],"version-history":[{"count":10,"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/posts\/944\/revisions"}],"predecessor-version":[{"id":962,"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/posts\/944\/revisions\/962"}],"wp:attachment":[{"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/media?parent=944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/categories?post=944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.seonthemon.com\/wp351\/wp-json\/wp\/v2\/tags?post=944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}