<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description></description><title>Andy Hitchman</title><generator>Tumblr (3.0; @andyhitchman)</generator><link>http://blog.hitchman.net/</link><item><title>More Auto-projecting LINQ queries</title><description>&lt;p&gt;&lt;a title="Jimmy Bogard's blog" href="http://www.lostechies.com/blogs/jimmy_bogard/default.aspx"&gt;Jimmy Bogard&lt;/a&gt; has a &lt;a title="Autoprojecting LINQ Queries" href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2011/02/09/autoprojecting-linq-queries.aspx"&gt;great post about projecting LINQ queries to view models&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;My team was having the exact same conversation even as his post was sitting unread in Google Reader.&lt;/p&gt;
&lt;p&gt;Out domain is rich with value objects which are designed to be rendered on the presentation layer via MVC EditorTemplates. This makes &lt;a title="AutoMapper site" href="http://automapper.codeplex.com/"&gt;AutoMapper&lt;/a&gt; (another of Jimmy&amp;#8217;s innovations) a little difficult to fit into our approach.&lt;/p&gt;
&lt;p&gt;Jimmy&amp;#8217;s alternative approach is exactly what I imagined we&amp;#8217;d be writing shortly. &lt;/p&gt;
&lt;p&gt;We quickly found the need to override the basic binding and have published some enhancements at &lt;a href="https://gist.github.com/824585"&gt;&lt;a href="https://gist.github.com/824585"&gt;https://gist.github.com/824585&lt;/a&gt;&lt;/a&gt; that provide a simple override DSL.&lt;/p&gt;
&lt;p&gt;Please use and improve!&lt;/p&gt;</description><link>http://blog.hitchman.net/post/3270250776</link><guid>http://blog.hitchman.net/post/3270250776</guid><pubDate>Sun, 13 Feb 2011 22:14:00 +1100</pubDate><category>.net</category><category>automapper</category><category>linq</category><category>csharp</category></item><item><title>Import Your Delicious Bookmarks into Google Bookmarks</title><description>&lt;p&gt;As it looks like Yahoo! are shutting down Delicious, I needed to get my bookmarks (with tags intact) into a new social bookmarking tool. I chose Google Bookmarks (&lt;a href="http://www.google.com/Bookmarks"&gt;www.google.com/Bookmarks&lt;/a&gt;) as I already have a google account.&lt;/p&gt;
&lt;p&gt;Exporting from Delicious is easy, but importing to Google Bookmarks is not.&lt;/p&gt;
&lt;p&gt;So I knocked up a basic bookmarklet to do the job. Please try it out and let me know if you have any problems:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://andyhitchman.github.com/DeliciousToGoogleBookmarks/"&gt;&lt;a href="http://andyhitchman.github.com/DeliciousToGoogleBookmarks/"&gt;http://andyhitchman.github.com/DeliciousToGoogleBookmarks/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.hitchman.net/post/2346169777</link><guid>http://blog.hitchman.net/post/2346169777</guid><pubDate>Fri, 17 Dec 2010 17:40:00 +1100</pubDate><category>delicious</category><category>google</category><category>bookmarks</category><category>bookmarklet</category></item><item><title>getKanban</title><description>&lt;p&gt;I went to the &lt;a title="Limited WIP Society" href="http://www.meetup.com/Limited-WIP-Society/calendar/13955511/"&gt;'Limited WIP Society' meetup&lt;/a&gt; last night to play the &lt;a title="The getKanban game" href="http://www.getKanban.com"&gt;getKanban&lt;/a&gt; game. Russell Healy ran the session and it was great to get to talk with him about kanban. &lt;/p&gt;
&lt;p&gt;But the highlight of the evening was definitely the game! It taught me a lot about the formal application of kanban systems. I&amp;#8217;ve understood and applied the concepts of kanban on projects previously, but the game excels at teaching you how to measure and control work in process and optimise flow.&lt;/p&gt;
&lt;p&gt;The game has not officially launched yet, so it was nice have the opportunity to test out a preview version and offer a little bit of feedback. If you get a chance to play, I&amp;#8217;d recommend the experience.&lt;/p&gt;</description><link>http://blog.hitchman.net/post/1005624090</link><guid>http://blog.hitchman.net/post/1005624090</guid><pubDate>Wed, 25 Aug 2010 08:57:52 +1000</pubDate><category>agile</category><category>kanban</category><category>getKanban</category></item><item><title>Delivery Responsibility on Agile Projects</title><description>&lt;p&gt;I had a great chat with a friend and colleague, Tom McDermott, over a coffee this morning that culminated in a little &amp;#8216;Eureka!&amp;#8217; moment (at least for me).&lt;/p&gt;
&lt;p&gt;We started talking about the somewhat tenuous role of business analysts on agile projects, where collaboration and communication directly between the business and developers is necessary to ensure success.&lt;/p&gt;
&lt;p&gt;But complex project often need analysts, distinct from developers, and the larger the project the more likely this type of team structure will evolve.&lt;/p&gt;
&lt;p&gt;The conversation then drifted into how testing should be performed and the significance of the quality assurance role, as opposed to the traditional waterfall tester role. That got us talking about Feature Injection (read the comic strip by Chris Matts: Episodes &lt;a title="Episode 1" href="http://decision-coach.com/comics/Feature%20Injection%20Comic%20Strip%20-%20Episode%201.pdf"&gt;1&lt;/a&gt;, &lt;a title="Episode 2" href="http://decision-coach.com/comics/Feature%20Injection%20Comic%20Strip%20-%20Episode%202.pdf"&gt;2&lt;/a&gt;, &lt;a title="Episode 3" href="http://decision-coach.com/comics/Feature%20Injection%20Comic%20Strip%20-%20Episode%203.pdf"&gt;3&lt;/a&gt; &amp;amp; &lt;a title="Episode 4" href="http://decision-coach.com/comics/Feature%20Injection%20Comic%20Strip%20-%20Episode%204.pdf"&gt;4&lt;/a&gt; and Liz Keogh&amp;#8217;s &lt;a title="InfoQ Pulling Power" href="http://www.infoq.com/articles/pulling-power"&gt;Pulling Power&lt;/a&gt; article) and the risk of late information arrival from QA activities into development (which is a clever way of saying &amp;#8220;bugs&amp;#8221;).&lt;/p&gt;
&lt;p&gt;In a Kanban system we pull requests for work and push back the finished article. In the exemplar (the Toyota Production System) a customer requests a car, which causes a flow of requests &lt;em&gt;into&lt;/em&gt; the system and the parts being manufactured and assembled in the return path &lt;em&gt;out&lt;/em&gt; of the system (yes this is gross simplification, bear with me).&lt;/p&gt;
&lt;p&gt;So how does this relate to agile or lean software development? Well, the customer requests features which flow into the system to be pulled by developers who build and then return working software.&lt;/p&gt;
&lt;p&gt;Teams often have information radiations in the war room, say a couple of whiteboards or a window, covered in cards or sticky notes that represent the requests for work: stories, features, MMFs, or however you work. These stories typically travel left-to-right thought swim lanes, or queues.&lt;/p&gt;
&lt;p&gt;This works, but my observation to Tom was that the concept of pulling the request and pushing the result &lt;em&gt;symmetrically&lt;/em&gt; (into and then out of the system) is missing. We have a linear system that promotes fine-grained analysis, build, test in that order, and consequently suffers from the late arrival of information into development from QA (those pesky bugs).&lt;/p&gt;
&lt;p&gt;Surely that isn&amp;#8217;t right?&lt;/p&gt;
&lt;p&gt;So what might be better? Well we have a customer who is requesting features and a developer who is pushing bits. In the linear system we have a business analyst on the inflow and quality assurance on the outflow.&lt;/p&gt;
&lt;p&gt;The developer is responsible for &amp;#8220;build&amp;#8221;. What is analysis and QA &lt;em&gt;really&lt;/em&gt; doing? So Tom and I popped the why stack and found the answer is &amp;#8220;delivery&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Who is responsible for &amp;#8220;delivery&amp;#8221;? Well it&amp;#8217;s a value chain, so who ever is connected to the customer is the right answer. But in our linear system there are two roles connected to the customer. Does that make the tester (on the outflow) responsible for delivery? That seems a bit harsh, given that they are simply assuring that the bits match the requirements. They didn&amp;#8217;t define the requirements; that was the job of the analyst. The analyst? Better, I would suggest, as they defined the requirements in our linear flow. But they typically aren&amp;#8217;t really involved in the outflow of bits.&lt;/p&gt;
&lt;p&gt;Ah ha! The analyst should be responsible for the return of bits to the customer! That&amp;#8217;s &amp;#8220;delivery!&amp;#8221;. So how do the analyst and QA collaborate? Well, maybe the analyst and the tester performing QA should be the same role?&lt;/p&gt;
&lt;p&gt;Ah ha! Symmetry.&lt;/p&gt;
&lt;p&gt;&lt;img height="184" width="500" alt="Delivery focussed value stream" src="http://25.media.tumblr.com/tumblr_l7a58jIP3d1qbfgcpo1_500.png"/&gt;&lt;/p&gt;
&lt;p&gt;Now, just to be clear, I&amp;#8217;m not suggesting this replaces collaboration and communication. I&amp;#8217;m suggesting that the BA and QA role should be changed to a &amp;#8220;Deliverer&amp;#8221; role.&lt;/p&gt;
&lt;p&gt;The Deliverer pulls requests for features and triggers discovery. They ensure the quality of acceptance criteria on features/stories and act as the keeper of truth for a feature. They pull working changesets and perform the quality assurance on these. They have the responsibility of delivering valuable working software to the customer.&lt;/p&gt;
&lt;p&gt;That was my Eureka moment. What do you think?&lt;/p&gt;</description><link>http://blog.hitchman.net/post/966113958</link><guid>http://blog.hitchman.net/post/966113958</guid><pubDate>Tue, 17 Aug 2010 15:49:00 +1000</pubDate><category>agile</category><category>lean</category><category>kanban</category><category>feature injection</category></item><item><title>Walking on water</title><description>&lt;p&gt;Successfully developing software from a written specification is rather like walking on water: Easy if frozen, miraculous otherwise.&lt;/p&gt;</description><link>http://blog.hitchman.net/post/940750926</link><guid>http://blog.hitchman.net/post/940750926</guid><pubDate>Thu, 12 Aug 2010 15:23:39 +1000</pubDate><category>agile</category></item><item><title>"If you want to build a ship, don’t drum up the men to gather wood, divide the work and give..."</title><description>“If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Antoine de Saint Exupéry&lt;/em&gt;</description><link>http://blog.hitchman.net/post/924330049</link><guid>http://blog.hitchman.net/post/924330049</guid><pubDate>Mon, 09 Aug 2010 10:00:00 +1000</pubDate><category>kaizen</category><category>quote</category></item><item><title>"A project creates business value when it increases or protects revenue, or reduces costs in..."</title><description>“A project creates business value when it increases or protects revenue, or reduces costs in alignment with the strategy of the organization.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Andy Poll&lt;/em&gt;</description><link>http://blog.hitchman.net/post/919695348</link><guid>http://blog.hitchman.net/post/919695348</guid><pubDate>Sun, 08 Aug 2010 10:00:00 +1000</pubDate><category>agile</category><category>kaizen</category><category>quote</category></item><item><title>ASP.NET MVC 3 preview 1!</title><description>&lt;p&gt;&lt;span&gt;Just installing ASP.NET MVC 3 preview 1. Quite excited to try out the new Razor view engine&lt;/span&gt;&lt;/p&gt;</description><link>http://blog.hitchman.net/post/912333269</link><guid>http://blog.hitchman.net/post/912333269</guid><pubDate>Fri, 06 Aug 2010 21:33:22 +1000</pubDate><category>.net</category><category>mvc</category><category>razor</category></item><item><title>Martin Fowler speaking at Agile Melbourne</title><description>&lt;p&gt;Looking forward to hearing &lt;a href="http://martinfowler.com/"&gt;Martin Fowler&lt;/a&gt; speak at the next Agile Melbourne meetup (&lt;a href="http://www.meetup.com/Agile-Alliance-Melbourne/calendar/14300519/"&gt;&lt;a href="http://www.meetup.com/Agile-Alliance-Melbourne/calendar/14300519/"&gt;http://www.meetup.com/Agile-Alliance-Melbourne/calendar/14300519/&lt;/a&gt;&lt;/a&gt;).&lt;/p&gt;</description><link>http://blog.hitchman.net/post/910313854</link><guid>http://blog.hitchman.net/post/910313854</guid><pubDate>Fri, 06 Aug 2010 11:43:00 +1000</pubDate><category>agile</category><category>event</category></item><item><title>Being Geek: The Software Developer's Handbook</title><description>&lt;p&gt;&lt;img height="300" width="300" alt="Being Geek (Michael Lopp)" src="http://ecx.images-amazon.com/images/I/41WpauYZPfL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg" align="right"/&gt;Being Geek: The Software Developer&amp;#8217;s Career Handbook (&lt;a href="http://www.amazon.com/Being-Geek-Software-Developers-Handbook/dp/0596155409"&gt;http://www.amazon.com/Being-Geek-Software-Developers-Handbook/dp/0596155409&lt;/a&gt;) by Michael Lopp, perhaps best known for his blog &lt;a href="http://www.randsinrepose.com/"&gt;&lt;a href="http://www.randsinrepose.com/"&gt;http://www.randsinrepose.com/&lt;/a&gt;&lt;/a&gt;, is an essential read for any dedicated developer.&lt;/p&gt;
&lt;p&gt;Learn how to work effectively in the organisation around you, learn to recognise different personalities and how people react to stress, learn to manage upwards and understand team dynamics.&lt;/p&gt;
&lt;p&gt;Lots of &amp;#8220;management manuals&amp;#8221; could tell us how to do these things, but these aren&amp;#8217;t the right kind of books for someone with an engineering mindset. &amp;#8220;Being Geek&amp;#8221; tells us how to work with the non-Geeks around us without imploding.&lt;/p&gt;
&lt;p&gt;Structured as a series of discrete essays, it&amp;#8217;s easily digestible and resonates strongly with my experiences. No doubt it shall become one of works that I revisit frequently to re-affirm my place in the IT world.&lt;/p&gt;</description><link>http://blog.hitchman.net/post/905778381</link><guid>http://blog.hitchman.net/post/905778381</guid><pubDate>Thu, 05 Aug 2010 13:02:00 +1000</pubDate><category>book</category><category>review</category></item><item><title>Estimates are not deadlines</title><description>&lt;p&gt;If we strive to always develop software in less time that our estimates, we risk engendering a culture of compromise. And the easiest path of compromise is going to be quality.&lt;/p&gt;
&lt;p&gt;The focus on hitting a larger milestone is legitimate, but I don&amp;#8217;t believe it necessarily translates into every task estimate being met.&lt;/p&gt;
&lt;p&gt;Given the number of forces at work during software development, I believe it would be statistically improbable for all estimates to be met.&lt;/p&gt;
&lt;p&gt;Perhaps we should sometimes willingly exceed our estimates and get it right, rather than flog ourselves working silly hours and still deliver substandard code.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s not a race. And by retaining our integrity and seeing the whole picture, I imagine that the overall milestone would still be achievable.&lt;/p&gt;</description><link>http://blog.hitchman.net/post/872737800</link><guid>http://blog.hitchman.net/post/872737800</guid><pubDate>Thu, 29 Jul 2010 09:51:00 +1000</pubDate><category>agile</category><category>planning</category></item><item><title>Test Syntax Highlighting</title><description>&lt;pre class="brush: csharp"&gt;    
    public class Segment : ISegment 
    {
        private readonly IPartitioningStrategy partitioningStrategy;

        public Segment(IPartitioningStrategy partitioningStrategy, int segmentNumber)
        {
            this.partitioningStrategy = partitioningStrategy;
            SegmentNumber = segmentNumber;
        }

        public int SegmentNumber { get; private set; }

        public IPartition MappedPartition
        {
            get { throw new NotImplementedException(); }
        }

        public bool IsResponsibleForGraph(Guid internalId)
        {
            return partitioningStrategy.IsResponsibleForGraph(this, internalId);
        }
    }
&lt;/pre&gt;</description><link>http://blog.hitchman.net/post/552656897</link><guid>http://blog.hitchman.net/post/552656897</guid><pubDate>Tue, 27 Apr 2010 15:17:16 +1000</pubDate></item></channel></rss>
