<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>No Fluff Just Stuff</title>
    <link>http://nofluffjuststuff.com</link>
    <description>No Fluff Just Stuff</description>
    <item>
      <title>Devs in the ‘Ditch Slides Posted</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/devs_in_the_ditch_slides_posted</link>
      <description>&lt;p&gt;I gave a talk at Devs in the &amp;#8216;Ditch last week when I was in London. I posted the slides on &lt;a href="http://www.slideshare.net/johannarothman/devsinthe-ditch" target="_blank"&gt;slideshare: Overcoming Three Pitfalls of Transitioning to Agile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The very nice people at 7digital made a video and &lt;a href="http://youtu.be/PLX1twVeH0E" target="_blank"&gt;posted&lt;/a&gt; it, too. If you can take the time, watch the entire video. Rob Bowyer gave a great talk about kanban and theory of constraints. My part about overcoming these three pitfalls starts at about 42 minutes in.&lt;/p&gt;
&lt;p&gt;There are many other pitfalls to transition. This talk had just three of them: the stories are too big, you need experts to do the work, and you implement as layers instead of through the architecture.&lt;/p&gt;
&lt;p&gt;I hope you enjoy the presentation and the video.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=JZB57O5UZb4:3ven0G0k3sc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=JZB57O5UZb4:3ven0G0k3sc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=JZB57O5UZb4:3ven0G0k3sc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=JZB57O5UZb4:3ven0G0k3sc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=JZB57O5UZb4:3ven0G0k3sc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=JZB57O5UZb4:3ven0G0k3sc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=JZB57O5UZb4:3ven0G0k3sc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=JZB57O5UZb4:3ven0G0k3sc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/JZB57O5UZb4" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 21 May 2013 00:29:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12298</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Auto-Refresh for Play Framework Apps</title>
      <link>http://nofluffjuststuff.com/blog/james_ward2/2013/05/auto_refresh_for_play_framework_apps</link>
      <description>&lt;p&gt;Over this past weekend I built a little tool for Play Framework app developers which auto-refreshes an app in Chrome when the source code or static assets change.&lt;/p&gt;
&lt;p&gt;Check out a video demonstration:&lt;br /&gt;
&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/XsBg2suJR5s?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;For information on how to set it up, check out the project on GitHub:&lt;br /&gt;
&lt;a href="https://github.com/jamesward/play-auto-refresh"&gt;https://github.com/jamesward/play-auto-refresh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Special thanks to &lt;a href="http://jsuereth.com/" target="_blank"&gt;Josh Suereth&lt;/a&gt; for helping me figure out the SBT magic.&lt;/p&gt;</description>
      <pubDate>Wed, 15 May 2013 17:02:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3719</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Android Panel and Kiosk Apps</title>
      <link>http://nofluffjuststuff.com/blog/james_harmon/2013/05/android_panel_and_kiosk_apps_2</link>
      <description>&lt;span style="font-family: Verdana, sans-serif;"&gt;One advantage of doing business in the Chicago area is getting to see lots of manufacturers. &amp;nbsp;The Midwest still builds stuff.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;As an Android developer who gets to talk with many of the local companies I've recently noticed a pattern in the Android space that I wanted to share.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;High end tools and machines often contain some kind of display that describes the status of the tool or provides a way to configure or operate the tool. &amp;nbsp;And by "tools and machines" I'm covering a huge variety of products.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Look at the control panel for the new LifeFitness exercise machines below.&lt;/span&gt;&lt;br /&gt;  &lt;img alt="" border="0" height="225" src="http://www.lifefitness.com/static/cms_workspace/products/commercial/Cardio/Discover/Entertainment.png" title="Android Panel for Exercise Machine" width="320" /&gt; &lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;It is pretty clear that this could be done using an Android device (and I believe it is).&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I call this kind of application a "Panel" app.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;What 6 qualities differentiate this from a typical app.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;li&gt;Fixed in place (built into the machine or tool)&lt;/li&gt;&lt;li&gt;Custom user interface (doesn't follow the Android UI guidelines)&lt;/li&gt;&lt;li&gt;Other apps are unavailable or hidden (the user can't run their own apps)&lt;/li&gt;&lt;li&gt;Targeted to a very small set of devices (only runs on the tablet built into the machine)&lt;/li&gt;&lt;li&gt;Users engage with it frequently and over a long period of time (so they can learn custom interface)&lt;/li&gt;&lt;li&gt;interface with underlying machine or tool&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: Verdana, sans-serif;"&gt;The other similar, but slightly different, kind of device runs a single purpose app &amp;nbsp;also. I call it a "Koisk" app.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;The 4 characteristics of a Kiosk app&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;li&gt;Public (think shopping mall)&lt;/li&gt;&lt;li&gt;Wider audience (user has brief use of it, so must be easy to use which means that it should work like apps the user is familiar with) follow design guidelines&lt;/li&gt;&lt;li&gt;Fixed in place (mounted on a wall)&lt;/li&gt;&lt;li&gt;Locked down (can only run target app)&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt; &lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;These apps never appear in the marketplace but are great opportunities for Android developers. &amp;nbsp;Keep them in mind when you search for your next consulting gig.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 14 May 2013 07:59:00 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-7249924828832518236.post-7832343074838018591</guid>
      <dc:creator>James Harmon</dc:creator>
    </item>
    <item>
      <title>Book Review Functional Programming For Java Developers</title>
      <link>http://nofluffjuststuff.com/blog/demian_neidetcher/2013/05/book_review_functional_programming_for_java_developers</link>
      <description>&lt;p&gt;First off, this is a small book. 72 pages including a glossary. I was able to read it on a plne ride from Louisiana to Denver. Like the tagline says, I hope I never need this book.&lt;/p&gt;

&lt;p&gt;As the title suggests, the book is about making Java more functional. On my team we spend half our time in Groovy and half on Scala. I suppose we have done similar things in Groovy. The support that Groovy has for closures makes it easier than it would have been in Java.&lt;/p&gt;

&lt;p&gt;He also covers what is coming in Java for more FP features like closures. The syntax looks clunky but I could see living with it if I had no choice.&lt;/p&gt;

&lt;p&gt;I found the book useful in reviewing and appreciating where I&amp;#8217;m at. How things were in Java and how nice things are in Scala. Even if you don&amp;#8217;t need to do functional programming in Java right now I think this book is a good read. If my current gig fell apart and I had to do Java fulltime then I would grab this book to keep my sanity.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/neidetcher/~4/AraOZCGYOPk" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 14 May 2013 00:00:00 CDT</pubDate>
      <guid isPermaLink="true">http:neidetcher.com/programming/2013/05/14/book-review-functional-programming-for-java-developers</guid>
      <dc:creator>Demian Neidetcher</dc:creator>
    </item>
    <item>
      <title>Securing Single Page Apps and REST Services</title>
      <link>http://nofluffjuststuff.com/blog/james_ward2/2013/05/securing_single_page_apps_and_rest_services</link>
      <description>&lt;p&gt;The move towards Single Page Apps and RESTful services open the doors to a much better way of securing web applications.  Traditional web applications use browser cookies to identify a user when a request is made to the server.  This approach is fundamentally flawed and causes many applications to be vulnerable to Cross-Site Request Forgery (CSRF) attacks.  When used correctly, RESTful services can avoid this vulnerability altogether.  Before we go into the solution, lets recap the problem.&lt;/p&gt;
&lt;p&gt;HTTP is a stateless protocol.  Make a request and get a response.  Make another request and get another response.  There is no correlation (i.e. &amp;#8220;state&amp;#8221;) between these requests.  This poses a problem when you need to identify a user to the system because one request logs the user in and another request needs to tell the server who is making the request.&lt;/p&gt;
&lt;p&gt;Web browsers have an automatic way to store some information (i.e. &amp;#8220;state&amp;#8221;) on the user&amp;#8217;s machine and then add that information to every request.  This is called &amp;#8220;cookies&amp;#8221; and they provide a convenient way to create a correlation across HTTP requests.  Most web frameworks have a built-in concept called &amp;#8220;session state&amp;#8221; which uses a unique token for each user.  That token is stored in a cookie and automatically sent to the server on each request.  Now the server knows how to identify a user across requests.&lt;/p&gt;
&lt;p&gt;This approach is simple and works great until you realize the dark truth of CSRF.  Usually a user is doing something that tells the browser to make a request to server and because the cookies are sent, everything is good.  But suppose the user gets an email that says &amp;#8220;Check out these funny kittens!&amp;#8221; with a link to a malicious website.  No one can avoid seeing funny kittens, so the user clicks the link.  It turns out that the funny kittens website is a malicious website which now makes some requests to an application that only uses cookies for authentication.  Perhaps the malicious request is to transfer money out of your bank account.  Or perhaps it posts something on a social network.  These requests will be identified AS THE USER because no matter what causes the request, the browser will send the cookies.  This is CSRF and many web apps are vulnerable to it.&lt;/p&gt;
&lt;p&gt;The root of the problem is using cookies as the sole method of identifying a user since no matter how the request is initiated, the cookies which include the authentication token are always sent to the server.  One way to protect against this type of attack is to force each request to contain another token which is not automatically sent.  Most web frameworks provide a way to do this but they are error prone because it often requires developers to explicitly enable it and the approach doesn&amp;#8217;t always work well with Single Page Apps.&lt;/p&gt;
&lt;h2&gt;The Way Forward&lt;/h2&gt;
&lt;p&gt;The easiest way to do authentication without risking CSRF vulnerabilities is to simply avoid using cookies to identify the user.  However each request must still send a token to the server to identify the user.  This requires a token to be somehow &amp;#8220;remembered&amp;#8221; so that each request can manually send it.  Luckily Single Page Apps provide a way to keep a token in memory across requests because the page never reloads.&lt;/p&gt;
&lt;p&gt;But what if the page does reload and the authentication token is lost because that in-memory state has been cleared?  Does the user have to log back in to get a new authentication token?  That would not be a very good user experience.  Browsers have a few ways to store data locally across requests.  The easiest is to simply use cookies.  Wait&amp;#8230;  aren&amp;#8217;t cookies the root of the problem?  Cookies themselves are not the cause of CSRF vulnerabilities.  It&amp;#8217;s using the cookies on the server to validate a user that is the cause of CSRF.  Just putting an authentication token into a cookie doesn&amp;#8217;t mean it must be used as the mechanism to identify the user.&lt;/p&gt;
&lt;p&gt;When a Single Page App loads it can read the cookies (via JavaScript), grab the authentication token, and then manually send that token on each request through a custom HTTP header.  This is safe because that malicious funny kitten site does not have access to the cookies.  If it did, every website would have a severe security issue.&lt;/p&gt;
&lt;p&gt;The flow with this approach may go something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The user navigates in their browser to the application&lt;/li&gt;
&lt;li&gt;The server returns a basic web page and a JavaScript application&lt;/li&gt;
&lt;li&gt;The JavaScript application can&amp;#8217;t find an authentication token in the web site&amp;#8217;s cookies&lt;/li&gt;
&lt;li&gt;The JavaScript application displays a login form&lt;/li&gt;
&lt;li&gt;The user enters correct login credentials and then submits the form&lt;/li&gt;
&lt;li&gt;The server validates the login information and creates an authentication token for the user&lt;/li&gt;
&lt;li&gt;The server sets the authentication token in a cookie and returns it to the JavaScript application&lt;/li&gt;
&lt;li&gt;The JavaScript application makes a request for some protected data, sending the authentication token in a custom header&lt;/li&gt;
&lt;li&gt;The server validates the token and then returns the data&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At step 3 if the JavaScript application does find an authentication token in a cookie then it can skip ahead to step 8.&lt;/p&gt;
&lt;p&gt;At step 9 the server may not be able to validate the token in which case it should return a 401 (Unauthorized) response which the JavaScript application can handle by going to step 4.&lt;/p&gt;
&lt;p&gt;There are a variety of ways to implement this approach but the real key is that the server doesn&amp;#8217;t validate a user based on a cookie, it instead validates the user with a customer HTTP header.&lt;/p&gt;
&lt;p&gt;This approach can be used over HTTP or HTTPS.  But it is highly recommended that authentication tokens are only passed over encrypted connections which means you should probably only be using this approach over HTTPS connections.  Whenever an application is not being used for local development it should automatically redirect HTTP connections to the corresponding HTTPS connection.  In this setup make sure that the cookie containing the authentication token can&amp;#8217;t be inadvertently transmitted over the HTTP connection by forcing the cookie to only be sent over HTTPS (an option which is typically available in cookie APIs).&lt;/p&gt;
&lt;h2&gt;Sample App&lt;/h2&gt;
&lt;p&gt;To better explain this approach lets walk through an example application.  You can get the full source for the application from: &lt;a href="http://github.com/jamesward/play-rest-security"&gt;http://github.com/jamesward/play-rest-security&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This application is built using Play Framework, Java, jQuery, and CoffeeScript.&lt;/p&gt;
&lt;p&gt;To run the application locally, &lt;a href="http://playframework.com/download"&gt;download Play 2.1.1&lt;/a&gt;, extract the zip and optionally add the extracted directory to your system&amp;#8217;s path.  Then using a command line, navigate into the &lt;code&gt;play-rest-security&lt;/code&gt; directory and run the following (assuming the &lt;code&gt;play&lt;/code&gt; command is in your path):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;play run&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will start the application which you can connect to in your browser at: &lt;a href="http://localhost:9000/"&gt;http://localhost:9000/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should see a login form which you can test out and once logged in, you will see the protected data and can add new data.&lt;/p&gt;
&lt;p&gt;There are also a number of &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/test"&gt;functional and unit tests&lt;/a&gt; for the application which validate the security of the application.  You can run the tests locally by running:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;play test&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;RESTful JSON Back-End Services&lt;/h3&gt;
&lt;p&gt;Starting with &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/models/User.java"&gt;User.java&lt;/a&gt; you will see this is a typical database-backed entity using JPA.  The &lt;code&gt;User&lt;/code&gt; class has a property &lt;code&gt;authToken&lt;/code&gt; which will store a single authentication token.  In a real-world application you will probably want to allow a user to be logged in from multiple clients (e.g. different browsers).  To enable this you could simply turn this into a list.  You may also want to have some tracking on when authentication tokens are used, what IP address used them, and when they were created.  The tokens could also be encrypted in the database.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/models/Todo.java"&gt;Todo.java&lt;/a&gt; file contains the &lt;code&gt;Todo&lt;/code&gt; entity which stores a user&amp;#8217;s Todos.  Access to the &lt;code&gt;Todo&lt;/code&gt; objects happen via the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/controllers/TodoController.java"&gt;TodoController.java&lt;/a&gt; class.  In this case the &lt;code&gt;TodoController&lt;/code&gt; only has two methods, &lt;code&gt;getAllTodos()&lt;/code&gt; and &lt;code&gt;createTodo()&lt;/code&gt;.  These methods are exposed via HTTP through the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/conf/routes"&gt;routes&lt;/a&gt; file.  The &lt;code&gt;TodoController&lt;/code&gt; has the &lt;code&gt;@With(SecurityController.class)&lt;/code&gt; annotation which setups up a request interceptor so that every request made to the controller must go through the &lt;code&gt;call&lt;/code&gt; method in the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/controllers/SecurityController.java"&gt;SecurityController.java&lt;/a&gt; class.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;call&lt;/code&gt; method in the &lt;code&gt;SecurityController&lt;/code&gt; tries to find an authentication token in a custom HTTP header.  If it finds a token then it tries to find a user with that token.  If found the user is added to the HTTP Context (a place to store data for the duration of the request) and then the original controller method is called.  Otherwise a 401 response is returned.&lt;/p&gt;
&lt;p&gt;Both &lt;code&gt;getAllTodos()&lt;/code&gt; and &lt;code&gt;createTodo()&lt;/code&gt; in the &lt;code&gt;TodoController&lt;/code&gt; use the authenticated user that was stored in the HTTP Context to either fetch the user&amp;#8217;s todos or create a new todo.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;SecurityController&lt;/code&gt; class also has &lt;code&gt;login&lt;/code&gt; and &lt;code&gt;logout&lt;/code&gt; request handlers which are mapped to URLs in the &lt;code&gt;routes&lt;/code&gt; file.  The &lt;code&gt;login&lt;/code&gt; method tries to locate a user by the provided username and password.  If it succeeds then it creates a new authentication token for the user, then creates a cookie containing the token, and returns the token in a JSON response.  The &lt;code&gt;logout&lt;/code&gt; method uses the &lt;code&gt;SecurityController&lt;/code&gt; interceptor to validate the user and then deletes the cookie that stores the authentication token and set&amp;#8217;s the user&amp;#8217;s &lt;code&gt;authToken&lt;/code&gt; to null.&lt;/p&gt;
&lt;p&gt;That is the RESTful back-end of the example app.  Now lets explore the front-end.&lt;/p&gt;
&lt;h3&gt;CoffeeScript + jQuery Front-End UI&lt;/h3&gt;
&lt;p&gt;In the &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/conf/routes"&gt;routes&lt;/a&gt; file you will see that requests to &lt;code&gt;/&lt;/code&gt; are handled by returning &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/public/index.html"&gt;public/index.html&lt;/a&gt;.  This file doesn&amp;#8217;t do much other than load jQuery and also load the &lt;code&gt;index.min.js&lt;/code&gt; file which is compiled and minified by Play&amp;#8217;s asset compiler.  The source for that file is &lt;a href="https://github.com/jamesward/play-rest-security/tree/master/app/assets/javascripts/index.coffee"&gt;index.coffee&lt;/a&gt; and it provides the whole UI for the application.  This example uses CoffeeScript because it provides a more concise and readable syntax for writing JavaScript applications.&lt;/p&gt;
&lt;p&gt;When the page is ready the &lt;code&gt;init&lt;/code&gt; function is called and the application attempts to find the authentication token in a cookie.  If it can&amp;#8217;t be found then a login form is displayed.  If the cookie can be found then the &lt;code&gt;displayTodos&lt;/code&gt; function is called.  This function tries to fetch the user&amp;#8217;s list of &lt;code&gt;Todo&lt;/code&gt; objects and then display them.  The request to fetch the &lt;code&gt;Todo&lt;/code&gt; objects is a normal Ajax JSON request except that the user&amp;#8217;s authentication token is sent in a custom HTTP header.  If the server responds with a 401 error then the application calls &lt;code&gt;displayLoginForm&lt;/code&gt; otherwise the user&amp;#8217;s &lt;code&gt;Todo&lt;/code&gt; objects are displayed.  The &lt;code&gt;createTodo&lt;/code&gt; function also sends the authentication token in custom HTTP header and the JSON data for the &lt;code&gt;Todo&lt;/code&gt; within an Ajax request.&lt;/p&gt;
&lt;p&gt;That is really all there is to the front-end UI.  Most of the code in the CoffeeScript is displaying data and forms in the HTML through jQuery DOM manipulation.  This DOM manipulation could also be done through one of the many client-side templating libraries.&lt;/p&gt;
&lt;h2&gt;Further Learning&lt;/h2&gt;
&lt;p&gt;The important point to remember is that using cookies for authentication opens up the possibility of CSRF attacks.  Custom HTTP headers provide a more secure method of identifying users than cookies alone do.  The combination of Single Page Apps and REST services provide the perfect opportunity to move away from cookie based authentication.  This simple application illustrates how to implement this approach.&lt;/p&gt;
&lt;p&gt;Learn more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/XSRF"&gt;CSRF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://playframework.com"&gt;Play Framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Mon, 13 May 2013 10:06:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3715</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Individuals and Interactions With Gil Broza</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/individuals_and_interactions_with_gil_broza</link>
      <description>&lt;p&gt;My friend and colleague, Gil Broza, is interviewing me for his &lt;a href="http://www.mcssl.com/app/?af=1528296" target="_blank"&gt;Individuals and Interactions&lt;/a&gt; virtual training event. My topic? &amp;#8220;Focus Keeps You Going.&amp;#8221;&lt;/p&gt;
&lt;p&gt;If you read my &lt;a title="Personal Kanban and Iterations, Day 5" href="http://www.jrothman.com/blog/mpd/2013/05/personal-kanban-and-iterations-day-5.html" target="_blank"&gt;personal kanban series&lt;/a&gt; a couple of weeks ago, you saw how my focus kept me going. Even with a big interruption last week, due to a death in the family, I was able to maintain my focus, because I knew exactly what I had to do, to finish my work, to get ready for my trip today.&lt;/p&gt;
&lt;p&gt;Gil has other great people in his event: Doc List, Ellen Gottesdiener, Mary Gorman, David Spann, Christopher Avery and Bob Schatz might be names you recognize. How about Rick Ross? David Spann? Caren DesBrisay? You might not recognize these names, and you should listen to what they have to say, too.&lt;/p&gt;
&lt;p&gt;Check out Gil&amp;#8217;s &lt;a href="http://www.mcssl.com/app/?af=1528296" target="_blank"&gt;Individuals and Interactions&lt;/a&gt; training. Sign up. It&amp;#8217;s a steal.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=Bwv5oCdpfHg:pgfMZ33B7ZU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=Bwv5oCdpfHg:pgfMZ33B7ZU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=Bwv5oCdpfHg:pgfMZ33B7ZU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/Bwv5oCdpfHg" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 13 May 2013 08:07:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12288</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Succeeding with DDD - Documentation</title>
      <link>http://nofluffjuststuff.com/blog/paul_rayner/2013/05/succeeding_with_ddd__documentation</link>
      <description>&lt;p&gt;I&amp;#8217;m often asked about what teams doing Domain-Driven Design (DDD) should do in the way of documentation.The question &lt;a href="http://stackoverflow.com/questions/16284767/what-types-of-written-design-documents-are-used-in-ddd-projects"&gt;What types of Written Design Documents are used in DDD projects?&lt;/a&gt;) came up on Stack Overflow and I started to write a response, but realized it was getting way too long to post there. So here it is.&lt;/p&gt;

&lt;p&gt; &lt;span class='pullquote-right' data-pullquote='When it comes to documentation, we need to begin with the end in mind.'&gt;When it comes to documentation, we need to begin with the end in mind. We need
to understand why we are writing it in the first place: What purpose is each
document intending to serve?
&lt;/span&gt; The problem with a lot of documentation is that it is seen as an end in
itself, rather than a means to an end, which is to deliver a quality product
that meets an important customer need. This is why agile teams adopt the value
of &amp;#8220;working software over comprehensive documentation.&amp;#8221;&lt;/p&gt;

&lt;p&gt;However, documentation serves a number of important, and different, purposes.
For each documentation artifact, ask: &amp;#8220;Is this artifact to support the team
now as it develops the software, or is it to support future development?&amp;#8221;
Depending on the answer to this question, approach the documentation in a
different way. Let&amp;#8217;s start with supporting future development.&lt;/p&gt;

&lt;h2&gt;The Problem of Tribal Mythology&lt;/h2&gt;

&lt;p&gt;Jason Smith in &lt;a href="http://www.amazon.com/Elemental-Design-Patterns-Jason-Smith/dp/0321711920"&gt;Elemental Design Patterns&lt;/a&gt; says the following about kinds of
documentation supporting future development:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;We know we should document our software; we know we should keep it up to
date; we know we should commit to pen or screen the whys, the hows, and the
reasons; but we also know it is a pain. It really is, so we don’t do it. What
we have instead is a body of knowledge that is locked within the heads of
developers, that is passed along in fits and spurts, when prompted and only
where necessary, frequently without any comprehensive framework of common
understanding among stakeholders.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;As Jason points out, Grady Booch has popularized the phrase “tribal knowledge”
for this kind of information artifact. Documenting for the future preserves
the oral tradition by encoding knowledge that already exists. It supports the
later transmission, socializing and sustainability of the &amp;#8220;tribal knowledge&amp;#8221;
of the team.&lt;/p&gt;

&lt;p&gt;So one type of documentation we create supports future development by
preserving the oral tradition that teams develop along with the software.
Without this kind of documentation &amp;#8220;&amp;#8230;the collected tribal knowledge degrades
into “tribal mythology” (Booch). When this happens, no one really knows how
the system ended up the way it has, and the knowledge is lost.&lt;/p&gt;

&lt;p&gt;This kind of supporting, future-facing documentation is particularly relevant
where such knowledge is not immediately apparent by reading the code,
supporting tests and other artifacts. Such documentation is typically
written after features/modules are implemented/delivered. It can be produced
as the software is being built, but then there is the additional maintenance
cost of keeping it up-to-date as things change.&lt;/p&gt;

&lt;h2&gt;Preserving Tribal Wisdom&lt;/h2&gt;

&lt;p&gt;So we want to avoid tribal mythology by documenting our systems as necessary.
We want to capture and preserve for people to come the &amp;#8220;tribal wisdom&amp;#8221; that
has been gained in the rough-and-tumble of developing the system. As Jason
points out:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Tribal wisdom, however, is the virtuous flip side of this tribal mythology.
It is prescribed action with understanding, how accompanied by why, and is
adaptable to new environments, new situations, and new problems. It transcends
rote copying, and provides illumination through a comprehensive discussion of
the reasons behind the action.&lt;/p&gt;

&lt;p&gt;At some point in the past, for almost every
action or decision in a system, someone knew why it was done that way.
Carrying those decisions forward, even the small ones, can be critical. Small
decisions accrete into large systems, and small designs build into large
designs. By ensuring that we have a strong tradition of knowledge retention
that facilitates understanding, we build a tradition of tribal wisdom.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h2&gt;Favor Documenting over Documentation&lt;/h2&gt;

&lt;p&gt;So we support future development by preserving tribal wisdom through
documentation, but what about supporting the team as they develop the product?&lt;/p&gt;

&lt;p&gt;In the same sense that agile teams favor planning over following a plan, they
tend to favor documenting (as an ongoing, just-in-time, activity) over
creating a (once-and-for all) document. And in the same manner that their
planning is focused around high-fidelity communication, customer collaboration
and team interaction, any documenting they do tends to have the same goals and
characteristics.&lt;/p&gt;

&lt;p&gt;A plan is only useful until it needs to change, which is why agile teams focus
on enabling and responding to change. The intention is the same with any
documentation they create in service to building a software solution - it
should not be painful, but rather serve the team in better understanding the
problem space, and helping the team grasp what the solution needs to look
like. Let&amp;#8217;s look at some important characteristics of this style of
documentation:&lt;/p&gt;

&lt;h2&gt;Characteristics of Useful Documentation&lt;/h2&gt;

&lt;h3&gt;Trustworthy&lt;/h3&gt;

&lt;p&gt;This should have to go without saying but, like comments in code, much of the
documentation that exists cannot be trusted. If you have documents that are
supporting your development, make them living documents by keeping them up to
date. They must be correct. They must speak the truth about the software and
the business domain.&lt;/p&gt;

&lt;h3&gt;Malleable&lt;/h3&gt;

&lt;p&gt;Part of keeping documents trustworthy is enabling change. Documentation must
be malleable - make it as easy to change as possible. Reduce the friction of
having to change it. Documentation that is burdensome to change is less likely
to be kept up-to-date.&lt;/p&gt;

&lt;p&gt;Makeing it malleable typically means making it as lightweight and informal as
possible. Prefer hand-drawn diagrams over created in a tool (such as Visio),
prefer electronic over hard-copy. Only include the pertinent details. Indicate
which things are tentitive, and which may be harder to change.&lt;/p&gt;

&lt;p&gt;The important thing is to understand the purpose of each document, and ensure
that it is kept up to date. As much as possible, push the knowledge into the
code and the tests.&lt;/p&gt;

&lt;h3&gt;Accessible&lt;/h3&gt;

&lt;p&gt;Documentation must be as accessible as necessary. Things that the team is
working on right now, I would expect to be on the walls of the team area. Just
the same as many teams use information radiators such as burndown charts and
task boards to track their delivery progress, I like to see sketches of design
diagrams on the walls too.&lt;/p&gt;

&lt;p&gt;I like to see a context map on the wall, showing the terrain the team is
dealing with. I&amp;#8217;ve worked with many teams that were not co-located, so we
would put the the documents in shared folders, and on the wiki. Sometimes we
would sketch on a whiteboard, and then take a photo of the diagram and put it
on the team wiki.&lt;/p&gt;

&lt;p&gt;Don&amp;#8217;t let your wiki fall prey to the &lt;a href="http://en.wikipedia.org/wiki/Tragedy_of_the_commons"&gt;Tragedy of the Commons&lt;/a&gt;. Appoint a curator for your documents if necessary. But strive for team-ownership of the documentation, just as you strive for team ownership of the
code.&lt;/p&gt;

&lt;h2&gt;Documentation and Doing DDD&lt;/h2&gt;

&lt;p&gt;DDD teams often find they have a leg-up with documentation, because they
devote so much effort to distilling domain knowledge into the software itself
via the domain model. Teams doing DDD are focused capturing the essence of the
critical concepts of the core domain in the domain model &lt;em&gt;itself&lt;/em&gt;. With DDD
the rules, reasoning, assumptions and key business concepts are embedded in
the software.&lt;/p&gt;

&lt;p&gt;When I start with a team, the first thing we draw together is a context map.
This diagram helps set them up for success in terms of knowing what context
they are working in, how it relates to their core domain and the other
contexts they need to interact with.&lt;/p&gt;

&lt;p&gt;For DDD teams, and for software teams in general, the important thing should
be not that the domain is documented, it is that it is &lt;em&gt;understood&lt;/em&gt;, and that
this understanding is shared among everyone connected with developing the
software. Good documentation engenders a shared understanding of the business
domain. Good documentation for a DDD team captures the essence of the
reasoning around the domain model: a rich, expressive software model that
enables significant business capabilities in the core domain, supporting the
strategic goals of the business. Teams doing DDD accomplish this by
simplifying domain complexity enough to provide a shared language and
understanding, and embedding it in the code.&lt;/p&gt;

&lt;p&gt;DDD is not prescriptive about documentation. What documents are produced
usually has more to do with the team&amp;#8217;s existing process than doing DDD.
However, there are certain kinds of documentation that teams doing DDD do find
very helpful. Let&amp;#8217;s look at some of these.&lt;/p&gt;

&lt;h2&gt;Requirements Specification?&lt;/h2&gt;

&lt;p&gt;Many teams opt for user stories as items in a feature queue, prioritized by value to the business
(i.e. &amp;#8220;Product Backlog&amp;#8221;, in Scrum terms). See my earlier blog post on &lt;a href="http://thepaulrayner.com/blog/2013/02/15/agile-user-stories-and-domain-driven-design-ddd/"&gt;user stories and DDD&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A team doing DDD could use a requirements specification document. But the trap with heavyweight, detailed specification documents is that they tend to &lt;a href="http://www.leanessays.com/2011/08/dont-separate-design-from.html"&gt;separate design from implementation&lt;/a&gt;. As Mary Poppendieck writes:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;The theme running through all of my experience is that the long list of
things we have come to call requirements – and the large backlog of things we
have come to call stories – are actually the design of the system. Even a
list of features and functions is design. And in my experience, design is the
responsibility of the technical team developing the system.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;and&amp;#8230;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;I suggest we might get better results if we skip writing lists of
requirements and building backlogs of stories. Instead, expect the
experienced designers, architects, and engineers on the development team to
design the system against a set of high-level goals and constraints – with
input from and review by business analysts and product managers, as well as
users, maintainers, and other stakeholders.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Agile teams tend to eschew producing detailed requirements specifications,
preferring a more light-weight approach to describing what the system needs to
do. The problem with such documents is that design decisions are made too
early, with insufficient domain and technical knowledge, and having it written
up in a specification tends to set that ignorance in concrete.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;All too often, detailed requirements lists and backlogs of stories are
actually bad system design done by amateurs.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The risk in this approach is that:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Separating design from implementation amounts to outsourcing the
responsibility for the suitability of the resulting system to people outside
the development team. The team members are then in a position of simply doing
what they are told to do, rather than being full partners collaborating to
create great solutions to problems that they care about.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Most teams I coach are following some form of agile process (Scrum, XP etc)
and thus tend to focus more on rapid feedback loops and incremental
development over producing copious amounts of documentation first. This tends
to aid with modeling, as the documentation is produced as-needed, rather than
to get through some &amp;#8220;gate&amp;#8221; in a prescribed SDLC process. The code itself is
the design, paraphrasing Jack Reeves.&lt;/p&gt;

&lt;p&gt;Some teams find it helpful to develop a list of use cases, a list of tasks the
program is able to perform or some combination of both. I would experiment
with what you find most useful for your team. Use cases have fallen out of
vogue recently, but I am still a big fan of them.&lt;/p&gt;

&lt;p&gt;Note that I am not against specifying requirements in written form, but rather entombing those requirements (i.e. what features the system should provide to meet the customer&amp;#8217;s needs) in a large tome that locks-in the details of how the system should behave. I have utilized use cases in a lightweight, just-in-time way and found them very useful. See Alistair Cockburn&amp;#8217;s article on &lt;a href="http://alistair.cockburn.us/Why+I+still+use+use+cases"&gt;Why I still use use cases&lt;/a&gt; for similar reasons to mine.&lt;/p&gt;

&lt;p&gt;I would also strongly recommend using mockups and prototypes as much as
possible.&lt;/p&gt;

&lt;h2&gt;Core Elements&lt;/h2&gt;

&lt;p&gt;I typically create a short document that captures the core domain vision
statement and the context map.&lt;/p&gt;

&lt;h2&gt;Architecture&lt;/h2&gt;

&lt;p&gt;Architecture is largely orthogonal, but supportive, for DDD. I find the &lt;a href="http://en.wikipedia.org/wiki/4%2B1_architectural_view_model"&gt;&amp;#8220;4+1 architecture&amp;#8221; approach&lt;/a&gt; to be the most useful. It is useful to keep in mind that, as Grady Booch declared in 2009, architecture is a &lt;em&gt;shared hallucination&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Architecture is just a collective hunch, a shared hallucination, an assertion by a set of stakeholders on the nature of their observable world, be it a world that is or a world as they wish it to be. Architecture therefore serves as a means of anchoring an extended set of stakeholders to a common vision of that world, a vision around which they may rally, to which they are led, and for which they work collectively to make manifest.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Notice that in Krutchen&amp;#8217;s approach, scenarios are the unifying thing.
Reference scenarios are a more specific form of this. See &lt;a href="http://skillsmatter.com/podcast/design-architecture/paulrayner-domain-scenarios"&gt;my presentation on
domain scenarios at the DDD Exchange 2012&lt;/a&gt; for a walkthrough of using reference
scenarios. In DDD &lt;em&gt;reference&lt;/em&gt; scenarios describe the &lt;em&gt;key business problems
that the model needs to solve&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Reference scenarios will be the core domain business capabilities that the
software, and in particular, the domain model, will enable. They often take
the form of a short narrative, with a supporting diagram. Not starting out
that way, but the key is capture the significant details that make the problem
worth solving for the business.&lt;/p&gt;

&lt;p&gt;George Fairbanks book, &lt;a href="http://www.amazon.com/Just-Enough-Software-Architecture-Risk-Driven/dp/0984618104/"&gt;Just-Enough Software Architecture&lt;/a&gt; is the best book I&amp;#8217;ve found on characterizing, describing and documenting software archtictures. I love the pragmatic, risk-driven approach to architecture that this book takes (the sections on modeling alone are excellent, though it defines DDD too narrowly for my taste). If you are looking for something more comprehensive in the software engineering tradition, then it&amp;#8217;s hard to beat the definitive tome: &lt;a href="http://www.amazon.com/Documenting-Software-Architectures-Views-Beyond/dp/0321552687"&gt;Documenting Software Architectures&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Ubiquitous language&lt;/h2&gt;

&lt;p&gt;It can be helpful having a document that explains the Ubiquitous Language.
Many teams develop a dictionary of significant business terms early on, and
for a team with a business analyst this can be a very significant
contribution. However, the same caveats mentioned above relating to separating
design from implementation are particularly relevant:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In most software development processes I have encountered, a business analyst or product owner has been assigned the job of writing the requirements or stories or use cases which constitute the design of the system. Quite frankly, people in these roles often lack the training and experience to do good system design, to propose alternative designs and weigh their trade-offs, to examine implementation details and modify the design as the system is being developed.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;So as with all the documents described here, the dictionary must be kept up to
date to be useful. Such a dictionary can be an important start, but it
shouldn&amp;#8217;t be the end. I like to see it developed into a document that has
diagrams showing important states of the model, and how the terminology of the
domain model is used.&lt;/p&gt;

&lt;p&gt;As terms change over time, such a document can be a good place to explain why
these changes in language were made, since that kind of historical information
won&amp;#8217;t be obvious by looking at the code etc.&lt;/p&gt;

&lt;h2&gt;Informal UML diagrams&lt;/h2&gt;

&lt;p&gt;I am always sketching UML diagrams on whiteboards. It saddens me that many
teams don&amp;#8217;t see the value in this. I particularly find instance diagrams
particularly useful in walking through scenarios with domain experts. I find
that when the domain experts see the concrete, pertinent business data values
in the &amp;#8220;little boxes&amp;#8221; in the diagram, it really helps with  understanding what
the model is expressing.&lt;/p&gt;

&lt;p&gt;Many times when I work with a team that has an existing model, one of the
first things I will have the developers do is walk me and the domain expert
through a reference scenario on the whiteboard, explaining how the model
supports solving the important business problem. This activity alone is often
enough to show strengths and weaknesses of the domain model. Instance diagrams
also really help with understanding aggregate boundaries, since aggregates are
runtime artifacts.&lt;/p&gt;

&lt;p&gt;Sequence diagrams can be very helpful for understanding the application flow
from the UI, API, or context boundary down to the domain model. And also in
understanding interactions between sagas, objects, domain services or
aggregates (such as via application services or other infrastucture
responsible for eventual consistency between aggregates).&lt;/p&gt;

&lt;p&gt;To create electronic versions such I often use light-weight UML sketch tools
such as &lt;a href="http://www.websequencediagrams.com"&gt;Web Sequence Diagrams&lt;/a&gt; and &lt;a href="http://yuml.me"&gt;yUML&lt;/a&gt;. I like
the way these tools produce diagrams that look hand-drawn, which lends them
towards being viewed as transient and gives the team permission to change
them. One of the problems with producing high-quality UML diagrams is that it
tends to communicate that they are &amp;#8220;done,&amp;#8221; and shouldn&amp;#8217;t be changed. That they
are finished.&lt;/p&gt;

&lt;h2&gt;Anything else?&lt;/h2&gt;

&lt;p&gt;I&amp;#8217;m a big fan BDD tool such as Cucumber to create living documentation for
the system, if the team has the skills and experience with such a tool. For
example, the following feature file helps support the ubiquitous language
supporting the underlying conceptual model represented in the domain model.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m biased towards Cucumber as a tool because I like the separation of steps
in feature files and stepdefinitions encourages the separation of ubiquitous
language from the technical implementation. The business terminology goes in
the feature files, and should be refactored as the ubiquitous language is
refined over time.&lt;/p&gt;

&lt;p&gt;I am co-authoring the book &lt;em&gt;BDD with Cucumber&lt;/em&gt; for Pearson/Addison Wesley. The book will
cover doing BDD using Cucumber (Ruby), Cucumber-JVM and SpecFlow.&lt;/p&gt;

&lt;p&gt;But it&amp;#8217;s not the tool that&amp;#8217;s most important, the same thing could be done with
other acceptance testing frameworks such as Concordian, Fitnesse or Robot
Framework. There&amp;#8217;s an interesting discussion going on right now on the &lt;a href="http://tech.groups.yahoo.com/group/aa-ftt/message/1976"&gt;Agile
Alliance Functional Testing Tools (AA-FTT) mailing list&lt;/a&gt; about these
frameworks and the various tradeoffs they provide. The important thing is the
improvements I see in communication and collaboration when teams use these
tools to refine acceptance criteria for user stories.&lt;/p&gt;

&lt;h2&gt;Standalone vs. Combined Documents&lt;/h2&gt;

&lt;p&gt;No preference for this. Most teams work this kind of thing out on their own
over time. I&amp;#8217;m not even sure what the factors are for deciding whether to
combine documents or not. My preference is to keep documents short and
focused. I find they are more likely to be read and used if they are concise
and cohesive - maybe principles of good software module design could be
pertinent in structuring documents too.&lt;/p&gt;

&lt;p&gt;My preference is for diagrams surrounded by text. If a picture is worth a 1000
words, supporting text that explains the critical aspects of the diagram is a
multiplier for this in terms of utility.&lt;/p&gt;

&lt;h2&gt;Respect Your Audience&lt;/h2&gt;

&lt;p&gt;Finally, and most importantly, when writing any software documentation
consider your audience. Will the readers be coders? testers? domain experts?
all of the above? Is this technical documentation, or business-facing
documentation? How you answer these questions should factor strongly in terms
of what kinds of information you include in the document, particularly how
much technical detail you incorporate.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s probably a lot of things I&amp;#8217;ve missed here. What has been your experience with doing DDD in terms of documentation?&lt;/p&gt;</description>
      <pubDate>Tue, 07 May 2013 12:40:00 CDT</pubDate>
      <guid isPermaLink="true">http://paulrayner.github.com/blog/2013/05/07/succeeding-with-ddd-documentation</guid>
      <dc:creator>Paul Rayner</dc:creator>
    </item>
    <item>
      <title>Personal Kanban and Iterations, Day 5</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/personal_kanban_and_iterations_day_5</link>
      <description>&lt;p&gt;I am still making progress, although it&amp;#8217;s more difficult to see my progress today. Why? Because I did not get as much to done.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/05/PersonalKanbanDay5.jpg" target="_blank"&gt;&lt;img class="alignleft size-thumbnail wp-image-12281" alt="PersonalKanbanDay5" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/05/PersonalKanbanDay5-150x150.jpg" width="150" height="150" /&gt;&lt;/a&gt;One of my readers asked a question about the Urgent queue  and the relative ranking of my ever-growing left hand column. How did I determine what to do, and what was the rank of each?&lt;/p&gt;
&lt;p&gt;The Urgent queue always trumps everything on the left hand side of the list. I was so frantic on Monday, I didn’t order anything when I put the list together. It almost didn’t matter what I worked on, as long as I made enough progress to get enough things to done. As you can see, I did pick and choose. When I rewrite my list for next week, I will reconsider what I need to do in order. I need to complete the workshops and talks first. Then do the writing. My list next week should be shorter, so I should feel less frantic and be able to finish it.&lt;/p&gt;
&lt;p&gt;As for the ones I have added to the bottom of the list, trumping the older ones in importance? No, not really. They are there because I realized I needed to do them &lt;em&gt;also&lt;/em&gt; this week. My todos are getting away from me. Putting them on the list means I don&amp;#8217;t lose them. I can relax because they are there. Now, I have to focus and do them.&lt;/p&gt;
&lt;p&gt;If you are wondering, will I continue this series next week? No. I will not. One week of this is plenty. I wanted to show you a number of things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Everyone has trouble every so often, with too much to do&lt;/li&gt;
&lt;li&gt;The best way to organize your work is to &lt;em&gt;see&lt;/em&gt; it, not matter what you decide to do next&lt;/li&gt;
&lt;li&gt;I like personal kanban, where I finish one chunk of work and go on to the next&lt;/li&gt;
&lt;li&gt;If you keep your chunks of work small, you can finish one and continue on to the next one. If your chunks of work are too large, you can&amp;#8217;t finish anything and you are tempted to multitask. (Don&amp;#8217;t do that!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to see all the posts in this series, here they are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Personal Kanban and Iterations, Day 1" href="http://www.jrothman.com/blog/mpd/2013/04/personal-kanban-and-iterations-day-1.html" target="_blank"&gt;Personal Kanban and Iterations, Day 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Personal Kanban and Iterations, Day 2" href="http://www.jrothman.com/blog/mpd/2013/04/personal-kanban-and-iterations-day-2.html" target="_blank"&gt;Personal Kanban and Iterations, Day 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Personal Kanban and Iterations, Day 3" href="http://www.jrothman.com/blog/mpd/2013/05/personal-kanban-and-iterations-day-3.html" target="_blank"&gt;Personal Kanban and Iterations, Day 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Personal Kanban and Iterations, Day 4" href="http://www.jrothman.com/blog/mpd/2013/05/personal-kanban-and-iterations-day-4.html" target="_blank"&gt;Personal Kanban and Iterations, Day 4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To see a &amp;#8220;real&amp;#8221; personal kanban board, the way I suggest you do it in &lt;a href="https://leanpub.com/manageyourjobsearch" target="_blank"&gt;Manage Your Job Search&lt;/a&gt;, go to &lt;a href="http://www.jrothman.com/blog/htp/2013/04/personal-kanban-for-your-job-hunt.html" target="_blank"&gt;Personal Kanban for Your Job Hunt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Read my &lt;a title="Book Review: Personal Kanban: Mapping Work | Navigating Life" href="http://www.jrothman.com/blog/mpd/2012/03/book-review-personal-kanban-mapping-work-navigating-life.html" target="_blank"&gt;Book Review of Personal Kanban&lt;/a&gt; for more information on how to do it right. And, Gil Broza will be interviewing me for his &lt;a href="http://www.mcssl.com/app/?af=1528296" target="_blank"&gt;Individuals and Interactions &lt;/a&gt;virtual training May 15, 2013. My topic? &amp;#8220;Focus Keeps You Going.&amp;#8221; Surprised? I don&amp;#8217;t think so!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=VINmAPKQbg4:g0zxTLXMGpg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=VINmAPKQbg4:g0zxTLXMGpg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=VINmAPKQbg4:g0zxTLXMGpg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=VINmAPKQbg4:g0zxTLXMGpg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=VINmAPKQbg4:g0zxTLXMGpg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=VINmAPKQbg4:g0zxTLXMGpg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=VINmAPKQbg4:g0zxTLXMGpg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=VINmAPKQbg4:g0zxTLXMGpg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/VINmAPKQbg4" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 03 May 2013 06:53:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12276</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Personal Kanban and Iterations, Day 4</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/personal_kanban_and_iterations_day_4</link>
      <description>&lt;p&gt;I&amp;#8217;m still chugging along, making great progress. I took some interruptions yesterday, as many people do. They are not reflected on my kanban. They are in my calendar, which I am not showing you :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/05/PersonalKanbanDay4.jpg" target="_blank"&gt;&lt;img class="alignleft size-thumbnail wp-image-12272" alt="PersonalKanbanDay4" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/05/PersonalKanbanDay4-150x150.jpg" width="150" height="150" /&gt;&lt;/a&gt;A potential client emailed, asked for a call. I said yes, and we arranged for a call that day. Could I have put it on my kanban? Yes. Did I bother? No. Does that make me a bad person? No. It&amp;#8217;s my kanban, not yours.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t track metrics from my kanban. If I did, I would want that and the other calls there. But I don&amp;#8217;t, so it&amp;#8217;s fine.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m using my kanban to help me to get to done on my tasks, not to track my every piece of work. I&amp;#8217;m using it to not forget work. I have a couple of phone calls this morning and a phone call this afternoon. I hope to complete one of the workshops today. Maybe.&lt;/p&gt;
&lt;p&gt;I have a workout tomorrow and a number of phone calls, so I might not complete anything tomorrow. We will see. On the other hand, I am whittling down my list to something manageable. I no long feel anxious about it. I can see my progress. And, I have managed to blog this week. I am a happy, productive woman.&lt;/p&gt;
&lt;p&gt;And, that is what personal kanban is all about.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=cpRhW_BOOMI:uJanSpSbx1M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=cpRhW_BOOMI:uJanSpSbx1M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=cpRhW_BOOMI:uJanSpSbx1M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=cpRhW_BOOMI:uJanSpSbx1M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=cpRhW_BOOMI:uJanSpSbx1M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=cpRhW_BOOMI:uJanSpSbx1M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=cpRhW_BOOMI:uJanSpSbx1M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=cpRhW_BOOMI:uJanSpSbx1M:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/cpRhW_BOOMI" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 02 May 2013 07:55:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12269</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>London Workshops Almost Full, May 16 &amp; 17, 2013</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/london_workshops_almost_full_may_16__17_2013</link>
      <description>&lt;p&gt;Are you considering joining me in my &lt;a href="http://www.jrothman.com/2013/04/join-me-in-london-may-16-17-2013-for-project-management-and-coaching-workshops/" target="_blank"&gt;Coaching or Project Management&lt;/a&gt; workshops in London on May 16 or May 17, 2013? If so, please decide quickly.&lt;/p&gt;
&lt;p&gt;I have room for two more people in the coaching workshop. I have room for three more people  in the project management workshop. When those places are gone, they are gone. That&amp;#8217;s it, no more. I will run a waiting list.&lt;/p&gt;
&lt;p&gt;If you are considering it because you are not sure, email me.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fk1XyxomgSA:VQZNcsyss6M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fk1XyxomgSA:VQZNcsyss6M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fk1XyxomgSA:VQZNcsyss6M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=fk1XyxomgSA:VQZNcsyss6M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fk1XyxomgSA:VQZNcsyss6M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=fk1XyxomgSA:VQZNcsyss6M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fk1XyxomgSA:VQZNcsyss6M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fk1XyxomgSA:VQZNcsyss6M:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/fk1XyxomgSA" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 02 May 2013 07:45:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12259</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Personal Kanban and Iterations, Day 3</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/05/personal_kanban_and_iterations_day_3</link>
      <description>&lt;p&gt;I&amp;#8217;ve been busy crossing work off my list. And, as with all of us busy people, I&amp;#8217;m adding more work to my list. I feel as if I&amp;#8217;ve accomplished a lot this week.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/05/PersonalKanbanDay3.jpg"&gt;&lt;img class="alignleft size-thumbnail wp-image-12251" alt="PersonalKanbanDay3" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/05/PersonalKanbanDay3-150x150.jpg" width="150" height="150" /&gt;&lt;/a&gt;It&amp;#8217;s just about time to rewrite my list, because with the cross-outs, it&amp;#8217;s hard to see where I am. It&amp;#8217;s time to go to draft 2 for the workshops, which might be the final drafts for the prose. I will be revising the simulations and interactions during the week. I hope to complete them by the end of the week. I do want to complete the workshops by the end of the week. I will feel more comfortable.&lt;/p&gt;
&lt;p&gt;I had some items pop up on my urgent queue: I did go vote.&lt;/p&gt;
&lt;p&gt;In &lt;a title="Personal Kanban and Iterations, Day 2" href="http://www.jrothman.com/blog/mpd/2013/04/personal-kanban-and-iterations-day-2.html" target="_blank"&gt;yesterday&amp;#8217;s post&lt;/a&gt;, there is a comment from Lukas, about how he likes rewriting his list, because he gets to reassess the relative rank of each item on the list when he rewrites the list.&lt;/p&gt;
&lt;p&gt;If you use stickies, in a &lt;a href="http://www.jrothman.com/blog/htp/2013/04/personal-kanban-for-your-job-hunt.html" target="_blank"&gt;real personal kanban&lt;/a&gt;, such as I suggest in &lt;a href="https://leanpub.com/manageyourjobsearch" target="_blank"&gt;Manage Your Job Search&lt;/a&gt;, you pick up the stickies and put them down. Because you handle the stickies, you have a way of checking in with yourself to reassess the relative value of each item on your queue.&lt;/p&gt;
&lt;p&gt;Okay, off to work again today. I&amp;#8217;ll check in with you again tomorrow.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=pPc1i6qoGNw:QJFFz0bOwBU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=pPc1i6qoGNw:QJFFz0bOwBU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=pPc1i6qoGNw:QJFFz0bOwBU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=pPc1i6qoGNw:QJFFz0bOwBU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=pPc1i6qoGNw:QJFFz0bOwBU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=pPc1i6qoGNw:QJFFz0bOwBU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=pPc1i6qoGNw:QJFFz0bOwBU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=pPc1i6qoGNw:QJFFz0bOwBU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/pPc1i6qoGNw" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 01 May 2013 10:08:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12250</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Personal Kanban and Iterations, Day 2</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/04/personal_kanban_and_iterations_day_2</link>
      <description>&lt;p&gt;I&amp;#8217;ve made great progress on Day 1, and I wasn&amp;#8217;t even in the office all day!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/04/PersonalKanbanDay2.jpg" target="_blank"&gt;&lt;img class="alignleft size-thumbnail wp-image-12243" alt="PersonalKanbanDay2" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/04/PersonalKanbanDay2-150x150.jpg" width="150" height="150" /&gt;&lt;/a&gt;You can see I&amp;#8217;ve added more todos, at the bottom of my queue. I discovered two urgent todo&amp;#8217;s. I had a call-back, to reschedule a doctor&amp;#8217;s appt this week to next week, and to vote today. (We have a primary election today for a special senate election in June.)&lt;/p&gt;
&lt;p&gt;And, since I&amp;#8217;m cheating on how to do a real personal kanban, I thought I would at least describe for you how to do real personal kanban over at &lt;a href="http://www.jrothman.com/blog/htp/2013/04/personal-kanban-for-your-job-hunt.html" target="_blank"&gt;Personal Kanban for Your Job Hunt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can see now there is a huge drawback to my list. I will have to rewrite my list, instead of just moving the stickies off. This is why in personal kanban, the right way is to &lt;em&gt;not&lt;/em&gt; have a list. If you move the stickies, you don&amp;#8217;t get this list nonsense, with lines crossed through.&lt;/p&gt;
&lt;p&gt;Well, most people don&amp;#8217;t have vertigo, either. So, tough. Okay, enough being meta today. On to the real work of the day.&lt;/p&gt;
&lt;p&gt;If you missed part 1, here is the link: &lt;a title="Personal Kanban and Iterations, Day 1" href="http://www.jrothman.com/blog/mpd/2013/04/personal-kanban-and-iterations-day-1.html" target="_blank"&gt;Personal Kanban and Iterations, Day 1&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=zaqBMTrVHMo:PfjK5aa1glk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=zaqBMTrVHMo:PfjK5aa1glk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=zaqBMTrVHMo:PfjK5aa1glk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=zaqBMTrVHMo:PfjK5aa1glk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=zaqBMTrVHMo:PfjK5aa1glk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=zaqBMTrVHMo:PfjK5aa1glk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=zaqBMTrVHMo:PfjK5aa1glk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=zaqBMTrVHMo:PfjK5aa1glk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/zaqBMTrVHMo" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 30 Apr 2013 07:08:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12242</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Personal Kanban and Iterations, Day 1</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/04/personal_kanban_and_iterations_day_1</link>
      <description>&lt;p&gt;&lt;a href="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/04/PersonalKanbanDay1.jpg" target="_blank"&gt;&lt;img class="alignleft size-thumbnail wp-image-12229" alt="JR Personal Kanban Day 1" src="http://www.jrothman.com/blog/mpd/wp-content/uploads/2013/04/PersonalKanbanDay1-150x150.jpg" width="150" height="150" /&gt;&lt;/a&gt;I use a form of personal kanban inside one-week iterations to finish my work and notice what I am not doing. I do this to maintain a cadence of blogging and to finish work. Did you notice that word, finish?&lt;/p&gt;
&lt;p&gt;Sidebar: For those of you who don&amp;#8217;t know what &amp;#8220;kanban&amp;#8221; is, it literally means &amp;#8220;card.&amp;#8221; It&amp;#8217;s been used in manufacturing for years as a pull system for work. I have an example for what a kanban system might look like for teams in &lt;a title="Agile Lifecycles for Geographically Distributed Teams, Part 3" href="http://www.jrothman.com/blog/mpd/2012/02/agile-lifecycles-for-geographically-distributed-teams-part-3.html" target="_blank"&gt;Agile Lifecycles for Geographically Distributed Teams, Part 3&lt;/a&gt;. I just realized I don&amp;#8217;t have a picture of a personal kanban on Hiring Technical People. I will have to fix that.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m human, the same as you. I get bogged down. I sometimes get freaked out by the amount of work I have to complete. And, this week and next, as I complete my preparations for my &lt;a href="http://www.jrothman.com/2013/04/join-me-in-london-may-16-17-2013-for-project-management-and-coaching-workshops/" target="_blank"&gt;London workshops&lt;/a&gt; and &lt;a href="http://lets-test.com/" target="_blank"&gt;Let&amp;#8217;s Test&lt;/a&gt;, I have more than I originally expected to do.&lt;/p&gt;
&lt;p&gt;Why? Before &lt;a href="http://www.jrothman.com/2011/11/psl-problem-solving-leadership-workshop/" target="_blank"&gt;PSL&lt;/a&gt;, several local potential clients called and wanted meetings. Meetings! Not phone calls, but in-person meetings.&lt;/p&gt;
&lt;p&gt;The problem with in-person meetings is that they take longer. They aren&amp;#8217;t one hour long. They are close to two hours long. I have to leave enough time to get there, have the meeting and get back. But, these are very interesting potential clients, so I took the meetings.&lt;/p&gt;
&lt;p&gt;The result? I am not where I want to be with respect to my deliverables. So I will be blogging my personal kanban this week, so you can see what I do to finish my work.&lt;/p&gt;
&lt;p&gt;Now, you can see from my picture, I don&amp;#8217;t always do personal kanban &amp;#8220;right.&amp;#8221; I don&amp;#8217;t have stickies. I have a list. That&amp;#8217;s wrong. You&amp;#8217;re supposed to do queues. Well, I don&amp;#8217;t. This is my kanban. I can do anything I want with it.&lt;/p&gt;
&lt;p&gt;Why don&amp;#8217;t I use stickies? Because I don&amp;#8217;t want to get up and move a sticky on a board. I get too dizzy. My desk is a disaster, so I don&amp;#8217;t use a kanban notebook. it would get buried And, I don&amp;#8217;t believe in tools. (Sorry, tool vendors.) I like paper and pen. I get total transparency this way. It&amp;#8217;s easy for me to move things around.&lt;/p&gt;
&lt;p&gt;I do schedule my longer-term article commitments to other people in the reminders tool on my Mac, so I don&amp;#8217;t forget things.&lt;/p&gt;
&lt;p&gt;I have a backlog in rough order of priority. Well, sort of. I have a ton of things to do before Wednesday, 5/1. Yes, everything down to &amp;#8220;SQGNE presentation by 5/1&amp;#8243; is supposed to be done before 5/1. I can pick anything I want off that backlog and get it to done before 5/1.&lt;/p&gt;
&lt;p&gt;Note that I have first drafts specified for the coaching workshop and the PM workshops. I have draft zeros done already. It&amp;#8217;s time to finish the first drafts, and put them aside for another day or so. I already have draft one of the Sweden hiring workshop, which needs finishing, which is why it&amp;#8217;s farther down on the list.&lt;/p&gt;
&lt;p&gt;If people call and need something that does not go on the backlog, I have an urgent queue on the right side of the page. We&amp;#8217;ll see how the week goes.&lt;/p&gt;
&lt;p&gt;Remember, I&amp;#8217;m only one person, so my WIP limit is one, which is why I didn&amp;#8217;t even bother with a &amp;#8220;Doing&amp;#8221; column. I&amp;#8217;m not going to have a PEN column this week. If I call anyone this week, it has to be after I get my todos done for my trip. I&amp;#8217;m not taking interruptions. I have way too much work to do.&lt;/p&gt;
&lt;p&gt;Oh, and I&amp;#8217;m still working out at the gym, and sleeping my regular hours and eating properly. In order to accomplish everything I need to do, I have to take care of myself and maintain and sustainable pace.&lt;/p&gt;
&lt;p&gt;Let me know if this is interesting to you. Yes, this blog post counts as my &amp;#8220;MPD blog&amp;#8221; entry.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=jH-CM5qw7QU:CbE96W3AVMM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=jH-CM5qw7QU:CbE96W3AVMM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=jH-CM5qw7QU:CbE96W3AVMM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=jH-CM5qw7QU:CbE96W3AVMM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=jH-CM5qw7QU:CbE96W3AVMM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=jH-CM5qw7QU:CbE96W3AVMM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=jH-CM5qw7QU:CbE96W3AVMM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=jH-CM5qw7QU:CbE96W3AVMM:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/jH-CM5qw7QU" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 29 Apr 2013 10:20:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12227</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Intro to Play Framework at Boulder Area Scala Enthusiasts</title>
      <link>http://nofluffjuststuff.com/blog/james_ward2/2013/04/intro_to_play_framework_at_boulder_area_scala_enthusiasts</link>
      <description>&lt;p&gt;This Wednesday (April 24, 2013) I&amp;#8217;ll be presenting an &lt;a href="http://www.meetup.com/The-Boulder-Area-Scala-Enthusiasts/events/111306962/"&gt;Intro to Play Framework at the Boulder Area Scala Enthusiasts&lt;/a&gt; meetup.  Also, Dustin Whitney will be presenting an Intro to Scala.&lt;/p&gt;
&lt;p&gt;Hopefully see you in Boulder!&lt;/p&gt;</description>
      <pubDate>Mon, 22 Apr 2013 11:36:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3709</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Management Myth 16: “I Know How Long the Work Should Take”</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/04/management_myth_16__i_know_how_long_the_work_should_take_</link>
      <description>&lt;p&gt;Long ago, when I was a young developer at an anonymous company, one of my managers was disappointed with my progress. &amp;#8220;I know how long the work should take. If I was doing the work, it would be done by now,&amp;#8221; he huffed at me.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Really?&amp;#8221; I could have stopped there. I didn&amp;#8217;t. &amp;#8220;If you had done the work right the first time, I wouldn&amp;#8217;t be in here mucking around with this, trying to fix everything. I pull something here, and something pops out over there. Of course, I&amp;#8217;ve fixed nine defects by now, nine defects I hadn&amp;#8217;t planned on fixing. Our customers are thrilled, because I&amp;#8217;ve released the already-fixed defects. I just haven&amp;#8217;t released this feature yet. But you would be done. Good to know. I wonder what else I have to clean up.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Have I told you yet that I am the Queen of the Career-Limiting Conversation?&lt;/p&gt;
&lt;p&gt;My boss didn&amp;#8217;t fire me. At least not that week :-) It was a complex piece of code. I could have been more politic in my answer. But I was tired of pushing, pulling, and the puzzles. I wanted some straightforward puzzles to solve, not those roundabout problems. And then when he said he knew how long the work should take? That was insulting. As if I was taking my own sweet time with this. Ha! I was working hard. I was thinking hard.&lt;/p&gt;
&lt;p&gt;This management myth is based on the belief that if the work is simple to describe, it&amp;#8217;s easy and fast to do. Uh uh. Do not fall for that one.&lt;/p&gt;
&lt;p&gt;Managers, architects, technical leads&amp;#8212;anyone who has done work similar to this&amp;#8212;can fall into this trap. This myth exposes several problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does the manager understand the work as it stands, now?&lt;/li&gt;
&lt;li&gt;Does the technical person understand the work now?&lt;/li&gt;
&lt;li&gt;Do each of them agree on what done means for the work?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Having a snarky conversation as I did is not helpful. That&amp;#8217;s why you should read my newly posted &lt;a href="http://www.stickyminds.com/s.asp?F=S17967_ART_2" target="_blank"&gt;Management Myth 16: I Know How Long the Work Should Take&lt;/a&gt;. In that column, I provide you a useful example of how to have the conversation with your boss, as opposed to my example above.&lt;/p&gt;
&lt;p&gt;If you are a manager and you don&amp;#8217;t want to fall prey to these or other traps/myths, you should make it a point to participate in the Better Software/Agile Development conference in Las Vegas this year. I will be giving a talk, called &lt;a href="http://adc-bsc-west.techwell.com/sessions/better-software-conference-west-2013/exploding-management-myths" target="_blank"&gt;Exploding Management Myths&lt;/a&gt;. I&amp;#8217;m also leading a &lt;a href="http://www.agileconnection.com/article/2013-software-development-lab-interview-johanna-rothman" target="_blank"&gt;Management Lab&lt;/a&gt;. I hope you decide to join me there.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=9DRp3lCm1LI:y7PaIwrP8u8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=9DRp3lCm1LI:y7PaIwrP8u8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=9DRp3lCm1LI:y7PaIwrP8u8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=9DRp3lCm1LI:y7PaIwrP8u8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=9DRp3lCm1LI:y7PaIwrP8u8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=9DRp3lCm1LI:y7PaIwrP8u8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=9DRp3lCm1LI:y7PaIwrP8u8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=9DRp3lCm1LI:y7PaIwrP8u8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/9DRp3lCm1LI" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 17 Apr 2013 06:48:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12215</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Start Your Agile Project Right and Coaching Master Class in London, May 16 and 17, 2013</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/04/start_your_agile_project_right_and_coaching_master_class_in_london_may_16_and_17_2013</link>
      <description>&lt;p&gt;I am going to be in London, May 16 and 17, 2013. I am offering two interactive public workshops, one on starting your agile project right, and a master class on coaching. See the detailed syllabus and signup page for &lt;a href="http://www.jrothman.com/2013/04/join-me-in-london-may-16-17-2013-for-project-management-and-coaching-workshops/" target="_blank"&gt;Starting Your Agile Project and Coaching Master Class here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The syllabus for &lt;a href="http://www.jrothman.com/2013/04/join-me-in-london-may-16-17-2013-for-project-management-and-coaching-workshops/" target="_blank"&gt;Starting Your Agile Project Right&lt;/a&gt; on May 16, 2013 is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Introductions&lt;/li&gt;
&lt;li&gt;Chartering a project (vision and release criteria)&lt;/li&gt;
&lt;li&gt;Working with sponsors to define the tradeoffs&lt;/li&gt;
&lt;li&gt;Iterations, kanban, or both?&lt;/li&gt;
&lt;li&gt;Create boards for maximum transparency&lt;/li&gt;
&lt;li&gt;What to measure&lt;/li&gt;
&lt;li&gt;Wrap-up and summary&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The syllabus for the &lt;a href="http://www.jrothman.com/2013/04/join-me-in-london-may-16-17-2013-for-project-management-and-coaching-workshops/" target="_blank"&gt;Coaching Master Class&lt;/a&gt; on May 17, 2013 is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Introductions&lt;/li&gt;
&lt;li&gt;Simulation&lt;/li&gt;
&lt;li&gt;What is coaching?&lt;/li&gt;
&lt;li&gt;How to coach&lt;/li&gt;
&lt;li&gt;Explore coaching stances&lt;/li&gt;
&lt;li&gt;Implementing coaching&lt;/li&gt;
&lt;li&gt;Wrap-up and summary&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The workshops will be held in the Clerkenwell area of London. I expect to finalize the location within a day or so. I hope that if you are in the UK, you will join me. If you have questions, please email me.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xFQgRnoGrnk:L8yS_BL4PCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xFQgRnoGrnk:L8yS_BL4PCI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xFQgRnoGrnk:L8yS_BL4PCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=xFQgRnoGrnk:L8yS_BL4PCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xFQgRnoGrnk:L8yS_BL4PCI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=xFQgRnoGrnk:L8yS_BL4PCI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xFQgRnoGrnk:L8yS_BL4PCI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xFQgRnoGrnk:L8yS_BL4PCI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/xFQgRnoGrnk" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 12 Apr 2013 05:47:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12208</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Self Assessment Tool for Transitioning to Agile</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/04/self_assessment_tool_for_transitioning_to_agile</link>
      <description>&lt;p&gt;Over on agileconnection, a user asked about a &lt;a href="http://www.agileconnection.com/question/self-assessment-tool-measure-agile-maturity" target="_blank"&gt;self-assessment tool for measuring agile maturity&lt;/a&gt;. That&amp;#8217;s not exactly the right question, because agile transition is a journey, not a destination. But, I can understand why he asked the question. I tried to be helpful. I supplied a set of questions to ask. Maybe you can go over there and add more to my list.&lt;/p&gt;
&lt;p&gt;I still think the best question is this:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;em&gt;What benefit will you gain from learning this answer?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In any case, here are some questions I supplied to get the questioner (or you) started:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If you are doing iterations, are they four weeks or less? The answer should be yes. Many of us like one or two week iterations. Why? Because you get feedback more often rather than less often. And, you get to see working software.&lt;/li&gt;
&lt;li&gt;Do you have demos at the end of each and every iteration? The answer should be yes. Why? To get the feedback from the customer/Product Owner.&lt;/li&gt;
&lt;li&gt;Do you get every item in the backlog to done at the end of every iteration? The answer should be yes. For many teams on their journey, the answer is &amp;#8220;not yet.&amp;#8221; This does not make you bad, it makes you &amp;#8220;on your journey.&amp;#8221; You want to discover why.&lt;/li&gt;
&lt;li&gt;Do you perform retrospectives at the end of each iteration to learn and inspect/adapt to improve your team&amp;#8217;s agile process?&lt;/li&gt;
&lt;li&gt;Do you look at your work in process and monitor that?&lt;/li&gt;
&lt;li&gt;If you use iterations, do you measure your velocity with a burn up chart and make sure it does not look like a hockey stick?&lt;/li&gt;
&lt;li&gt;If you are using kanban, do you measure your cycle time? Are you happy with your cycle time? (Did I just use a word that did not make sense to you :-)&lt;/li&gt;
&lt;li&gt;Do you measure cumulative flow? (You want to make sure you do not have a lot of work in progress. It does not matter if you use iterations or kanban. This Matters to a team. It matters a lot.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Gentle readers, do you have feedback for me on these questions?&lt;/p&gt;
&lt;p&gt;I wrote &lt;a title="Agile is Not for Everyone" href="http://www.jrothman.com/blog/mpd/2012/12/agile-is-not-for-everyone.html" target="_blank"&gt;Agile is Not for Everyone&lt;/a&gt; because I don&amp;#8217;t believe in these assessments for agile maturity. However, just because I don&amp;#8217;t believe in them is not going to make them go away. Maybe I can be more helpful.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=TzW-kerqLpM:sa7wdS5ORKc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=TzW-kerqLpM:sa7wdS5ORKc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=TzW-kerqLpM:sa7wdS5ORKc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=TzW-kerqLpM:sa7wdS5ORKc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=TzW-kerqLpM:sa7wdS5ORKc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=TzW-kerqLpM:sa7wdS5ORKc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=TzW-kerqLpM:sa7wdS5ORKc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=TzW-kerqLpM:sa7wdS5ORKc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/TzW-kerqLpM" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 11 Apr 2013 07:31:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12202</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Coding By Google</title>
      <link>http://nofluffjuststuff.com/blog/james_harmon/2013/04/coding_by_google</link>
      <description>I almost named this post "I haven't written a line of code in years!" but that would not literally be true.&lt;br /&gt;&lt;br /&gt;Actually I've written a lot of code, but probably as much (or more) has come to me through cut and paste from a Google search.&lt;br /&gt;&lt;br /&gt;It struck me that what started as a helpful but infrequent technique to augment my work, has become the work itself. &amp;nbsp;At first it was a line of code, then entire methods. &amp;nbsp;But now GitHub (and SourceForge) have made the cloning of entire applications not only easy but allowable (and fun).&lt;br /&gt;&lt;br /&gt;Not that there's anything wrong with that. &amp;nbsp;Or is there?&lt;br /&gt;&lt;br /&gt;I could spend the time to derive from first principals everything that I need to code, but why?&lt;br /&gt;There is nothing new under the sun. &amp;nbsp;All code has already been written.&lt;br /&gt;&lt;br /&gt;And the code wants to be used. &amp;nbsp;Coders themselves want their code to be used and re-used. &amp;nbsp;It's why they post it. &amp;nbsp;So there is no sin or crime&amp;nbsp;committed.&lt;br /&gt;&lt;br /&gt;But a new set of skills must be developed. &amp;nbsp;Searching in the right way. &amp;nbsp;Recognizing the good sources like StackOverflow and also recognizing the bad sources, like BigResource that just seem to aggregate StackOverflow posts but without the valuable rating system. &amp;nbsp;Maybe we should be training developers in search and not in programming.&lt;br /&gt;&lt;br /&gt;And where is the role of knowledge and memory? &amp;nbsp;If we don't need to remember how to do anything - because we can look it up - then soon, we may be unable to remember, even when we wish to.&lt;br /&gt;&lt;br /&gt;But it is just too useful to avoid. &amp;nbsp;And so the term "Coding By Google" seems appropriate and even though I thought that I coined the term, turns out that this too is not new. &amp;nbsp;Here's the earliest reference I could find.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;a href="http://blog.glys.com/index.cgi?e=2006-26-02-coding-by-google"&gt;bert's blog - from 2006&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So go forth, code by Google, and be proud!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Wed, 03 Apr 2013 22:54:48 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-7249924828832518236.post-1666711571018805935</guid>
      <dc:creator>James Harmon</dc:creator>
    </item>
    <item>
      <title>The command line is coming back - get ready</title>
      <link>http://nofluffjuststuff.com/blog/james_harmon/2013/03/the_command_line_is_coming_back__get_ready_1</link>
      <description>Recently I've rediscovered the command line and I'm really enjoying the improved productivity I'm getting. &amp;nbsp;Also, I'm learning the tools that I work with better because I'm seeing the command directly rather than just picking menu items in Eclipse.&lt;br /&gt;&lt;br /&gt;So I'm having more fun but it has also occured to me that now is the right time to start switching back to the command line. &amp;nbsp;Let me explain.&lt;br /&gt;&lt;br /&gt;Why is it named the "command" line? &amp;nbsp;Because you give it commands. &amp;nbsp;And how do you "give" commands (at least in non-computer situations). &amp;nbsp;You say them. &lt;br /&gt;&lt;br /&gt;We're now approaching the tipping point for voice recognition. &amp;nbsp;It is generally&amp;nbsp;excellent and one of the most obvious uses is to replace typing at the command line with voice commands.&lt;br /&gt;&lt;br /&gt;It is harder to control a GUI IDE with voice commands but the command line is perfect for this approach.&lt;br /&gt;&lt;br /&gt;So if you've been avoiding the use of the command line, or if it has been awhile, now is the time to brush up on those skills. &amp;nbsp;I've been re-reading Neal Ford's&amp;nbsp;excellent book "The Productive Programmer" which will help you get started. &amp;nbsp;It is just as&amp;nbsp;relevant&amp;nbsp;now as it was in 2005.&lt;br /&gt;&lt;br /&gt;I've also been very pleased with a new shell called &lt;a href="http://www.zsh.org/"&gt;zsh&lt;/a&gt;. &amp;nbsp;Try it out.&lt;br /&gt;&lt;br /&gt;Any downside? &amp;nbsp;Developers will be constantly chatting to their computers as they work. &amp;nbsp;Things could get a little noisy. &amp;nbsp;Hopefully, this will spell the end of the "open pit" work environment.&lt;br /&gt;&lt;br /&gt;Maybe now I can get an office with a door - that actually closes? &amp;nbsp;And if we can't get offices? &amp;nbsp;"Cone of Silence" anyone?</description>
      <pubDate>Sun, 31 Mar 2013 18:59:26 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-7249924828832518236.post-7302570293146543448</guid>
      <dc:creator>James Harmon</dc:creator>
    </item>
    <item>
      <title>Dear Eclipse</title>
      <link>http://nofluffjuststuff.com/blog/james_harmon/2013/03/dear_eclipse_1</link>
      <description>Recently I've rediscovered the command line and I'm really enjoying the improved productivity I'm getting. &amp;nbsp;Also, I'm learning the tools that I work with better because I'm seeing the command directly rather than just picking menu items in Eclipse.&lt;br /&gt;&lt;br /&gt;So I'm having more fun but it has also occured to me that now is the right time to start switching back to the command line. &amp;nbsp;Let me explain.&lt;br /&gt;&lt;br /&gt;Why is it named the "command" line? &amp;nbsp;Because you give it commands. &amp;nbsp;And how do you "give" commands (at least in non-computer situations). &amp;nbsp;You say them. &lt;br /&gt;&lt;br /&gt;We're now approaching the tipping point for voice recognition. &amp;nbsp;It is generally&amp;nbsp;excellent and one of the most obvious uses is to replace typing at the command line with voice commands.&lt;br /&gt;&lt;br /&gt;It is harder to control a GUI IDE with voice commands but the command line is perfect for this approach.&lt;br /&gt;&lt;br /&gt;So if you've been avoiding the use of the command line, or if it has been awhile, now is the time to brush up on those skills. &amp;nbsp;I've been re-reading Neal Ford's&amp;nbsp;excellent book "The Productive Programmer" which will help you get started. &amp;nbsp;It is just as&amp;nbsp;relevant&amp;nbsp;now as it was in 2005.&lt;br /&gt;&lt;br /&gt;I've also been very pleased with a new shell called &lt;a href="http://www.zsh.org/"&gt;zsh&lt;/a&gt;. &amp;nbsp;Try it out.&lt;br /&gt;&lt;br /&gt;Any downside? &amp;nbsp;Developers will be constantly chatting to their computers as they work. &amp;nbsp;Things could get a little noisy. &amp;nbsp;Hopefully, this will spell the end of the "open pit" work environment.&lt;br /&gt;&lt;br /&gt;Maybe now I can get an office with a door - that actually closes? &amp;nbsp;And if we can't get offices? &amp;nbsp;"Cone of Silence" anyone?</description>
      <pubDate>Sun, 31 Mar 2013 18:59:00 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-7249924828832518236.post-4291567568780262347</guid>
      <dc:creator>James Harmon</dc:creator>
    </item>
    <item>
      <title>Demand dropping for JavaScript skills</title>
      <link>http://nofluffjuststuff.com/blog/james_harmon/2013/03/demand_dropping_for_javascript_skills</link>
      <description>Of course, I'm biased, but I'm always looking for signs that the 2nd wave is ending. &amp;nbsp;Just a reminder of how I define the waves -&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Wave 1, The PC Age, 1980 - 1995, giant mainframes replaced by more agile desktops&lt;br /&gt;&amp;nbsp; &amp;nbsp; Wave 2, The Internet Age, 1995 - 2010, connectivity rules the day&lt;br /&gt;&amp;nbsp; &amp;nbsp; Wave 3, The Mobile Age, 2010 - 2025, all the computer you need right in your pocket&lt;br /&gt;&lt;br /&gt;This article seems to be showing the end of the browser age. &amp;nbsp;It will never go away but it also will never again be the dominant platform.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.cio.com/it-skills/16835/hot-it-skills-2012"&gt;http://blogs.cio.com/it-skills/16835/hot-it-skills-2012&lt;/a&gt;</description>
      <pubDate>Sun, 31 Mar 2013 18:58:00 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-7249924828832518236.post-5370125621886296090</guid>
      <dc:creator>James Harmon</dc:creator>
    </item>
    <item>
      <title>Telecommuting, Hoteling, and Managing Product Development</title>
      <link>http://nofluffjuststuff.com/blog/johanna_rothman/2013/03/telecommuting_hoteling_and_managing_product_development</link>
      <description>&lt;p&gt;There are two sides of this conversation about telecommuting: the employee side and the management side. I hope you stick around for both sides. You can yell at me at the end.&lt;/p&gt;
&lt;h2&gt;Employees: You Owe the Company a Full Day of Work&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;ve been thinking since Marissa Meyer&amp;#8217;s announcement what I would say about the &lt;a href="http://money.cnn.com/2013/02/25/technology/yahoo-work-from-home/index.html" target="_blank"&gt;end of telecommuting at Yahoo!&lt;/a&gt;. &lt;a href="http://money.cnn.com/2013/03/05/technology/best-buy-work-from-home/index.html" target="_blank"&gt;Best Buy employees&lt;/a&gt; now have to have a conversation with their managers about how they will manage their telecommuting.&lt;/p&gt;
&lt;p&gt;People who work remotely full-time have an obligation to their team-mates to be available, to make it easy for their team to find them. Once you have a telecommuter, you have a &lt;a href="http://www.jrothman.com/blog/mpd/tag/geographically-distributed-teams" target="_blank"&gt;geographically distributed team&lt;/a&gt;, and anyone who&amp;#8217;s been on one, knows the stresses that places on a team. It&amp;#8217;s not impossible. It&amp;#8217;s just harder on everyone.&lt;/p&gt;
&lt;p&gt;I know the Bay Area has horrible traffic. I know the problems of being a parent and commuting to work. Mark and I managed those problems for more than 20 years, until our children graduated from high school. (Just because your children can drive does not mean you don&amp;#8217;t worry about them. If they have mono in high school, you still worry about them. Yes, you do.)&lt;/p&gt;
&lt;p&gt;And, I will tell you this: If you are camped out in the dining room or the living room on your computer and the kids are running around, or if you are driving the kids to their activities, you might be doing email, or you might be on the phone, but your work is not 100% on work. You are not focused. You cannot possibly be giving 100% of your brain to work. Some part of your brain is wondering what the kids are doing. Or, wondering why the kids got so quiet. Or, wondering why you can&amp;#8217;t hear the dog anymore. This is not a full day of work.&lt;/p&gt;
&lt;p&gt;If you work from home on a regular basis, and you regularly work from the dining room, I&amp;#8217;ll say the truth: you are shortchanging the company. You are not delivering a full day of work.&lt;/p&gt;
&lt;p&gt;Staying home when a child has a fever? Of course, you must. Staying home when a child has the mumps or measles or chickenpox? (Does anyone get these diseases now?) You must. You and your spouse can discuss/fight over who has to take time off. We did. You can, too. Good luck. That&amp;#8217;s a marriage/career issue. I&amp;#8217;m not getting into the middle of that one.&lt;/p&gt;
&lt;p&gt;But the cost to the team of you not working with the team on a daily basis? That is so high. If you want to know, &lt;a href="http://www.jrothman.com/blog/mpd/2010/03/wage-cost-and-project-labor-cost.html" target="_blank"&gt;measure the value stream&lt;/a&gt; in your project.&lt;/p&gt;
&lt;p&gt;Anyone can &lt;a href="http://www.jrothman.com/2000/01/making-telecommuting-work/" target="_blank"&gt;make telecommuting work.&lt;/a&gt; Especially if it&amp;#8217;s just one or two days a week. But five days a week? No. That&amp;#8217;s not reasonable for your teams. And, I wonder why you chose that. I bet some of you chose that because your company did not provide a reasonable environment for you.&lt;/p&gt;
&lt;p&gt;Telecommute in an emergency? Of course. On a regular basis? Especially if you want agile teams? Craziness.&lt;/p&gt;
&lt;p&gt;Once you have established teams, teams can create their own norms. But it takes many iterations and lots of trust to build those established norms.&lt;/p&gt;
&lt;h2&gt;Companies, You Owe Employes a Reasonable Work Environment&lt;/h2&gt;
&lt;p&gt;Once we get past the emergency days when parents must take time off from work, and have people back at work, what will we do with these people? We need reasonable work environments. Here&amp;#8217;s what constitutes reasonable for me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A team room for an agile team&lt;/li&gt;
&lt;li&gt;Rooms for cross-functional teams to meet. (Even if you are not agile, you need rooms for cross-functional teams to meet. Yes, you do.)&lt;/li&gt;
&lt;li&gt;An &amp;#8220;office&amp;#8221; for each person. It can be small if there is a team room.&lt;/li&gt;
&lt;li&gt;Sufficient meeting space, so you do not have to go to buildings half a mile away for a meeting. Companies: Measure the time wasted trying to find a meeting room!&lt;/li&gt;
&lt;li&gt;Enough bathrooms, so people like me don&amp;#8217;t have to go to the men&amp;#8217;s room, and shout &amp;#8220;Woman incoming, there is no woman&amp;#8217;s room on this floor.&amp;#8221; (Don&amp;#8217;t think I&amp;#8217;m kidding. I&amp;#8217;m not.)&lt;/li&gt;
&lt;li&gt;Enough parking, close enough so people don&amp;#8217;t have to wonder how long it will take them drive home, after they&amp;#8217;ve hiked to their car&lt;/li&gt;
&lt;li&gt;Lighted parking lots. Keep it safe, please.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is more. That is the minimum. Think coffee, water, that kind of thing.&lt;/p&gt;
&lt;p&gt;You know what&amp;#8217;s missing from that list? The stupid &amp;#8220;hotel&amp;#8221; idea that companies thought they could get away with. &amp;#8220;We don&amp;#8217;t need a place for employees. They&amp;#8217;ll plug in wherever they are, and that will be their place for the day.&amp;#8221; The hoteling idea is total nonsense.&lt;/p&gt;
&lt;p&gt;Well, that&amp;#8217;s a way to make people feel as if they are welcomed, and part of a team. Not! This blog is called &amp;#8220;Managing Product Development&amp;#8221; for a reason. If you want to release products, you need teams. If you want teams of people to organize in some way, they need to know where to congregate. How the heck can they know where to congregate, if they have no place to sit?&lt;/p&gt;
&lt;p&gt;&amp;#8220;Hoteling&amp;#8221; employees has to be just about the most stupid idea I ever heard. I don&amp;#8217;t know who dreamed it up. Probably some architect who has a lovely office to sit in. Or an executive who has a permanent desk.&lt;/p&gt;
&lt;p&gt;People need to know they are wanted. Do you want your employees? Give each of them a permanent space.&lt;/p&gt;
&lt;p&gt;Oh, and don&amp;#8217;t talk to me about introverts. Highly introverted people, who prefer to not talk to people, want to know &lt;em&gt;where&lt;/em&gt; they will sit. They just don&amp;#8217;t want to talk to more than one person while they sit there. Okay, some of them don&amp;#8217;t even want to talk to one person, but they want a place to sit.&lt;/p&gt;
&lt;h2&gt;What Do You Need for Your Product Development?&lt;/h2&gt;
&lt;p&gt;Can you make telecommuting work for your organization? Of course you can. You can make geographically distributed teams work. I have a &lt;a href="http://www.jrothman.com/2011/11/workshop-making-geographically-distributed-agile-projects-work/" target="_blank"&gt;workshop&lt;/a&gt; on it, and I just published a paper on it. You are a smart person, working with smart people. The question is this: What will make your product development proceed faster, with more ease, with less cost, and allow you the most flexibility?&lt;/p&gt;
&lt;p&gt;One of the reasons I urge my clients to transition to agile if they can, is that agile can provide them those benefits. However, &lt;a title="Agile is Not for Everyone" href="http://www.jrothman.com/blog/mpd/2012/12/agile-is-not-for-everyone.html" target="_blank"&gt;agile is not for everyone&lt;/a&gt;. If they decide agile is not for them, we discuss if an iterative approach is best, or an incremental approach is best, or a combination is best. It&amp;#8217;s all about what they need for their product development.&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t need a geographically distributed organization, don&amp;#8217;t create one. Telecommuting creates one. Instead, make it a policy that everyone come to work. Phase the policy in, as Meyer is. Have a conversation, as Best Buy is.&lt;/p&gt;
&lt;p&gt;And, if you got sucked into those crazy workplace architectures, make enough offices/cubicles of large enough size, so that people have a place to put their stuff and work. Oh, and make the cube walls shorter, so people can see me coming, so I don&amp;#8217;t have to wear a bike flag. That&amp;#8217;s just craziness, too.&lt;/p&gt;
&lt;h2&gt;Talk With Your People&lt;/h2&gt;
&lt;p&gt;This is not about anti-parents. This is about bringing working people together for innovation and creativity. How do you solve the problem of long commutes, a reasonable workspace, and core hours?&lt;/p&gt;
&lt;p&gt;The best thing you can do is talk about this issue with the people in your company. If you are a manager, don&amp;#8217;t think you have all the answers. You might not even understand all the problems.&lt;/p&gt;
&lt;p&gt;You don&amp;#8217;t have to agree with me. I&amp;#8217;m sure I will set off the mommy-wars and the daddy-wars, and the manager-wars, and the employee-wars. Well, I have on my flame-retardant suit. Go ahead. I&amp;#8217;m ready! If you have the discussion in your organization about what is best for you, I have done a good job.&lt;/p&gt;
&lt;p&gt;I look forward to a vigorous discussion.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fW7D8qiZYH4:USUmxg9Bzu8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fW7D8qiZYH4:USUmxg9Bzu8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fW7D8qiZYH4:USUmxg9Bzu8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=fW7D8qiZYH4:USUmxg9Bzu8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fW7D8qiZYH4:USUmxg9Bzu8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=fW7D8qiZYH4:USUmxg9Bzu8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fW7D8qiZYH4:USUmxg9Bzu8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=fW7D8qiZYH4:USUmxg9Bzu8:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/fW7D8qiZYH4" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 28 Mar 2013 10:14:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jrothman.com/blog/mpd/?p=12156</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Presenting Play Framework at Devoxx UK &amp; FR 2013</title>
      <link>http://nofluffjuststuff.com/blog/james_ward2/2013/03/presenting_play_framework_at_devoxx_uk__fr_2013</link>
      <description>&lt;p&gt;This week I&amp;#8217;m at &lt;a href="http://www.devoxx.com/display/UK13/Home"&gt;Devoxx UK&lt;/a&gt; and &lt;a href="http://www.devoxx.com/display/FR13/Accueil"&gt;Devoxx FR&lt;/a&gt; presenting about Play Framework.  Here are the sessions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tuesday March 26 @ Devoxx UK: &lt;a href="http://www.devoxx.com/pages/viewpage.action?pageId=6817656"&gt;Mobile Apps with HTML5 &amp;#038; Play Framework&lt;/a&gt; &amp;#8211; With &lt;a href="https://twitter.com/nicolasleroux"&gt;Nicolas Leroux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wednesday March 27 @ Devoxx FR: &lt;a href="http://www.devoxx.com/display/FR13/6+Minute+Apps%21++Build+Your+First+Modern+Web+App"&gt;6 Minute Apps! Build Your First Modern Web App&lt;/a&gt; &amp;#8211; With &lt;a href="https://twitter.com/nicolasleroux"&gt;Nicolas Leroux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Thursday March 28 @ Devoxx FR: &lt;a href="http://www.devoxx.com/display/FR13/Play+Framework+vs.+Grails+Smackdown"&gt;Play Framework vs. Grails Smackdown&lt;/a&gt; &amp;#8211; With &lt;a href="http://raibledesigns.com/"&gt;Matt Raible&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;#8217;s going to be an awesome week!&lt;/p&gt;</description>
      <pubDate>Tue, 26 Mar 2013 04:38:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3700</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
    <item>
      <title>Intro to Play Framework This Week in Toronto, Ottawa, and Montreal</title>
      <link>http://nofluffjuststuff.com/blog/james_ward2/2013/03/intro_to_play_framework_this_week_in_toronto_ottawa_and_montreal</link>
      <description>&lt;p&gt;This week I&amp;#8217;ll be in Canada presenting an Introduction to Play Framework:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.meetup.com/Scala/Toronto-CA/893092/"&gt;Toronto Scala Meetup on Tuesday, March 19&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.meetup.com/Ottawa-Scala-Enthusiasts/events/102013922/"&gt;Ottawa Scala Enthusiasts on Wednesday, March 20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://scala-montreal-march.eventbrite.ca/"&gt;Scala Montreal Meetup on Thursday, March 21&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m looking forward to meeting our Scala northerly neighbors!&lt;/p&gt;</description>
      <pubDate>Tue, 19 Mar 2013 10:07:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.jamesward.com/?p=3694</guid>
      <dc:creator>James Ward</dc:creator>
    </item>
  </channel>
</rss>

