{"id":1000,"date":"2007-04-05T16:49:36","date_gmt":"2007-04-05T16:49:36","guid":{"rendered":"http:\/\/www.redmonk.com\/jgovernor\/2007\/04\/05\/on-agile-it-business-alignment-martin-fowler-and-the-yawning-crevasse-of-doom\/"},"modified":"2007-04-05T16:49:36","modified_gmt":"2007-04-05T16:49:36","slug":"on-agile-it-business-alignment-martin-fowler-and-the-yawning-crevasse-of-doom","status":"publish","type":"post","link":"https:\/\/redmonk.com\/jgovernor\/on-agile-it-business-alignment-martin-fowler-and-the-yawning-crevasse-of-doom\/","title":{"rendered":"On Agile, IT-Business Alignment, Martin Fowler and The Yawning Crevasse of Doom"},"content":{"rendered":"<p>I took some notes from a great keynote at <a href=\"http:\/\/qcon.infoq.com\/qcon\/conference\/\">QCon<\/a> recently (which was really excellent by the way, more later), but never polished them up. So much for live-blogging&#8230;<\/p>\n<p>For those of you that don&#8217;t know him&nbsp;<a href=\"http:\/\/www.martinfowler.com\/\">Martin Fowler<\/a> is a bona fide agile rock star &#8211; a practitioner steeped in practical lessons to improve development and business alignment.&nbsp; His partner in crime in the QCon keynote was <a href=\"http:\/\/dannorth.net\/\">Dan North<\/a>&nbsp;(currently building out a theory of <a href=\"http:\/\/dannorth.net\/introducing-bdd\/\">behaviour-driven development<\/a>). The double act was hardly Laurel and Hardy slick, but both guys gave great insights about effective software development cultures and worked well together. Hopefully I have captured some of these insights&nbsp;here. If you&#8217;re in a hurry just read the <strong>bold<\/strong>.<\/p>\n<p>So what was the keynote about? <strong>The Yawning Crevasse of Doom<\/strong>, signifying the gap between software development and business.<\/p>\n<p>&#8220;<strong>The biggest problem we have in software is communications between the business people and the developers<\/strong>.&#8221; Amen, brother.<\/p>\n<p>&#8220;We are used to seeing and hearing about big IT failures, but often the communication gap is in small things, delivering things that aren&#8217;t very useful.&#8221; Tell it, Martin!<\/p>\n<h3>Why Ferries Don&#8217;t Cut It<\/h3>\n<p>Fowler gave a suggestion for addressing the crevasse, based on two different ways of looking at the world&nbsp;&#8211; if you want to cross something <strong>you can use a ferry or a bridge<\/strong>. <\/p>\n<p>Often we use intermediaries when we try and encourage a dialogue between different communities, such as the much-talked about&nbsp;(and seldom found) &#8220;business analyst&#8221;.<\/p>\n<p>The analyst plays the role of ferry, carrying traffic from one side of the divide of the other.&nbsp;&#8220;Because of course, you never want business people to talk to developers&#8230;&nbsp;because they are&nbsp;hairy, smelly, and talk technical babble.&#8221;&nbsp; \ud83d\ude09<\/p>\n<p>But argues Fowler &#8220;<em>Any<\/em> profession has jargon&#8221;. What is more &#8211; &nbsp;<\/p>\n<p><strong>&#8220;Ferries don&#8217;t provide much bandwidth.&#8221;<\/strong><\/p>\n<p><strong>A bridge<\/strong>, on the other hand, &#8220;<strong>offers direct communication between business and technical people. It&nbsp;allows rubbing together of different skills<\/strong>.&#8221;<\/p>\n<p>And besides, said Fowler, if you&#8217;re going to cross a crevasse &#8220;its easier with a bridge than a ferry&#8230;&#8221;<\/p>\n<h3>Proximity, Serendipity and the Java Printing &#8220;Requirement&#8221;<\/h3>\n<p>Fowler then told a story that&nbsp;explains exactly why it makes sense to have techies talk directly to business&nbsp;people, but also points to the variance between &#8220;requirements&#8221; and&nbsp;real value, between requirements set in concrete, and those that really map to business needs.<\/p>\n<p>The business person was adamant&nbsp;they needed new software, because the Java-based system&nbsp;they had ordered&nbsp;didn&#8217;t offer the right level of printer support. The techie&nbsp;who came to the office was intrigued to know why printer support was so important. <\/p>\n<p>The user explained .. &#8220;Well, we need to be able to get a&nbsp;print out from that system there so that we can then input the data into that system over there.&#8221;<\/p>\n<p>Developer then says&#8230; &#8220;Ummm. are you <em>sure<\/em> you need better printer support? We could just build a script to move the data from one system to another.&#8221;<\/p>\n<p>&#8220;You can <strong>do<\/strong> that???&#8221;&nbsp;asked the user, surprised&#8230; <\/p>\n<p>So much for &#8220;requirements&#8221;. And the moral of the story?&nbsp; &#8220;<strong>A new requirement can come from a conversation<\/strong>.&#8221;<\/p>\n<h3>Agility meets NLP<\/h3>\n<p>Then Dan North took the reins, and introduced a useful concept, seemingly from leftfield&nbsp;&#8211; that is, Neuro linguistic programming (NLP). He explained that users and techies tended to program themselves to deliver poor outcomes.<\/p>\n<p>The business person has this in&nbsp;mind. &#8220;<strong>You won&#8217;t deliver what we want. Even after months of negotiations<\/strong>.&#8221;<\/p>\n<p>Techies meanwhile are thinking: &#8220;<strong>We know better than you, so we&#8217;ll overwhelm you with technical details<\/strong>.&#8221;<\/p>\n<p>One way to overcome this barrier is to make design&nbsp;decisions later in the process &#8211; rather than thinking through every potential scenario and developing accordingly, only set things in stone once they are needed. &#8220;<strong>We dont need to make the decision now. make it when we need to. Its easier.&#8221;<\/strong> <\/p>\n<p>So how can the two communities communicate more effectively? Bring. Teams. Together. <\/p>\n<p>DN: i start thinking about the business analyst as bridge-builder<\/p>\n<p>MF- Its about caring about whether the whole thing works. and motivation&#8230; <strong><em>if you have direct contact with the people that will use the system thats a hell<\/em><\/strong> <strong><em>of a lot more fulfilling<\/em><\/strong>.<\/p>\n<p>DN: Who here has been on a project they know is doomed? (About half the room put their hands up. I expected&nbsp;more).&nbsp;<\/p>\n<p>MF &#8211; &#8220;Get two [equities] traders to come and do their job sitting in the same place as the developers. The traders start to realise the developers were caring about what they were doing.&#8221;<\/p>\n<p><strong>Seeing highly motivated people in action tends to rub off on other people, even if they are motivated by different things.<\/strong><\/p>\n<h3>Summary Points, DSL and Object Theory<\/h3>\n<p>Point 1 &#8211; <strong>Prefer bridges over ferries<\/strong><\/p>\n<p>Point 2 &#8211; Understand how programming languages affect communication. <strong>Try to make the&nbsp;language as readable by the&nbsp;business expert as possible<\/strong> (Fowler didn&#8217;t use the phrase &#8220;view source&#8221;, but its v applicable). Even if the business person doesn&#8217;t fully understand the computer language, they can kind of see how it fits together, and more importantly feel a spark of recognition: &#8220;Oh &#8211;&nbsp;that takes some data from my invoice!&#8221;<\/p>\n<p>Fowler believes in Domain-driven design, and the corrolorary domain specific languages (DSL),&nbsp;because he beleives they are more effective in spanning the crevasse. &#8220;Create a ubiquitous language, where he names of the classes and how they are combined matches the business conversation&#8221;.<\/p>\n<p><strong>&#8220;Its why i like objects. People can have an understanding of&nbsp;what&#8217;s going on.&#8221;<\/strong><\/p>\n<p><strong>&#8220;<\/strong>I dont assume business people will sit down and program in them but whats important is they can look through rules and review them and say &#8216;that&#8217;s not right&#8217; is very valuable.&#8221;<\/p>\n<p>Sounds a&nbsp;bit like <a href=\"http:\/\/www.thingamy.com\/\">thingamy<\/a> doesn&#8217;t it? Perhaps Martin should be talking to <a href=\"http:\/\/thingamy.typepad.com\/\">Sig<\/a>.<\/p>\n<p>Fowler explained that his theories are based on real practical experience.&nbsp; &#8220;I have been involved in building a data model across the UK National Health Service. But models are better if they are local, it&#8217;s better than to try and build a single model, which is&nbsp;too complex or too abstract. <strong>Contextual<\/strong> is the more straightforward and&nbsp;effective way to go.&#8221; <\/p>\n<p>Point 3 &#8211;&nbsp;Fowler also suggested rather than build a single data model a better idea was to pass data on, using &#8220;classic iterative planning.&#8221;&nbsp; Doing&nbsp; so means that <strong>demos and prototypes&nbsp;can use real data, as opposed to mocked&nbsp;data, which again makes development much more real and compelling to business people<\/strong>.&#8221; [Regulatory Demands for anonymised data notwithstanding of course.]<\/p>\n<h3>Potshots at SOA<\/h3>\n<p>MF: &#8220;The problem with SOA is it means lot of different things to different people. In many organisations it means we&#8217;re hopeless and overweight as an IT department. but we&#8217;ll reorganise and become more effective. <strong>What does the business hear, in that case?&nbsp;A&nbsp;Peanuts-style&nbsp;&#8220;whah whah whah whah whah whah&#8221;. That area of SOA leaves me v cold and v worried<\/strong>.&#8221;<\/p>\n<p>DN: <strong>Better to focus on stories<\/strong>, lets use information in tiny nuggets&#8230;<\/p>\n<p>MF: At Thoughtworks the whole idea of useability is written into the process. Human beings are squishy, random and so on. From that comes the idea of &#8220;<strong>lo-fi prototyping&#8230; dont make it look too polished or they will say roll it out now.&#8221;<\/strong>&nbsp;Nailed.&nbsp;<\/p>\n<p>Dan also suggested software could learn from the production process behdind the movie industry &#8211; film all the scenes on the island at the same time. Dont keep going back to film a new scene at&nbsp;a&nbsp;location you&#8217;ve already been to.<\/p>\n<p>MF &#8211; <strong>the best requirements come after the feature is put into production<\/strong>. Are people doing funky stuff with the application? How can we help them do more of that?<\/p>\n<h3>On Done<\/h3>\n<p>Two words- enough and done. &#8220;i thought we were done&#8221;. &#8220;we did enough.&#8221;&nbsp;<\/p>\n<p><strong>Testing offers&nbsp;a shared language for &#8220;done&#8221;. Put tests in place and then done becomes much easier to deal with. <\/strong><\/p>\n<p>From test-driven, to behaviour-driven, development. Enabling a shared understanding of &#8220;done&#8221; &#8211; what is good enough, in both parties terms?<\/p>\n<p><strong>Get the IT people out into the business<\/strong> (<a href=\"http:\/\/www.druidstreet.com\/\">druidstreet<\/a>?)<\/p>\n<p><strong>The quickest way to destroy your own feedback loops it to offshore your helpdesk.<\/strong> (now that&#8217;s a sentiment i know <a href=\"http:\/\/duckdown.blogspot.com\/\">James<\/a> will agree with).<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>disclaimers: I chaired a track at QCon but was not paid to do so.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I took some notes from a great keynote at QCon recently (which was really excellent by the way, more later), but never polished them up. So much for live-blogging&#8230; For those of you that don&#8217;t know him&nbsp;Martin Fowler is a bona fide agile rock star &#8211; a practitioner steeped in practical lessons to improve development<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[1],"tags":[],"class_list":["post-1000","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9wfjh-g8","_links":{"self":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts\/1000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/comments?post=1000"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/posts\/1000\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/media?parent=1000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/categories?post=1000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/jgovernor\/wp-json\/wp\/v2\/tags?post=1000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}