<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Adventures of an aspiring agile developer in a not-quite agile world : Conferences</title><link>http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx</link><description>Tags: Conferences</description><dc:language>en-CA</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Le Web 3 (Day one)</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/12/11/le-web-3-day-one.aspx</link><pubDate>Tue, 11 Dec 2007 18:18:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6735804</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/6735804.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=6735804</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=6735804</wfw:comment><description>&lt;p&gt;&lt;strong&gt;Dark Side of the Web&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Panel with Jaewoong Lee (Daum), Dan Rose (Facebook), Chris Alden (SixApart) and a lawyer.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Anonymity allows people to be expressive/rude; if you're rude in real life you probably will be online too. South Korea developed government-run program for Internet identity which is used by top 35 websites. However, 80,000 identities were stolen earlier this year. Keeping history on a site-by-site basis is probably the best way for people to 'behave' and still maintain privacy as it's decentralized. Strangely enough, Korea is outsourcing its community moderation (censorship?) to China. &lt;/li&gt;    &lt;li&gt;Facebook's value comes from using your real identity. There isn't really any spam on Facebook either because your friends won't spam you. &lt;/li&gt;    &lt;li&gt;Having said that, Facebook messed up with Beacon. They didn't respond quickly enough to give users control, and users expected it because everything previously had been controllable. There was also a lack of communication about the project initially (they claim it wasn't to do with advertising, but just coincidence it was launched simultaneously.) &lt;/li&gt;    &lt;li&gt;Targeted advertising: obviously no PII, but more social advertising. Friends can 'advertise' to each other. Ads should appear the same way as content, and not be intrusive. &lt;/li&gt;    &lt;li&gt;90% of UGC (user-generated content) is crap, but 99% of TV is crap. Internet is winning; content is usually relevant to *someone*. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Persistent Communication&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Talk from Evan Williams (Twitter)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Everyone is using Twitter. Well, at least everyone at this conference is using it. &lt;/li&gt;    &lt;li&gt;Adding constraint to a product can help users. (&lt;em&gt;Obviously, look at Apple&lt;/em&gt;) &lt;/li&gt;    &lt;li&gt;What can we take away to create something new? &lt;/li&gt;    &lt;li&gt;Twitter = Blogger MINUS comments MINUS post titles MINUS pictures MINUS template MINUS formatting PLUS 140 character limit. &lt;/li&gt;    &lt;li&gt;Twitter actually started with the mobile interface first, which forced the web UI to maintain simplicity. &lt;/li&gt;    &lt;li&gt;API was also kept simple, and so people built apps to fill in the gaps. &lt;/li&gt;    &lt;li&gt;Human interface cognitive load is proportional to the number of clicks/keystrokes/gestures. The usability of an interface is inversely geometrically proportional to its cognitive load. - Tantek Celik &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What can we create by taking away?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Only post one photo per day (fotolog). Ended up with average of 11 comments/photo (very high) and very high quality. Compare to flickr. &lt;/li&gt;    &lt;li&gt;Only upload a picture and add a yes/no button. Compare to most dating sites. &lt;/li&gt;    &lt;li&gt;Restrict social network to 20 friends. Compare to myspace. (Actually, this is what the 'top friends' application does on Facebook, and it's the most popular application) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Why books and school lectures still exist&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Hans Rosling (the man behind Gapminder)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;He actually wanted to present remotely, but they wouldn't let him. &lt;/li&gt;    &lt;li&gt;Does some very nice real-time presentations using Gapminder. He made two striking points about Africa      &lt;ol&gt;       &lt;li&gt;Africa has advanced extremely quickly. He used a graph of life expectancy vs GDP. Below is the current situation vs. Sweden throughout the years. &lt;/li&gt;        &lt;li&gt;The current state of advancement within African countries is massive (~200 years). You cannot treat them as all being in the same range.          &lt;br /&gt;          &lt;br /&gt;          &lt;table cellspacing="2" cellpadding="2" width="273" border="1"&gt;&lt;tbody&gt;             &lt;tr&gt;               &lt;td valign="top" width="116"&gt;Sierra Leone&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1709&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="118"&gt;Mozambique&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1810&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="119"&gt;Uganda&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1877&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="119"&gt;India&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1910&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="119"&gt;Guatemala&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1933&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="119"&gt;Brazil&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1953&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="119"&gt;South Korea&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 1983&lt;/td&gt;             &lt;/tr&gt;              &lt;tr&gt;               &lt;td valign="top" width="119"&gt;Japan&lt;/td&gt;                &lt;td valign="top" width="149"&gt;Sweden 2004 (equal)&lt;/td&gt;             &lt;/tr&gt;           &lt;/tbody&gt;&lt;/table&gt;       &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Another illustration is Singapore vs. France in terms of Mortality Rate and GDP compared from 1931 to 2007. In 1931 Singapore was far behind in both areas, now it has completely overtaken France. &lt;/li&gt;    &lt;li&gt;Having said all that, none of these facts &amp;amp; figures work without having storytellers. And watching Rosling, it's obviously true. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;What is social about design&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Philippe Starck. Very interesting guy but difficult talk to summarize. His main points revolve around responsible products and responsible business. Creating products that solve problems rather than (just) make money is important. Other topics covered with eco-friendliness, organic products, and ubiquitous/miniaturization of computers.&lt;/p&gt;  &lt;p&gt;Perhaps the best part was at the end when Scoble got up on stage and asked him to review the Kindle. &amp;quot;It's almost modern&amp;quot; was his response.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Technology impact on corporate culture (Google)&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Drivers of change: ubiquitous connectivity, democratization of the tools of production, falling cost of storage/increase of processing power. We double storage capability every 13 months; by 2020 a device the size of an iPod could store all the content ever created.&lt;/li&gt;    &lt;li&gt;At Google, revenue and profitability are an afterthought. First they try to identify customer needs and address them as fast as possible.&lt;/li&gt;    &lt;li&gt;Cultural innovation - Dublin (reliability), London (apps for mobile), Zurich (search, geo infrastructure), Munich (apps for mobile), Trondheim (infrastructure, news), Haifa (localisation, ads, search quality)&lt;/li&gt;    &lt;li&gt;Empowerment: 20% slack time. Small teams.&lt;/li&gt;    &lt;li&gt;Speed - Fast is better than slow. Don't waste time making 2-year business plans. Release early, release often. Get feedback from customers. It's not about big beating small, but rather who is faster. &lt;em&gt;Change your development approach to bring things to market as quickly as possible&lt;/em&gt;. (emphasis added)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Storytelling and technology - evolution of society&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;June Cohen from TED. Good talk. Basically pointing out that technology is returning us to the traditional (old) ways of communication. TV, newspaper, etc. and mass media are actually _new_ ways, not old. Big media is due to become smaller. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Personalization .. 2.0 .. 3.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Jonathan Medved - Vringo&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mobile content will become richer and needs to catch up to the web quickly&lt;/li&gt;    &lt;li&gt;Look for video, animations, avatars, and photos to become more prominent&lt;/li&gt;    &lt;li&gt;UGC will also take off just like it did on the web&lt;/li&gt;    &lt;li&gt;Visual ringtones: need to be symmetrical and it plays on the called party's phone. Needs to be frequently changed as video gets old quickly. Could be purchased or uploaded by users.&lt;/li&gt;    &lt;li&gt;The future of mobile personalization will be around straddling a call or SMS&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Before call: viral ad, avatar, photo, licensed or UGC content&lt;/li&gt;      &lt;li&gt;During call: enterprise ad, yellow pages, consumer-pushed content, ad-supported calls&lt;/li&gt;      &lt;li&gt;After call: branding ad, e-commerce, call to action, voting game&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6735804" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>Agile 2007 - Design sense</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/08/17/agile-2007-design-sense.aspx</link><pubDate>Fri, 17 Aug 2007 16:20:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4430105</guid><dc:creator>casper</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/4430105.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=4430105</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=4430105</wfw:comment><description>&lt;p&gt;Yesterday afternoon I attended a workshop held by Michael Feathers and Emmanuel Gaillot called 'Design Sense - Can We Teach Deep Design Skill With Perceptual Examples?' The aim was to see if, after developing for many years, we gain the ability to sense if code is good or bad just by glancing at it (the theory comes from Malcolm Gladwell's &lt;em&gt;&lt;a href="http://www.amazon.com/Blink-Power-Thinking-Without/dp/0316010669/ref=pd_bbs_sr_1/104-9998131-2881546?ie=UTF8&amp;amp;s=books&amp;amp;qid=1187355673&amp;amp;sr=8-1"&gt;Blink&lt;/a&gt;&lt;/em&gt;). If it's true that we gain this ability over time, then perhaps we can find some way of sharing it with beginning developers.&lt;/p&gt; &lt;p&gt;In groups of eight or so, we went through tons of small code snippets and had to quickly rate whether we thought they were examples of good or bad code. The snippets were in different programming and spoken&amp;nbsp;languages - some, like this one below, didn't even look like code.&lt;/p&gt;&lt;pre&gt;0g:84*-!#@_801p0&amp;gt;_#":2%86*+\2/01g1-:01p0\#"_$$,,,,,1+&lt;/pre&gt;
&lt;p&gt;(It's actually &lt;a href="http://en.wikipedia.org/wiki/Befunge"&gt;Befunge&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I wouldn't say we reached any definite conclusions, but there were a few points raised that I found interesting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pain is the best teacher. If you have to suffer through maintaining poorly written code that you or someone else wrote, you will probably want to write better code in the future.&lt;/li&gt;
&lt;li&gt;Bombarding junior developers with examples of good and bad code is a possible solution. Think of the opposite of &lt;a href="http://worsethanfailure.com/Default.aspx"&gt;Worse Than Failure&lt;/a&gt;. (Apparently this method is how vets are taught to differentiate between smart cows and dumb ones.)&lt;/li&gt;
&lt;li&gt;Counter to the previous point, it doesn't matter how much you show or tell someone something - if they don't experience it themselves, they'll never truly learn it.&lt;/li&gt;
&lt;li&gt;Sometimes there are physical constraints on writing 'proper' code. One individual pointed out that if you wrote tons of small classes (as we normally end up with for EDD code) it would very difficult to maintain in VB6 because the tool support is just not there.&lt;/li&gt;
&lt;li&gt;Perhaps an obvious point, but worth stating anyway: defining whether code is 'good' or 'bad' is extremely difficult without context.&lt;/li&gt;
&lt;li&gt;Sometimes you need to write 'bad' or 'ugly' code to hide some abstraction away so that the rest of your code can look 'good' or be more readable.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4430105" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>Words I learned at Agile 2007</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/08/17/words-i-learned-at-agile-2007.aspx</link><pubDate>Fri, 17 Aug 2007 15:25:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4429728</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/4429728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=4429728</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=4429728</wfw:comment><description>&lt;ul&gt; &lt;li&gt;Agilitization&lt;/li&gt; &lt;li&gt;Robustification&lt;/li&gt; &lt;li&gt;Administrivia&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4429728" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>Agile 2007 - Metaprogramming in Ruby</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/08/15/agile-2007-metaprogramming-in-ruby.aspx</link><pubDate>Wed, 15 Aug 2007 17:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4404549</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/4404549.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=4404549</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=4404549</wfw:comment><description>
&lt;p&gt;This morning's I went to a session called &lt;a href="http://aspectprogramming.com/agile2007" class="" mce_href="http://aspectprogramming.com/agile2007"&gt;'Ruby's Secret Sauce:&amp;nbsp; Metaprogramming'&lt;/a&gt;. It was interactive and so&amp;nbsp;I had my first opportunity to try out some of the neat things you can do in Ruby. Here are a few things that stuck out for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;method_missing&lt;/code&gt; is pretty cool. You get a handler that's called whenever you try to send an object a message it doesn't understand. Inside the handler, you can then define what should happen, or you can even dynamically add the missing method to the class itself. 
&lt;/li&gt;

&lt;li&gt;Method aliasing allows you to do AOP-type stuff without a framework. For instance, if you've got class A with method &lt;code&gt;DoThis()&lt;/code&gt;, you can alias &lt;code&gt;DoThis()&lt;/code&gt; to &lt;code&gt;DoThis2()&lt;/code&gt;. You then write a new definition of &lt;code&gt;DoThis()&lt;/code&gt; in which you could wrap the call to &lt;code&gt;DoThis2()&lt;/code&gt; with logging statements. 
&lt;/li&gt;

&lt;li&gt;The &lt;a href="http://blog.juliankamil.com/article/12/the-_naked_-ruby-object-specialization-with-eigenclass" mce_href="http://blog.juliankamil.com/article/12/the-_naked_-ruby-object-specialization-with-eigenclass"&gt;'eigenclass'&lt;/a&gt; is an interesting concept. Not only can you modify the class itself, but you can scope your changes so that you're only modifying a specific instance of the class. This is good if you have multiple libraries that all want to change 'object' or 'string' or some commonly used class. If they only modify the instances they need, then it's possible for all the libraries to play nicely together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also got to see the ActiveRecord class from Rails which does a ton of very cool things for you behind the scenes. Instead of having to (a) write SQL to create a table, (b) create a class to wrap the database, and&amp;nbsp;(c) write find methods for various critiera, you can just derive your class, say Person, from ActiveRecord, and immediately get CRUD and find functionality for free. The sample class (taken directly from the presentation) looks like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;class Person &amp;lt;&amp;lt; ActiveRecord::Base&lt;br&gt;&amp;nbsp; has_one :address&lt;br&gt;&amp;nbsp; validates_length_of :first_name,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :last_name,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :on =&amp;gt; :create, :minimum =&amp;gt; 1&lt;br&gt;&amp;nbsp; validates_length_of :ssn,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :on =&amp;gt; :create,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:minimum =&amp;gt; 9, :maximum =&amp;gt; 9&lt;br&gt;&amp;nbsp; validates_presence_of :first_name,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :last_name, :ssn, :on =&amp;gt; :create&lt;br&gt;&amp;nbsp; validates_uniqueness_of :ssn&lt;br&gt;end 
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and you can then write code like this and it just works:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a_person = Person.find_by_ssn “123456789”&lt;br&gt;smiths = Person.find_by_last_name “Smith”&lt;br&gt;john_smiths = Person.find_by_first_name_and_last_name(“John”, “Smith”)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Obviously there's a lot going on behind the scenes there, and I'm not saying you want to do this for everything, but it became obvious quite quickly why Ruby is a prime candidate for writing DSLs.&lt;/p&gt;
Very enjoyable talk and some good hands-on experience as well.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4404549" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>Agile 2007 - Day two</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/08/14/agile-2007-day-two.aspx</link><pubDate>Tue, 14 Aug 2007 19:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4397559</guid><dc:creator>casper</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/4397559.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=4397559</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=4397559</wfw:comment><description>&lt;p&gt;This morning was Paul King's &lt;a href="http://www.agile2007.org/agile2007/index.php?page=sub/&amp;amp;id=642" mce_href="http://www.agile2007.org/agile2007/index.php?page=sub/&amp;amp;id=642"&gt;presentation&lt;/a&gt; on 'Agile Developer Practices for Dynamic Languages.' Although we're not using Ruby or Groovy, with the updates coming in .NET 3.5, it was still good to see what challenges we could face in the future. Some of the notable points I thought were:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Patterns are embedded in the language so you don't need to reinvent the wheel. For instance, you can get the 'Visitor' effect by using closures.  &lt;/li&gt;&lt;li&gt;If you're using a dynamic mock framework (&lt;a href="http://blogs.msdn.com/agilemonkey/archive/2007/07/13/the-mess-that-mocks-can-make.aspx" mce_href="http://blogs.msdn.com/agilemonkey/archive/2007/07/13/the-mess-that-mocks-can-make.aspx"&gt;I'm not)&lt;/a&gt; then you can get very similar behaviour by using maps. Actually Paul went further on this and claims they've reached a point where unit tests are disposable. Apparently the code for the mocks that describes class behaviour is identical to the code in the real classes and so they can generate one from the other and vice versa. I'm a tad skeptical about this.  &lt;/li&gt;&lt;li&gt;Aspects are built-in to the language, although you may still want to use a framework at times &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I was a bit surprised to hear a few under-handed jabs at Microsoft technologies, but it seems to be a recurring theme throughout this conference. Ah well.&lt;/p&gt; &lt;p&gt;In the afternoon I went to Mike Cohn's talk on user stories. Mike is a very experienced presenter and the session was completely packed. Although I've read his book on the subject, it was still good to go over the basics of what makes good user stories and I found it especially useful to hear some of the examples of refactoring 'developer' stories into value-proposition ones. The slides for the presentation can be found &lt;a href="http://www.agile2007.org/agile2007/index.php?page=sub/&amp;amp;id=361" mce_href="http://www.agile2007.org/agile2007/index.php?page=sub/&amp;amp;id=361"&gt;here&lt;/a&gt;. A few notable points were:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Waterfall is comprised of three sections: the fuzzy front end, the "middle part" where stuff gets done, and the&lt;b&gt; rapid descoping phase&lt;/b&gt; :) &lt;br&gt;&lt;/li&gt;&lt;li&gt;Estimating a software project accurately is as likely as a salesman or businessperson being able to say how much money (to the dollar) the company will make this quarter/year/whatever.&lt;/li&gt;&lt;li&gt;Stories written in the first person help to make things more personal, and as a result people become more invested in the them.&lt;/li&gt;&lt;li&gt;Try to imagine 5-12 (ballpark) user roles to help creat your user stories. In most cases, having a number outside that range either means you haven't thought about your users enough, or you're breaking them into far too many categories.&lt;/li&gt;&lt;li&gt;(My favourite) Developer stories should be rewritten as value propositions&lt;/li&gt;&lt;/ul&gt;Looking at the slides, you can see some good examples of the last point. It's often tough to get a product owner to sign off on refactoring-type work items, but if you spend the time to phrase it in a way that shows how it benefits one of the user roles, you're much more likely to get acceptance.&lt;br&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4397559" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>Agile 2007 - Shout Kata</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/08/14/agile-2007-shout-kata.aspx</link><pubDate>Tue, 14 Aug 2007 15:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4386384</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/4386384.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=4386384</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=4386384</wfw:comment><description>&lt;P&gt;Yesterday afternoon I attended &lt;A href="http://emmanuelgaillot.blogspot.com/" mce_href="http://emmanuelgaillot.blogspot.com/"&gt;Emmanuel Gaillot's&lt;/A&gt; 'Shout Kata' &lt;A href="http://www.agile2007.org/agile2007/index.php?page=sub/&amp;amp;id=571" mce_href="http://www.agile2007.org/agile2007/index.php?page=sub/&amp;amp;id=571"&gt;session&lt;/A&gt; - programming a full client-server infrastructure in TDD. Even though I was quite jetlagged, it was an enjoyable time. Using ruby, he built a very simple chat server and client in under three hours. Although I know very little about the language, it was easy to follow along and the stories naturally flowed form one to the other. It was good to see that you don't need multiple threads to develop this kind of architecture test-first.&lt;/P&gt;
&lt;P&gt;At the end of the session Emmanuel promised to post the code, and once that happens I'm going to translate it into C#. One of the other attendees is going to do the same for Java, so it will be interesting to see the outcome :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4386384" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item><item><title>The journey to CeBIT</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/03/27/the-journey-to-cebit.aspx</link><pubDate>Tue, 27 Mar 2007 11:23:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1961175</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/1961175.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=1961175</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=1961175</wfw:comment><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/AdventuresatCeBIT_9D4B/CropperCapture%5B15%5D%5B12%5D.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 10px 15px; border-right-width: 0px" height="236" src="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/AdventuresatCeBIT_9D4B/CropperCapture%5B15%5D_thumb%5B10%5D.png" width="330" align="right" border="0"&gt;&lt;/a&gt; You would think that flying from Dublin to Hanover would be a simple thing. After all, you can get direct flights from Dublin to probably a hundered cities between Aer Lingus and Ryanair. But, it turns out that Hanover is not one of those places. On the Thursday (15th) I was flying, Aer Lingus doesn't even fly there so instead I got to take SAS through Copenhagen. &lt;/p&gt; &lt;p&gt;I'm usually a bit wary of flights with short connection times, but I figured that (a) Copenhagen was a small airport and (b) SAS knew what they were doing by only giving me fourty-five minutes between flights. It turns out I was &lt;a href="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/AdventuresatCeBIT_9D4B/CropperCapture%5B16%5D%5B5%5D.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 15px 10px 0px; border-right-width: 0px" height="236" src="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/AdventuresatCeBIT_9D4B/CropperCapture%5B16%5D_thumb%5B3%5D.png" width="330" align="left" border="0"&gt;&lt;/a&gt;wrong about latter.&lt;/p&gt; &lt;p&gt;The flight into Dublin was delayed by just long enough that when I reached Copenhagen and sprinted the length of the airport I still missed the outgoing connection by five minutes. Naturally the next flight wasn't for another six hours.&lt;/p&gt; &lt;p&gt;Winded from my five-minute sprint through terminal three, I slowly made my way to the 'connections' desk. Either the Danish are just very well prepared or a lot of people miss their flights at Kastrup: they have one of the most organised areas for stranded passengers I've seen. &lt;/p&gt; &lt;p&gt;It turned out that there was a slightly faster way to get me to Hanover through Amsterdam, so I was booked on a different flight with KLM. Instead of leaving Copenhagen at 8 and arriving at 9, I'd leave Copenhagen at 6, go through Amsterdam, and arrive at 8 in Hanover. &lt;a href="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/AdventuresatCeBIT_9D4B/CropperCapture%5B17%5D%5B6%5D.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 0px 0px 10px; border-right-width: 0px" height="236" src="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/AdventuresatCeBIT_9D4B/CropperCapture%5B17%5D_thumb%5B4%5D.png" width="330" align="right" border="0"&gt;&lt;/a&gt;It sounded like a lot of extra work to save an hour but they didn't give me a choice. &lt;/p&gt; &lt;p&gt;As you might expect, when I finally landed in Hanover, my bags had been left behind in Amsterdam. I was told that they could be delivered directly to CeBIT the next day (a nice surprise) and then I got a taxi to take me to the apartment.&lt;/p&gt; &lt;p&gt;That's right, apartment. I guess it's quite common for families in Hanover to rent their house/apartment/room/whatever out during the show and go on holidays. In some cases, they don't actually leave and you end up sharing their house as well. A slightly foreign concept to me, but the Germans I was working with at the booth thought it was the most normal thing in the world. So I had an apartment, but had been unable to contact the host about when and where to pick up the keys. &lt;/p&gt; &lt;p&gt;Luckily, the final part of the day worked out and when I arrived at the building, my host was waiting outside with the keys. I headed upstairs, made myself a sandwich, and went to bed. We'll disregard the fact that (a) the apartment building had entrances to the rooms on an outside wall (like a motel), (b) none of the doors had numbers and (c) there were no outside lights. I wouldn't want to complain too much in a single post :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1961175" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/Conferences/default.aspx">Conferences</category></item></channel></rss>