<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Frontier Town - book review</title>
    <link>http://www.frontiertown.co.uk/</link>
    <description>By Richard Downer</description>
    <language>en-us</language>
    <copyright>Richard Downer</copyright>
    <lastBuildDate>Fri, 12 Jun 2009 14:29:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>richard@frontiertown.co.uk</managingEditor>
    <webMaster>richard@frontiertown.co.uk</webMaster>
    <item>
      <trackback:ping>http://www.frontiertown.co.uk/Trackback.aspx?guid=cb405ed0-216e-426e-8966-ad45cb2d60e6</trackback:ping>
      <pingback:server>http://www.frontiertown.co.uk/pingback.aspx</pingback:server>
      <pingback:target>http://www.frontiertown.co.uk/PermaLink,guid,cb405ed0-216e-426e-8966-ad45cb2d60e6.aspx</pingback:target>
      <dc:creator>Richard Downer</dc:creator>
      <wfw:comment>http://www.frontiertown.co.uk/CommentView,guid,cb405ed0-216e-426e-8966-ad45cb2d60e6.aspx</wfw:comment>
      <wfw:commentRss>http://www.frontiertown.co.uk/SyndicationService.asmx/GetEntryCommentsRss?guid=cb405ed0-216e-426e-8966-ad45cb2d60e6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>Book review</em> • ASP.NET Web Forms is dead, only it isn’t really, because ASP.NET
MVC is just <em>different</em>, and not a replacement, but it’s better, except for
when it isn’t. So what do we do with it? Are ASP.NET Web Forms developers losing their
job security if they don’t retrain? The answer is no, but it’s easy for a skilled
developer to pick up ASP.NET MVC, especially if they have worked with web development
pre-Web Forms. This book explains what ASP.NET MVC is all about.
</p>
        <p>
          <strong>Professional ASP.NET MVC 1.0 
<br />
Rob Conery, Scott Hanselman, Phil Haack &amp; Scott Guthrie 
<br />
Wrox • ISBN 978-0-470-38461-9</strong>
        </p>
        <p>
I've been developing in ASP.NET for around 3 years now, and initially it was a strange
experience. Before that, I was a developer of C# desktop applications, so knew the
.NET Framework well. My web development experience, however, was a mix of technologies
that I had played with on my own time. From static HTML pages, then on to CGI scripts,
PHP, mod_perl, Java Server Pages, and finally Ruby on Rails. All of these had something
in common with each other - something that ASP.NET lacks.
</p>
        <p>
Because, when making ASP.NET, Microsoft wanted to emulate the event driven model familiar
to VB6 programmers. But that's not how web servers work, so ASP.NET has to jump through
lots of hoops to come up with a Windows Forms-like model. So-called <em>Web Forms</em> work
well most of the time, but it is a very <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">leaky
abstraction</a>. With any moderately advanced use, you need to be aware of what is
going on behind the scenes, otherwise you'll end up wondering why a line of code doesn't
work if its in Page_Load but does in Page_PreRender, or vice versa, or wondering how
to fix a ViewState exception. ASP.NET Web Forms does some very clever things to make
the event-driven model work, which makes me think that Microsoft has produced something
which is either a work of genius or is insane - and I more frequently think the latter.
</p>
        <p>
So <a href="http://www.asp.net/mvc">ASP.NET MVC</a> is something of a "back to
basics" for ASP.NET developers. Web Forms are gone, and instead is replaced by
a Model-View-Controller (<span style="font-style: italic">MVC</span>) framework <span style="font-style: italic">a
la</span> Ruby on Rails. Instead of viewstates, postbacks and events, you have separation
of concerns, URL routing and testability. It's a much simpler, lighter-weight system,
but should be able to match or beat Web Forms for results.
</p>
        <p>
To teach us how to switch to MVC is this book. It’s written by four Microsofties who
were involved to varying degrees in the development of ASP.NET MVC - <a href="http://blog.wekeroad.com/">Rob
Conery</a>, <a href="http://www.hanselman.com/blog/">Scott Hanselman</a>, <a href="http://haacked.com/">Phil
Haack</a> &amp; <a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a> – so you
can be sure that the authors know what they are talking about.
</p>
        <p>
The first chapter – which makes up a significant 160-page chunk of the 400-page book
– is a complete walkthrough of making an ASP.NET MVC application. The application
is NerdDinner – which you can see online at <a href="http://www.nerddinner.com">www.nerddinner.com</a> –
a tool to get groups of geeks together for pizza and beer (or regional equivalent.)
In addition to all the standard <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> stuff,
it features security authentication, AJAX and online embedded maps. What more could
a hungry nerd demand from a website? This chapter is rich in screenshots, almost literally
holding your hand as you go creating the NerdDinner website for yourself. It covers
nearly all ASP.NET MVC major functions in the process. Reading this chapter might
be all you need to know about ASP.NET MVC. In fact, <a href="http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx">this
chapter is available free online</a>, and so is the <a href="http://nerddinner.codeplex.com/">source
code</a>, so go and have a look at it yourself.
</p>
        <p>
The rest of the book moves back into the kind of style you would expect. The major
functions of ASP.NET MVC have a chapter each. In each chapter the basics are described,
then quickly you move into more advanced functions that NerdDinner didn’t exercise.
ASP.NET MVC functions for routes, controllers, views, and filters each get their own
chapter.
</p>
        <p>
A further chapter rushes through AJAX. It assumes you already know about AJAX, and
instead concentrates on how ASP.NET MVC supports AJAX, with a bit on the <a href="http://jquery.com/">jQuery</a> library
that is now <a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx">bundled
with Visual Studio 2008 SP1</a>.
</p>
        <p>
The next chapter talks about security. Similar to the AJAX chapter, this is about
how ASP.NET MVC helps you with security. Unlike the AJAX chapter, it talks more about
the basics, instead of assuming you know it already. Cross-site scripting, cross-site
request forgery and cookie handling get a write up. Following this the ASP.NET MVC-specific
issues get discussed, such as how to ensure your controllers are secure.
</p>
        <p>
Following are a couple of chapters on <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven
development</a>. One of ASP.NET MVC’s advantage over web forms is that it is easier
to unit test – there are better uses of interfaces to allowing the use of mock objects,
and key classes in your project can stand alone and be tested in isolation. This chapter
gives a whirlwind introduction to test-driven development. A subsequent chapter also
covers testing, describing patterns and techniques to make the code you write testable
too.
</p>
        <p>
A final chapter covers how to bring ASP.NET MVC into existing Web Forms projects –
things you need to be aware of, as well as the nuts and bolts of which assemblies
you have to reference and what you need to add to Web.config.
</p>
        <p>
It’s slightly incredible that this book made it to press so quickly after ASP.NET
MVC was finalised. Unfortunately, it seems that in some parts the book were rushed.
Some concepts appear to be introduced slightly out of order – for example, a short
section of named routes appears in the routing chapter, and it’s not at all clear
why you would want to name routes. It only when you are reading about views later
does it become clear that named routes can be useful when creating hyperlinks. I spotted
a couple of typos as well, but not very many. I get the feeling that although most
of the book may have been edited in good time, parts of it were changing late on and
were not as comprehensively reviewed. Some of the functions are explained very rapidly
– a concept is introduced, explained, demonstrated, and concluded all within a page
or two. String a couple of these together and I sometimes felt out of breath after
reading them all.
</p>
        <p>
The book frequently contains <em>product team asides</em>, call-out boxes that explains
what the ASP.NET MVC development team were thinking when they made a particular thing
work like it does. These insights are often useful and interesting. Despite having
four authors, the feel of the book hangs together generally fairly well. Occasionally
it becomes slightly too informal with the authors name-checking each other – not necessarily
a bad thing, but a bit of a distraction.
</p>
        <p>
In the end, there is no doubt that this book is packed full of very useful information.
NerdDinner acts as a comprehensive introduction to ASP.NET MVC, and then just about
any question you have is answered in the following chapters. The later chapters are
weaker, especially the chapter on testable design patterns – it doesn’t cover the
subject in enough depth to be able to practice the concepts properly – but this isn’t
a book about testing, and the interested reader should definitely consult other in-depth
resources for this subject.
</p>
        <p>
The NerdDinner chapter is a significant and valuable part of the book, and having
the NerdDinner chapter freely downloadable on the web does diminish the value of the
book somewhat. Given this, the book’s RRP of £33.99 is quite steep. However Amazon
UK are selling it for £22.09 (at the time of writing) which is much better value.
If you are serious about wanting to learn and use ASP.NET MVC – and I think most Web
Forms developers should seriously consider this – then this is an excellent book for
you.
</p>
        <img width="0" height="0" src="http://www.frontiertown.co.uk/aggbug.ashx?id=cb405ed0-216e-426e-8966-ad45cb2d60e6" />
      </body>
      <title>Professional ASP.NET MVC 1.0</title>
      <guid isPermaLink="false">http://www.frontiertown.co.uk/PermaLink,guid,cb405ed0-216e-426e-8966-ad45cb2d60e6.aspx</guid>
      <link>http://www.frontiertown.co.uk/2009/06/12/ProfessionalASPNETMVC10.aspx</link>
      <pubDate>Fri, 12 Jun 2009 14:29:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;Book review&lt;/em&gt; • ASP.NET Web Forms is dead, only it isn’t really, because ASP.NET
MVC is just &lt;em&gt;different&lt;/em&gt;, and not a replacement, but it’s better, except for
when it isn’t. So what do we do with it? Are ASP.NET Web Forms developers losing their
job security if they don’t retrain? The answer is no, but it’s easy for a skilled
developer to pick up ASP.NET MVC, especially if they have worked with web development
pre-Web Forms. This book explains what ASP.NET MVC is all about.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Professional ASP.NET MVC 1.0 
&lt;br /&gt;
Rob Conery, Scott Hanselman, Phil Haack &amp;amp; Scott Guthrie 
&lt;br /&gt;
Wrox • ISBN 978-0-470-38461-9&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I've been developing in ASP.NET for around 3 years now, and initially it was a strange
experience. Before that, I was a developer of C# desktop applications, so knew the
.NET Framework well. My web development experience, however, was a mix of technologies
that I had played with on my own time. From static HTML pages, then on to CGI scripts,
PHP, mod_perl, Java Server Pages, and finally Ruby on Rails. All of these had something
in common with each other - something that ASP.NET lacks.
&lt;/p&gt;
&lt;p&gt;
Because, when making ASP.NET, Microsoft wanted to emulate the event driven model familiar
to VB6 programmers. But that's not how web servers work, so ASP.NET has to jump through
lots of hoops to come up with a Windows Forms-like model. So-called &lt;em&gt;Web Forms&lt;/em&gt; work
well most of the time, but it is a very &lt;a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html"&gt;leaky
abstraction&lt;/a&gt;. With any moderately advanced use, you need to be aware of what is
going on behind the scenes, otherwise you'll end up wondering why a line of code doesn't
work if its in Page_Load but does in Page_PreRender, or vice versa, or wondering how
to fix a ViewState exception. ASP.NET Web Forms does some very clever things to make
the event-driven model work, which makes me think that Microsoft has produced something
which is either a work of genius or is insane - and I more frequently think the latter.
&lt;/p&gt;
&lt;p&gt;
So &lt;a href="http://www.asp.net/mvc"&gt;ASP.NET MVC&lt;/a&gt; is something of a &amp;quot;back to
basics&amp;quot; for ASP.NET developers. Web Forms are gone, and instead is replaced by
a Model-View-Controller (&lt;span style="font-style: italic"&gt;MVC&lt;/span&gt;) framework &lt;span style="font-style: italic"&gt;a
la&lt;/span&gt; Ruby on Rails. Instead of viewstates, postbacks and events, you have separation
of concerns, URL routing and testability. It's a much simpler, lighter-weight system,
but should be able to match or beat Web Forms for results.
&lt;/p&gt;
&lt;p&gt;
To teach us how to switch to MVC is this book. It’s written by four Microsofties who
were involved to varying degrees in the development of ASP.NET MVC - &lt;a href="http://blog.wekeroad.com/"&gt;Rob
Conery&lt;/a&gt;, &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt;, &lt;a href="http://haacked.com/"&gt;Phil
Haack&lt;/a&gt; &amp;amp; &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt; – so you
can be sure that the authors know what they are talking about.
&lt;/p&gt;
&lt;p&gt;
The first chapter – which makes up a significant 160-page chunk of the 400-page book
– is a complete walkthrough of making an ASP.NET MVC application. The application
is NerdDinner – which you can see online at &lt;a href="http://www.nerddinner.com"&gt;www.nerddinner.com&lt;/a&gt; –
a tool to get groups of geeks together for pizza and beer (or regional equivalent.)
In addition to all the standard &lt;a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete"&gt;CRUD&lt;/a&gt; stuff,
it features security authentication, AJAX and online embedded maps. What more could
a hungry nerd demand from a website? This chapter is rich in screenshots, almost literally
holding your hand as you go creating the NerdDinner website for yourself. It covers
nearly all ASP.NET MVC major functions in the process. Reading this chapter might
be all you need to know about ASP.NET MVC. In fact, &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx"&gt;this
chapter is available free online&lt;/a&gt;, and so is the &lt;a href="http://nerddinner.codeplex.com/"&gt;source
code&lt;/a&gt;, so go and have a look at it yourself.
&lt;/p&gt;
&lt;p&gt;
The rest of the book moves back into the kind of style you would expect. The major
functions of ASP.NET MVC have a chapter each. In each chapter the basics are described,
then quickly you move into more advanced functions that NerdDinner didn’t exercise.
ASP.NET MVC functions for routes, controllers, views, and filters each get their own
chapter.
&lt;/p&gt;
&lt;p&gt;
A further chapter rushes through AJAX. It assumes you already know about AJAX, and
instead concentrates on how ASP.NET MVC supports AJAX, with a bit on the &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; library
that is now &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx"&gt;bundled
with Visual Studio 2008 SP1&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The next chapter talks about security. Similar to the AJAX chapter, this is about
how ASP.NET MVC helps you with security. Unlike the AJAX chapter, it talks more about
the basics, instead of assuming you know it already. Cross-site scripting, cross-site
request forgery and cookie handling get a write up. Following this the ASP.NET MVC-specific
issues get discussed, such as how to ensure your controllers are secure.
&lt;/p&gt;
&lt;p&gt;
Following are a couple of chapters on &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;test-driven
development&lt;/a&gt;. One of ASP.NET MVC’s advantage over web forms is that it is easier
to unit test – there are better uses of interfaces to allowing the use of mock objects,
and key classes in your project can stand alone and be tested in isolation. This chapter
gives a whirlwind introduction to test-driven development. A subsequent chapter also
covers testing, describing patterns and techniques to make the code you write testable
too.
&lt;/p&gt;
&lt;p&gt;
A final chapter covers how to bring ASP.NET MVC into existing Web Forms projects –
things you need to be aware of, as well as the nuts and bolts of which assemblies
you have to reference and what you need to add to Web.config.
&lt;/p&gt;
&lt;p&gt;
It’s slightly incredible that this book made it to press so quickly after ASP.NET
MVC was finalised. Unfortunately, it seems that in some parts the book were rushed.
Some concepts appear to be introduced slightly out of order – for example, a short
section of named routes appears in the routing chapter, and it’s not at all clear
why you would want to name routes. It only when you are reading about views later
does it become clear that named routes can be useful when creating hyperlinks. I spotted
a couple of typos as well, but not very many. I get the feeling that although most
of the book may have been edited in good time, parts of it were changing late on and
were not as comprehensively reviewed. Some of the functions are explained very rapidly
– a concept is introduced, explained, demonstrated, and concluded all within a page
or two. String a couple of these together and I sometimes felt out of breath after
reading them all.
&lt;/p&gt;
&lt;p&gt;
The book frequently contains &lt;em&gt;product team asides&lt;/em&gt;, call-out boxes that explains
what the ASP.NET MVC development team were thinking when they made a particular thing
work like it does. These insights are often useful and interesting. Despite having
four authors, the feel of the book hangs together generally fairly well. Occasionally
it becomes slightly too informal with the authors name-checking each other – not necessarily
a bad thing, but a bit of a distraction.
&lt;/p&gt;
&lt;p&gt;
In the end, there is no doubt that this book is packed full of very useful information.
NerdDinner acts as a comprehensive introduction to ASP.NET MVC, and then just about
any question you have is answered in the following chapters. The later chapters are
weaker, especially the chapter on testable design patterns – it doesn’t cover the
subject in enough depth to be able to practice the concepts properly – but this isn’t
a book about testing, and the interested reader should definitely consult other in-depth
resources for this subject.
&lt;/p&gt;
&lt;p&gt;
The NerdDinner chapter is a significant and valuable part of the book, and having
the NerdDinner chapter freely downloadable on the web does diminish the value of the
book somewhat. Given this, the book’s RRP of £33.99 is quite steep. However Amazon
UK are selling it for £22.09 (at the time of writing) which is much better value.
If you are serious about wanting to learn and use ASP.NET MVC – and I think most Web
Forms developers should seriously consider this – then this is an excellent book for
you.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.frontiertown.co.uk/aggbug.ashx?id=cb405ed0-216e-426e-8966-ad45cb2d60e6" /&gt;</description>
      <comments>http://www.frontiertown.co.uk/CommentView,guid,cb405ed0-216e-426e-8966-ad45cb2d60e6.aspx</comments>
      <category>.NET</category>
      <category>ASP.NET</category>
      <category>book review</category>
    </item>
    <item>
      <trackback:ping>http://www.frontiertown.co.uk/Trackback.aspx?guid=0bbae1f8-d15b-4a66-9577-7a1f47245d8d</trackback:ping>
      <pingback:server>http://www.frontiertown.co.uk/pingback.aspx</pingback:server>
      <pingback:target>http://www.frontiertown.co.uk/PermaLink,guid,0bbae1f8-d15b-4a66-9577-7a1f47245d8d.aspx</pingback:target>
      <dc:creator>Richard Downer</dc:creator>
      <wfw:comment>http://www.frontiertown.co.uk/CommentView,guid,0bbae1f8-d15b-4a66-9577-7a1f47245d8d.aspx</wfw:comment>
      <wfw:commentRss>http://www.frontiertown.co.uk/SyndicationService.asmx/GetEntryCommentsRss?guid=0bbae1f8-d15b-4a66-9577-7a1f47245d8d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Book review</strong> • Those new to the Pragmatic Programmers and who are
serious about their craft would do very well to read the book that started the series, <a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer">The
Pragmatic Programmer: From Journeyman to Master</a>, by Hunt and Thomas. In a world
full of cutting-edge technologies and books that are out of date as soon as they go
to print, it is a book about the craft of software development, and how to become
a master in it. Those experienced in software development know that moving between
major technologies is easy for those who grok "software" as opposed to just
Java or .NET - the words may be different, but the principles are the same and the
practices vary only a small amount, and it's a book that teaches you how to use your
tools and your skills like a professional.
</p>
        <p>
But I digress, because this review is for <a href="http://www.pragprog.com/titles/prj/ship-it">Ship
it!: A Practical Guide to Successful Software Projects</a>, a guide to getting software
projects done and out of the door, from the publishing house started by the two pragmatic
programmers. This book is firmly aimed at the engineers doing the development work
- there's little talk of requirements and scheduling, or other project management
issues. This is all about using the right techniques to get your code working reliably,
and your coders working together. Richardson and Gwaltney have experienced working
on - and in some cases rescuing - many projects, and this book documents the practices
they have found works best in their experience for getting software finished.
</p>
        <p>
The first section of the book (after the Introduction) is <em>Tools and Infrastructure</em>.
Projects stuck in a rut of dysfunctional source code management and frequently-breaking
code will find the essential, minimum techniques spelled out at the beginning of this
section - basically, use source control to manage all code and assets, and work from
your own private working copy instead of a network share. Moving on, there is sensible
advice on having a build script to build your project in one go, and then automating
this with a continuous integration system. Keep a defect tracking system, and use
testing.
</p>
        <p>
Anyone who has been following software engineering, especially agile methods, will
be familiar with all of these techniques, although I've no doubt that the level its
practiced is much lower. This chapter serves as a checklist for what every software
project should be doing. Each individual step isn't huge, but all used together it
does give you a lot more confidence that your software is building correctly, nobody's
changes are being lost, and that the project is coming under control.
</p>
        <p>
The next chapter, <em>Pragmatic Project Techniques</em>, is focussed mostly on people
instead of tools. It starts with the technique that everyone uses to manage their
work - keep a list, keep it prioritised and always work on the highest priority items
first. Again, basic stuff that most people will know, but that not all will practice.
It introduces stand-up meetings and code reviews.
</p>
        <p>
The next chapter introduces a development methodology, <em>Tracer Bullet Development</em>.
The authors note half-jokingly that a book like this ought to propose a methodology
so they felt they should include one. I felt this was a weak part of the book and
didn't really learn too much. "Tracer bullet" was a technique that Hunt
and Thomas wrote about in their first book, and while it is a useful technique, it
is a bit of a stretch to turn it into a full methodology. It's a worthwhile read,
but not a technique I expect to deploy in full.
</p>
        <p>
Next is <em>Common Problems and How to Fix Them</em>. Exactly as it sounds, this is
a list of ten or twenty problems, a mixture of technical ones such as "testing
untestable code" and "it hurts when I integrate the code", to people-oriented
problems such as "you've got a rogue developer" and "your manager is
unhappy." It's full of practical advice delivered in a calm, don't-panic style.
</p>
        <p>
Finally there is a summary of the tips offered in the book, and then references to
tools to fulfill tasks in the earlier section of the books, such as source control
and continuous integration. This is useful, but is also likely to be the part that
falls out of date the quickest. It would have been useful for the website to keep
an up-to-date list of tools, but this opportunity was missed.
</p>
        <p>
In my view, the first two sections are the most useful, and I would have little hesitation
in applying all of these techniques to projects I work on. They are proven techniques
for getting a project under control, keeping defects and features tracked and keeping
everybody's confidence in the project high. The tracer bullet methodology I doubt
I would deploy in full, but I would certainly take elements of it into my projects.
</p>
        <p>
As I have said, for many people this book's advice will not be new. Techniques such
as continuous integration and stand-up meetings have been part of the agile methods
movement for several years now, and any software developer who is not using source
control is making a serious mistake. However, getting buy-in from other team members
and management for some of the more radical techniques can be difficult, and it is
reassuring to know that the authors own experiences have proven that these techniques
work.
</p>
        <p>
In conclusion, I would definitely recommend this book for this checklist in the first
couple of chapters - read it, get your team to read it, and come back to it regularly
to make sure your practices haven't slipped. The rest of the book I am not convinced
is the best practice you could follow, but still makes an interested read to influence
your own processes. Finally, as I mentioned at the start, this book is firmly aimed
at the coding part of the project process - on its own, it's not a complete guide
to shipping software, but would complement a more general software project management
book very well.
</p>
        <p>
          <strong>Ship it!: A Practical Guide to Successful Software Projects</strong>
          <br />
by Jared Richardson and William Gwaltney 
<br />
Paperback, 200 pages 
<br />
Publisher: Pragmatic Bookshelf (1 Jun 2005) 
<br />
ISBN-10: 0974514047 
<br />
ISBN-13: 978-0974514048
</p>
        <img width="0" height="0" src="http://www.frontiertown.co.uk/aggbug.ashx?id=0bbae1f8-d15b-4a66-9577-7a1f47245d8d" />
      </body>
      <title>Ship It!, from the Pragmatic Programmers series of books</title>
      <guid isPermaLink="false">http://www.frontiertown.co.uk/PermaLink,guid,0bbae1f8-d15b-4a66-9577-7a1f47245d8d.aspx</guid>
      <link>http://www.frontiertown.co.uk/2009/02/09/ShipItFromThePragmaticProgrammersSeriesOfBooks.aspx</link>
      <pubDate>Mon, 09 Feb 2009 10:40:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Book review&lt;/strong&gt; • Those new to the Pragmatic Programmers and who are
serious about their craft would do very well to read the book that started the series, &lt;a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer"&gt;The
Pragmatic Programmer: From Journeyman to Master&lt;/a&gt;, by Hunt and Thomas. In a world
full of cutting-edge technologies and books that are out of date as soon as they go
to print, it is a book about the craft of software development, and how to become
a master in it. Those experienced in software development know that moving between
major technologies is easy for those who grok &amp;quot;software&amp;quot; as opposed to just
Java or .NET - the words may be different, but the principles are the same and the
practices vary only a small amount, and it's a book that teaches you how to use your
tools and your skills like a professional.
&lt;/p&gt;
&lt;p&gt;
But I digress, because this review is for &lt;a href="http://www.pragprog.com/titles/prj/ship-it"&gt;Ship
it!: A Practical Guide to Successful Software Projects&lt;/a&gt;, a guide to getting software
projects done and out of the door, from the publishing house started by the two pragmatic
programmers. This book is firmly aimed at the engineers doing the development work
- there's little talk of requirements and scheduling, or other project management
issues. This is all about using the right techniques to get your code working reliably,
and your coders working together. Richardson and Gwaltney have experienced working
on - and in some cases rescuing - many projects, and this book documents the practices
they have found works best in their experience for getting software finished.
&lt;/p&gt;
&lt;p&gt;
The first section of the book (after the Introduction) is &lt;em&gt;Tools and Infrastructure&lt;/em&gt;.
Projects stuck in a rut of dysfunctional source code management and frequently-breaking
code will find the essential, minimum techniques spelled out at the beginning of this
section - basically, use source control to manage all code and assets, and work from
your own private working copy instead of a network share. Moving on, there is sensible
advice on having a build script to build your project in one go, and then automating
this with a continuous integration system. Keep a defect tracking system, and use
testing.
&lt;/p&gt;
&lt;p&gt;
Anyone who has been following software engineering, especially agile methods, will
be familiar with all of these techniques, although I've no doubt that the level its
practiced is much lower. This chapter serves as a checklist for what every software
project should be doing. Each individual step isn't huge, but all used together it
does give you a lot more confidence that your software is building correctly, nobody's
changes are being lost, and that the project is coming under control.
&lt;/p&gt;
&lt;p&gt;
The next chapter, &lt;em&gt;Pragmatic Project Techniques&lt;/em&gt;, is focussed mostly on people
instead of tools. It starts with the technique that everyone uses to manage their
work - keep a list, keep it prioritised and always work on the highest priority items
first. Again, basic stuff that most people will know, but that not all will practice.
It introduces stand-up meetings and code reviews.
&lt;/p&gt;
&lt;p&gt;
The next chapter introduces a development methodology, &lt;em&gt;Tracer Bullet Development&lt;/em&gt;.
The authors note half-jokingly that a book like this ought to propose a methodology
so they felt they should include one. I felt this was a weak part of the book and
didn't really learn too much. &amp;quot;Tracer bullet&amp;quot; was a technique that Hunt
and Thomas wrote about in their first book, and while it is a useful technique, it
is a bit of a stretch to turn it into a full methodology. It's a worthwhile read,
but not a technique I expect to deploy in full.
&lt;/p&gt;
&lt;p&gt;
Next is &lt;em&gt;Common Problems and How to Fix Them&lt;/em&gt;. Exactly as it sounds, this is
a list of ten or twenty problems, a mixture of technical ones such as &amp;quot;testing
untestable code&amp;quot; and &amp;quot;it hurts when I integrate the code&amp;quot;, to people-oriented
problems such as &amp;quot;you've got a rogue developer&amp;quot; and &amp;quot;your manager is
unhappy.&amp;quot; It's full of practical advice delivered in a calm, don't-panic style.
&lt;/p&gt;
&lt;p&gt;
Finally there is a summary of the tips offered in the book, and then references to
tools to fulfill tasks in the earlier section of the books, such as source control
and continuous integration. This is useful, but is also likely to be the part that
falls out of date the quickest. It would have been useful for the website to keep
an up-to-date list of tools, but this opportunity was missed.
&lt;/p&gt;
&lt;p&gt;
In my view, the first two sections are the most useful, and I would have little hesitation
in applying all of these techniques to projects I work on. They are proven techniques
for getting a project under control, keeping defects and features tracked and keeping
everybody's confidence in the project high. The tracer bullet methodology I doubt
I would deploy in full, but I would certainly take elements of it into my projects.
&lt;/p&gt;
&lt;p&gt;
As I have said, for many people this book's advice will not be new. Techniques such
as continuous integration and stand-up meetings have been part of the agile methods
movement for several years now, and any software developer who is not using source
control is making a serious mistake. However, getting buy-in from other team members
and management for some of the more radical techniques can be difficult, and it is
reassuring to know that the authors own experiences have proven that these techniques
work.
&lt;/p&gt;
&lt;p&gt;
In conclusion, I would definitely recommend this book for this checklist in the first
couple of chapters - read it, get your team to read it, and come back to it regularly
to make sure your practices haven't slipped. The rest of the book I am not convinced
is the best practice you could follow, but still makes an interested read to influence
your own processes. Finally, as I mentioned at the start, this book is firmly aimed
at the coding part of the project process - on its own, it's not a complete guide
to shipping software, but would complement a more general software project management
book very well.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ship it!: A Practical Guide to Successful Software Projects&lt;/strong&gt; 
&lt;br /&gt;
by Jared Richardson and William Gwaltney 
&lt;br /&gt;
Paperback, 200 pages 
&lt;br /&gt;
Publisher: Pragmatic Bookshelf (1 Jun 2005) 
&lt;br /&gt;
ISBN-10: 0974514047 
&lt;br /&gt;
ISBN-13: 978-0974514048
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.frontiertown.co.uk/aggbug.ashx?id=0bbae1f8-d15b-4a66-9577-7a1f47245d8d" /&gt;</description>
      <comments>http://www.frontiertown.co.uk/CommentView,guid,0bbae1f8-d15b-4a66-9577-7a1f47245d8d.aspx</comments>
      <category>book review</category>
    </item>
  </channel>
</rss>