Wednesday, January 31, 2007
I have to say the book looks pretty "excellent" itself. It may even become a new classic, replacing the old classic "Writing Solid Code" by Steve MacGuire. And if Steve McConnell hadn't recently updated his even more classic "Code Complete" with a 2nd edition, I might even put Code Craft on a par with that. It's that good!
It's not just about programming & design either. Like Code Complete it covers pretty much all of "software construction." It has some good stuff about build, integration, test, source-control, and more.
About my only pet peeve is that in the "Answers and Discussion" section it talks about recursive make versus inclusive make schemes. It has a pretty good discussion, but I couldn't find any reference to the classic paper by Peter Miller entitled "Recursive Make Considered Harmful". That kind of bothered me because I don't think there's any good excuse for it. It also made me wonder if there were some other places I didn't know about where appropriate references/citations were missed or neglected. (It's not severe enough to make me recommend the book any less highly though!)
I would probably put Code Craft on the "REQUIRED READING" list for any relatively new professional programmer, and have them read it just before before reading Code Complete.
Friday, January 26, 2007
ALF and Corona? or Open-Sourced Jazz?
While there has been activity on the websites for the ALF and Corona projects, we havent been hearing so much about them in the media outside of Eclipse-centric conferences, and press-release announcements from yet another vendor with an Eclipse "compatible" release of their software. While this certainly doesn't shatter the prediction, there has been more attention (perhaps due to more marketing?) about the upcoming ALM collaboration framework from IBM Rational called "Jazz."
Based on the RDSC 2006 Day 2 Keynote presentation (and also at JavaOne), Jazz is touted as the next generation of the Eclipse platform and the team based software development platform. Rational will of course provide a tool-set to go with it, but says it plans to release the overall framework (and code/APIs) under Open-Source. The claim is that the result is an ALM collaboration architecture which is inherently scalable to provide true support for geographicall dispersed development projects in a true collaborative fashion. Well known names from Rational have been presenting Jazz at various conferences throughout 2006 and generating lots of "buzz," as evidenced by articles and blogs like the following:
Interestingly enough, with all that marketing buzz, Rational was also very clear about that fact that Jazz would not be released until after 2006. So look for even more "hype" and "hope" in 2007 when the first releases of Jazz become available, and especially when the core Jazz infrastructure is released as open-source under the auspices of Eclipse project. It will be interesting to see the impact this has on the Eclipse ALF and Corona projects (which Jazz doesn't currently use, althought it could conceivably make use of Corona in the future) and the Eclipse BIRT project (which Jazz does make use of). Current marketing would suggest that Jazz is the new vision, or more aptly, more likely, the new open-source hope to slay (or at least compete with) MS VSTS
- IBM is Revamping Rational
- IBM Jazzes Collaboration
- JavaOne 2006: Keynote on Agile Eclipse, Transparency, Honest, and Retrospective
- Rational Jazz Soon to Eat More of It's Own Dog-food: Transparency
- Jazz is the news
- IBM Jazzing up Rational Offerings, from InfoWorld
- IBM to employ open-source development style for tools, from eWeek
- Online Collaboration and Agile Software Development, from Dr. Dobbs Journal
- Big Jazz News on IBM developerWorks blogs
- Agile Requirements Engineering in the Jazz Collaborative Development Environment, from Rutgers 2006 Software Engineering day
- Hot Jazz vs. Cold Beans, blog-entry
The site founder, Patrick Egan, usually also initiates a discussion thread to engage the readership into the topic, and this year was no exception, as Patrick asked us What needs to change in CM and ALM for 2007. At the end Patrick added "How does CM fair in an increasingly Agile world?"
This sparked the perennial debate about "Agile CM" and whether or not it's any different from more traditional/mainstream CM. Folks wanting to read the whole thread are certainly welcome to do so. I'm going to excerpt what I think are some relevant thoughts from what I posted ...
My thoughts are much along the same lines as Frank's posting. I think we need to raise the level of abstraction of our thinking and problem solving. There are tools that do this, but the problem is that until the "lowest common denominator" tools catch-up, the majority of the state of the practice won't move too far past that (IMHO).
I do think its a good thing that two of lowest common denominator tools on the version-control side seem to be in the process of being supplanted with successors that go further in this direction (CVS -> Subversion, and VSS -> MS VSTS). I don't see as much on the change-tracking side, and integrations still aren't very integrated for the most part.
Regarding "an increasingly Agile world" ... as more and more shops and companies (and vendors) say they are "Agile", the more the term "Agile" becomes diluted and branded, and more of a marketing term than anything else. And that does do damage (as Joe mentioned); In fact it does the most damage to those that are doing it justice.
I do however think that the increased emphasis & visibility on frequent automated integration is a good thing, and that the trend of not only doing more of that, but using that as a mechanism of generating and reporting more (and more accurate) metrics is also a good thing. ...
The term "Agile" and the ideas behind it is no better or different from other "fads" like Object-Orientation or [software/design] Patterns. They had lots of hype and buzz, they had some legitimate improvements to contribute to the state of the practice (even if the ideas themselves weren't new - that's not necessary in order to have great impact/influence), and once everything was all "hyped out" they faded into the woodwork, as a natural, acknowledged, part of the fundamental knowledge we should use+apply everyday.
Increasingly, software CM implementations & deployments will need to better accommodate an increasingly Lean/Agile world (and it will be more important to know the difference between the pretenders and the real-thing). While I agree with Joe and others that the basic tenets of what CM is and what it is supposed to be don't change because of Agile, the fact remains that the norm for how CM is actually practiced and implemented in many shops will need to change.
Many tools/vendors are already headed in that direction, and have recognized the trend foretold by Thomas Friedman (The World is Flat), Peter Fingar (Extreme Competition) and others like Dan Pink, John Seely Brown, and more. With CollabNet, MS VSTS and Rational Jazz, the emphasis is on connecting and collaborating. And ways of doing software development and CM that fail to acknowledge that, and at least the first five of what Steve McConnell calls The Ten Most Important ideas in Software Engineering are going to have a tougher go of things than they have in the past.
As to whether or not "Agile CM" does (or will) exist, that will be determine by the people who end up actually doing it, and defining it. Anything claiming to be "Agile" will need to legitimately embrace the ideals of collaboration and the human element that Agile emphasizes, as well as at least the first 4 of the 10 ideas McConnell identifies. It will also need to embrace Lean principles and techniques. And if I get to have any part in shaping it, I think it should also include heaping helpings of Theory of Constraints (including Critical Chain) and Six-Sigma as they apply to CM and the "throughput" of change-flow, and change management.
All those things have something useful and important to offer us, and for those that can sift thru the hype and wannabees, there are huge gains to be had (whatever the trendy term end up being). I also agree with Bill Langston that there are some relevant standards (as well as "classic" ideas & methods) that are important to maintain, and which must "temper" the application of the newer and trendier (instead of always going back and forth between rigid and unyielding extremes).
Maybe it should be "Jeet Kune Do" CM instead of "Agile" CM :) Because we need to look at the new things and "keep what is useful" without abandoning the old so we can adapt and change as the speed of business and technology mandates.
Friday, January 19, 2007
In addition, I finished tagging my blog-entries with labels. The new "Categories" section lists all of the categories and the number of entries in each category (along with a hyperlink to take you to all entries filed under that category).
Oh yeah! I'm also using a newer picture now -- It's amazing just how much one's hair can thin/recede in just a few years :-(
If youre seeing this, then you should no longer need to worry about any more previous entries getting republished "en masse" anytime soon. Very shortly now I'll be "pushing" my last 4 entries "live" in the next couple of days.
Friday, January 12, 2007
[last update: 27-April-2007]
For a colleague at work, I compiled a list of resources covering Lean principles & practices, their integration with Six Sigma and/or Agile development methods, and the application of Lean to software development. I thought others might find it useful, so here it is ...
- Agile Management for Software Engineering, by David J. Anderson, Prentice-Hall PTR, September 2003
- Lean Software Development: an Agile Toolkit, by Mary & Tom Poppendieck, Addison-Wesley, October 2005 in The Agile Software Development Series
- Implementing Lean Software Development: From Concept to Cash, by Mary & Tom Poppendieck, Addison-Wesley, September 2006 in The Addison-Wesley Signature Series
- Lean Software Strategies: Proven Techniques for Managers and Developers, by Peter Middleton & James Sutton, May 2005 by Productivity Press
- Managing the Design Factory, by Donald G. Reinertsen, The Free Press,
, 1997 New York
- Product Development for the Lean Enterprise, by Michael N. Kennedy, Oakela Press, 2003
- Lean Project Management, by David J. Anderson
- Agile Management for Software Engineering, by David J. Anderson
- Managing Lean Software Development with Cumulative Flow Diagrams, by David Anderson
- Lean Manufacturing and the Theory of Constraints – Focusing Lean, by Eric Gowland
- Lean Accounting & Throughput Accounting, Peter Milroy
- Lean Six Sigma - Benefits beyond CMMI L3, Nancy POMA, EDS, October 2006
- Software and Lean: Like Chocolate & Cranberries, by James S. Sutton, STSC 2005 Proceedings
- Lean Software Development, by Dr Christoph Stiendl, 2004
- Lean Thinking: The Theory behind Agile Software Development, by Mary Poppendieck, 2002
- Implementing Lean Software Development (Practitioner’s Course), Mary Poppendieck, November 2006
- Competing on the basis of Speed, 1hr video presentation to Google by Mary Poppendieck
- Other talks by Mary Poppendieck at http://www.poppendieck.com/events.htm
- Business Process Management: What's Driving Toyota?, Baseline magazine, September 2006
- Agile Product Development: Managing Development Flexibility in Uncertain Environments, by Stefan Thomke and Donald Reinertsen, California Management Review 40, no. 1 (fall 1998): 8-30
- Managing Lean Software Development with Cumulative Flow Diagrams, by David J. Anderson
- Agile Software Management Accounting for Systems, by David J. Anderson
- Agile Software Management: Dealing with Uncertainty, by David J. Anderson
- The Lean-Agile Connection: Developing Quality Software Efficiently by Alan Shalloway
- Introducing the Integrated Theory by Dan Rawsthorne and Alan Shalloway
- Whitepaper: Agile Work Uses Lean Thinking, Whitepaper by Mishkin Berteig
- Business Performance Through Lean Six Sigma : Linking The Knowledge Worker, The Twelve Pillars, And Baldrige / by James T. Schutta
- Introducing Lean Software Development, by the Lean Software Institute
- Lean Six Sigma and High-Performance Organizations Combined, by Tom Devane (book excerpt)
- Lean Thinking. Protein-based dietary fad or Management’s New Testament?, BPM
- Bringing Lean Systems Thinking to Six Sigma, by Paul Mullenhour and Jamie Flinchbaugh, 2005
- Lean Software Delivery with the IBM Rational Solution, by Clay Nelson, The Ratioinal Edge, October 2006
- TOC and Lean,
for Industrial Research and Service Iowa State University Center
- Lean Thinking for Process Improvement, part 2 of a three part series by bizmanuals.com
- Six Sigma and Lean Manufacturing, by Michael Baudin
- Agile vs Lean Software Develompent
- Lean articles at isixsigma.com
- How to Compare Six Sigma, Lean and the Theory of Constraints, by Dave Nave, Quality Progress, March 2002
- Software Development Convergence: Six Sigma-Lean-Agile, by David Hallowell
- Design for Six Sigma and Lean Manufacturing, by Praveen Gupta, 2001
Websites / Blogs:
- Tom & Mary Poppendieck’s home page at http://www.poppendieck.com/
- David Anderson's Agile Management website at http://www.agilemanagement.net/
- Lean Enterprise Wiki search engine: http://lean-enterprise-swicki.eurekster.com/
- Lean blogger Pete Shmula at http://www.shmula.com/has lots of nice blog-entries/articles on aspects of Lean
- NetObjectives Lean Software Resources at http://www.netobjectives.com/resources/lean
- Lean manufacturing - Wikipedia, the free encyclopedia
Friday, January 05, 2007
Here are my top 10 blog-entries of 2006. This is based not on hit-counts, but rather on reference counts (number of mentions in other blog-posts, forums, articles, etc.) in some form or another. Note that there was a tie for the #10 spot.
- Dimensions and Views of SCM Architecture
- Scaling Agility: Summary of Resources
- The Unchangeable Rules of Software Change
- Agile SCM Principles: From OOD to TBD+CBV+POB
- Trustworthy Transparency over Tiresome Traceability
- Simple ain't Easy: Myths and Misunderstandings about Simplicity
- Codeline Flow, Availability and Throughput
- Impacts of Extreme Globalization and Extreme Competition
- Agile vs MDE: XP, AMDD, FDD and Color Modeling
- Nested Synchronization and Harmonic Cadences and Feedback, Flow and Friction
Some of the above surprises me. Some of it is close to what I was expecting ...
- I'm truly astonished at the #1 post - both because it was so recent and also because I'd seen very little indictaion of interest in my 4+2 views of SCM architecture (most folks probably just liked all the links that went along with it).
- The #2 and #3 entries don't surprise me, and I'm happy to see them there.
- I'm very surprised the "Simple Ain't Easy" post didnt rank much higher. I personally liked that one and my "Unchangeable Rules of Software Change" the most in 2006. And I saw so much discussion and mention of the "Simple Ain't Easy" post, I honestly expected it to be the #1.
- I am surprised by the ranking of the posts on codeline flow & throughput, and nested synchronization & harmonic cadences. I had the impression that struck most folks as rather esoteric.
- Business Agility Defined
- Extreme Traceability
- Nutshell Definitions of Agile Development
- 5Cs of Agile SCM
- Cost, Cruft and Constraints
- Pragmatic Multi-Variant Management
- Agile IT Organization Refactoring
- Trends in SCM Predictions for 2006
- Everyone Wants to be LUVed
- Lean Principles for Branching