Ted’s Rants and Raves by Ted M. Young

February 1, 2009

Book Review: “The Art of Lean Software Development”, 1st Edition

Filed under: General Rant, Books

The Art of Lean Software Development, 1st Edition
by Curt Hibbs; Steve Jewett; Mike Sullivan

From O’Reilly Media, Inc.
Published February 2, 2009
ISBN-13: 978-0-596-51731-1
Pages: 144

 
 
I’ve already read James Shore and Shane Warden’s "The Art of Agile Development", and whether you liked it or not (I thought it was good enough to purchase half-a-dozen copies for people in my company), I don’t think you can argue that it’s not comprehensive. "The Art of Agile Development" is definitely from the "here’s what we did in the real world with real businesses" school of books.
 
With that book as a reference point, "The Art of Lean Software Development" sounded very appealing and I had high expectations of learning about using Lean ideas in real-world software development. The books is on the short side, only 144 pages, though this can be a good thing since then there shouldn’t be any filler material (unlike the sell-by-the-pound books). Alas, I was sorely disappointed.
 
The book starts out with the seemingly standard "here’s why software projects fail, here’s how waterfall doesn’t work, and here’s the Agile Manifesto and the typical Agile processes." Maybe I’m jaded, but it’s a somewhat old story by now, no? A bright spot is that they point out how Winston Royce’s paper on Waterfall was misunderstood, misinterpreted, or never really read (since Royce actually rails against the down-flowing waterfall process).
 
Next, the book summarizes the Lean Principles: Value, Value Stream, Flow, Pull, and Perfection. And I do mean summarize: the authors spend about a sentence or two per principle. I would’ve liked some more background here, especially the more about "Value" and the "Value Stream", but they promise the next chapter will apply these to software development.
 
Chapter 2 starts by referencing the Poppendiecks’ books on Lean and Software Development ("Lean Software Development" from 2003 and "Implementing Lean Software Development" from 2006) and summarizes their seven principles, diving deepest into the "Eliminate Waste" principle by mapping the manufacturing lean terms to software development terms, e.g., Overproduction -> Extra Features and Transportation -> Handoffs. The authors then go on for only a few more pages on relating the other principles to the process of software development. The chapter ends with a short comparison of Lean vs. Agile, which the authors feel is mainly due to "the mindset" of Lean, i.e., "the elimination of waste in the context of what the customer values."
 
With the introductory material out of the way, I expected to find out more about how to apply the Lean mindset to software development and was eager to learn some new tools. Here’s where I felt really let down. The next six chapters talk about the Lean Practices (starting at the Zeroth), but honestly, there is nothing new about these practices. The Zeroth Practice is "Source Code Management and Scripted Builds". Does anyone doing commercial software development not use source code management? And scripted builds are nothing new. Practice 1 is "Automated Testing". I don’t think there’s any question that this is a must — mainly the arguments are around do I write the tests first or have I gotten 90% code-coverage, etc. Practice 2 discusses "Continuous Integration", but again, this is nothing new and certainly isn’t exclusively a Lean Practice. Practice 3 is "Less Code", i.e., write less code and you’ll have fewer bugs and the system will be easier to maintain. Yup. I totally agree, been doing things that way for decades.
 
Practice 4 is "Short Iterations", which goes back much further than the "translation" of Lean Manufacturing ideas to Software Development. And here I take issue with the recommendation for iteration length: "the best starting point is in the middle of that range—four weeks": my experience is that shorter iterations, such as two weeks, are much better for teams that are starting in Agile because of the shorter feedback loops and more opportunities for inspecting and adapting the process to the needs of the project and the team. The last is Practice 5: "Customer Participation", which is eXtreme Programming’s On-Site Customer. Nothing new here.
 
At this point, the book hits Chapter 9: "What’s Next", which already sounds like the conclusion and I haven’t learned anything new! It does go on for a little bit about Kaizen and Value Stream Maps, but this should be the meat of the book: show me how it’s been applied to projects. Show me the elements that don’t translate to software development. Show me a real-world Kanban board and not just a pretty Visio picture of some columns with rectangles. How does the Kanban really work? How do I deal with wide variation in the tasks? How do I know when and where to put the buffer queues? This section ends with "Make It Visible". Um, Burn-Down Charts? I’ve been using those for years in Agile. And why do I only get a couple of pages on "Root Cause Analysis (Five Whys)"?
 
Chapter 9 ends with some references to "complementary approaches", and I’m very surprised when the authors state "There is currently a little bit of industry talk about applying ToC and CC to software development, but there are no serious efforts that we are aware of to actually do so." Have they even read David Anderson’s 2003 book "Agile Management for Software Engineering: Applying the Theory of Constraints for Business Results"? It’s actually listed in the "Resources" section — unless the authors don’t consider that book (and the kanbandev and Real Options Yahoo Groups email lists) as a "serious effort".
 
All in all, a most disappointing book and definitely not recommended: it doesn’t provide any real-world project information; the authors don’t seem to have participated in any of the mail lists that discuss Lean and Software Development (a quick Google search doesn’t find anything they’ve written in this area); and ultimately it fails to truly show the difference between the various flavors of Agile and how it’s different from "the mindset" of Lean.
 
I suggest reading the books by the Poppendiecks, the Agile Management book by Anderson, the Scrumban book by Corey Ladas and skipping this one.

January 17, 2009

Follow me on Twitter

Filed under: Rave

Looks like I’ve been doing a lot more Twittering (see http://twitter.com/jitterted) than blogging the last couple of months. One thing I like about Twitter is it allows me to write down short (<=140 chars!) thoughts or ideas that don’t warrant a full blog posting. Now that I’ve "saved up" a bunch of thoughts, I can go and write more about them.

Note that my twitterings (tweets) are 95+% about software, development, agile, etc., and very little "ooh, I just saw a cute puppy" or "I’m hungry" — that’s just not the way I want to use Twitter.

 

December 20, 2008

Kanban Book

I’ve been reading lots about Kanban ever since David Anderson talked about his experience at the Nov 3rd (2008) BayAPLN meeting. On the Kanban developer email list, a new book on the topic was announced, "Scrumban", so I immediately went over to Lulu.com and purchased it. I’ll probably start reading it next week as it’ll be pretty quiet in the office.

In the meantime, if you’re at all interested in (or practicing) Agile, I highly recommend also reading about how Kanban is being applied to software development. The email list is a good place to start, as is David Anderson’s blog and articles.

 

November 12, 2008

Easing Into Agile - Slides from Silicon Valley Code Camp 2008

Filed under: General Rant

The presentation "slides" are here: http://www.tedmyoung.com/EasingIntoAgile.pdf.

Note that the content is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.

Question, comments, criticism, etc., are always welcome.

November 10, 2008

Two IDEA 8.0 Features Worth the Price to Upgrade

Filed under: General Rant

I don’t know about you, but I’ve got code in my code base that still uses arrays and we need to move them to Lists. Sounds like fun, huh? Well, a new refactoring in IDEA 8.0, Type Migration, is going to help a lot in this task. The other feature that blew me away during the EAP was the Data Flow To This… command, which lets you see how the variable you’re looking at got its value all the way back through the method chains. This is really useful when you’re trying to figure out, say, why the value is null and where it got set that way.

Examples and screenshots on these coming soon. 

IntelliJ IDEA 8.0 Released!

Filed under: General Rant

Yeah, IDEA 8.0 has been out almost a week, but I’ve been so busy with the Code Camp preparations, I didn’t have time to focus on it.

I’ve been using 8.0 since the first Early Access builds, and it’s been a very solid product all the way through. There were some regressions in the way things were "painted" (causing background colors to not work properly in some cases) that I’m betting has to do with the fact that IDEA 8.0 ships with the 1.6u10 release of the Sun Java VM. Those bugs are fixed and I’m happily using 8.0 on its 30-day trial until I get my 7.0 license upgraded. I’m bummed that I didn’t win the JetBrains raffle at the Code Camp, but oh well.

I’ll be posting thoughts and information about the new 8.0 features over the next few weeks. 

Silicon Valley Code Camp 2008 - FEEDBACK

If you attended my "Easing Into Agile" or "Building Better Tests in Java" sessions at the Silicon Valley Code Camp 2008, I’d love to hear any feedback, compliments, constructive criticism, and any questions that you might have thought of. The code camp eval for the Agile session is here: http://tr.im/yqi and the eval for the Builders session is here: http://tr.im/yqm. I also encourage you to leave a comment here if that’s more convenient.

November 9, 2008

Why Test Data Builders Are Good

Filed under: Java, Testing

This morning at Code Camp, Shaun Abram (http://www.shaunabram.com/) asked me about my "Building Better Tests in Java" presentation where I talked about using Test Data Builders instead of Factory classes (what we at Guidewire call DataGen classes). He said that he liked Builders, but wasn’t sure what the compelling benefits were. I’m glad he asked because besides giving me an idea for a blog entry, it’ll make me go back and make it more clear.

If you were at the presentation, here’s the reasons that I had hoped to get across:

  • Prevent the combinatorial explosion of variations on methods to create an entity. In one example, we had 12 different variations to create a Policy. Yikes.
  • Tests become much more readable. For example, would you rather read:
  • Activity myActivity = DataGen.activity( true, true, false, true, true, Status.NEW, Priority.MEDIUM, false );

    or, with a test data builder:
    Activity myActivity = new ActivityBuilder()
            .autoGenerated()
            .notEscalated()
            .ownedExternally()
            .mandatory()
            .recurring()
            .statusNew()
            .priorityMedium()
            .shared()
            .create();

    If you said the first one, you’re far too familiar with our Activity entity and probably work at Guidewire. :-)

Shaun also mentioned a problem where someone comes along and changes one of the defaults (i.e., the value of a property that wasn’t specified) in a factory method to fit the test they’re writing, only to break a bunch of other tests that relied on different defaults. They probably did that because they didn’t want to create yet another factory method that took the property as a parameter so they could choose a different value.

 

Chained Methods and the Fluent Interface

Also, Jeff Brown (http://blog.bits-in-motion.com/) at the BBQ last night mentioned that he was surprised I didn’t use the phrase "fluent interface" and he’s right! OMG! There goes my credibility. Seems like a need to rework my Builders presentation, but I think I knew that.

November 8, 2008

SILICON VALLEY CODE CAMP 2008

Filed under: General Rant

If you attended (or missed) either of my Silicon Valley Code Camp talks, I’d be happy to do them again as 5 minute lightning talks. :-)

Saturday’s sessions are over, but there’s still Sunday! See http://www.siliconvalley-codecamp.com/Sessions.aspx

Silicon Valley Code Camp

If you’re looking for slides and other information from my Silicon Valley Code Camp 2008 talks (either Easing Into Agile or Building Better Tests in Java), stay tuned! I’ll be uploading them very soon!

Thanks for coming!

Get free blog up and running in minutes with Blogsome
Theme designed by Jay of onefinejay.com