- Lean Configuration Management – Supporting Increased Value Delivery from Agile Software Teams
by Jens Norin and Daniel Karlström, in the Proceedings of the 6th Conference on Software Engineering Research & Practice in Sweded (SERPS'06), October 2006 (and also in September 2006 as a Softhouse Whitepaper on Lean CM) - Gain flexibility & speed with Lean CM
by Joe Beckett, Plant Magazine, June 2005
Tuesday, May 29, 2007
Lean CM
I found a couple of great resources on Lean CM that are very compatible with the article we wrote last month on Lean-based Metrics for Agile CM Environments.
Monday, May 21, 2007
Defining Agile SCM
The May issue of the CM Journal is devoted to the theme of CM & Agility. Myself and Rob Cowham wrote an article for it entitled Defining Agile SCM: Past, Present and Future.
Basically, we try to emphasize that Agile CM is more than just CM for Agile projects, it also means making CM itself be Agile and using the principles tools and techniques of Agile, Lean, TOC (and even some Six Sigma) for CM. Give it a read through and then give us your feedback!
There is also (finally) a new forum on CMCrossroads.com specifically for Agile CM. Of course one of the discussion topics is "what is Agile CM?" and a lot of detractors saying there is no such thing - that it's just plain old CM for Agile projects and that CM is still CM. I contend it ain't the same old CM, and that Agile CM does more than simply apply classic CM discipline & principles to Agile projects, it also applies Agile/Lean principles, tools and techniques and is just as different from traditional plan-based CM as different architectural styles.
In our earliest articles on the topic, we defined Agile SCM as "the pragmatic application of sound CM principles & practices in accordance with Agile values, using Lean thinking, to serve the needs of the business!" We wish to elaborate what that means in terms of SCM for Agile development, but even more importantly in terms of how we should apply Agile, Lean and their related principles to SCM processes and procedures.
Basically, we try to emphasize that Agile CM is more than just CM for Agile projects, it also means making CM itself be Agile and using the principles tools and techniques of Agile, Lean, TOC (and even some Six Sigma) for CM. Give it a read through and then give us your feedback!
There is also (finally) a new forum on CMCrossroads.com specifically for Agile CM. Of course one of the discussion topics is "what is Agile CM?" and a lot of detractors saying there is no such thing - that it's just plain old CM for Agile projects and that CM is still CM. I contend it ain't the same old CM, and that Agile CM does more than simply apply classic CM discipline & principles to Agile projects, it also applies Agile/Lean principles, tools and techniques and is just as different from traditional plan-based CM as different architectural styles.
Saturday, May 12, 2007
Five R's of Agile SCM Baselines
Almost a year ago I posted an entry on the "5 C's of Agile SCM Codelines". This time I'm posting on the 5 R's of Agile SCM Baselines. I think these are as follows (note that most of these are not unique to Agile/Lean):
I use the term "reportable" instead of "traceable" here for two reasons: 1) 'traceable' doesn't begin with 'R', and 2) 'traceable' brings to mind many negative associations with manual tracing, rather than simply providing the necessary transparency and ability to trace (without necessarily implying doing all that tracing, much less doing it all manually).
Note also that "repairable" may not imply that the cost of repair is low. Ideally, the repair can be done as quickly as possible by the development organization, but getting it to the consumer(s) may be both costly and time-consuming. So, rather than "low cost", being "repairable" speaks more to maintainability, and the ability to quickly understand the system and what must be done to repair it. We want to repair it with minimal interruption of flow, and with a minimum amount of overhead.
Why is any of that particularly "agile"? Most of it isn't, but the 'take' on reportability certainly is, and the notion of "releasable" may seem agile to those who feel the codeline should (ideally) be in a readily releasable state. CMers would say that "releasability" was always part of what a baseline requires (and they'd be right).
What do you think? Did I miss any other important R's? Or should something else be used instead? Would an additional R-word or two not listed above help differentiate between "Agile" CM versus more traditional CM?
Here are all the other R-words I considered:
- Repeatable -- The steps to create the corresponding Build (Configuration) from its sources should be repeatable: for any baselined configuration, I should be able to build it the same way, over and over again.
- Reproducible -- The corresponding Build (Configuration) should be reproducible: for any baselined configuration, I should be able to reproduce it whenever desired.
- Reportable -- The corresponding Build (Configuration) should be reportable: for any baselined configuration, I should be able to report all needed details about its content: what files & versions are in it, which changes/requests are in it, who made which change to what (& when), how it was built and with what tools & options, etc.
- Releasable -- The corresponding Build (Configuration) should be releasable: if I have "baselined" it, then almost by definition, it means it should be of 'releasable quality' to the next downstream consumer. (This implies it should be correct + consistent + complete to the extent agreed upon with the its stakeholders.)
- Repairable -- The corresponding Build (Configuration) should be readily repairable: if, for any reason, it is discovered to have some kind of problem, then I must be able to readily repair it either by retracting it and replacing it with it's predecessor, and/or by removing/repairing the offending content and releasing it as a new (corrected) baseline.
I use the term "reportable" instead of "traceable" here for two reasons: 1) 'traceable' doesn't begin with 'R', and 2) 'traceable' brings to mind many negative associations with manual tracing, rather than simply providing the necessary transparency and ability to trace (without necessarily implying doing all that tracing, much less doing it all manually).
Note also that "repairable" may not imply that the cost of repair is low. Ideally, the repair can be done as quickly as possible by the development organization, but getting it to the consumer(s) may be both costly and time-consuming. So, rather than "low cost", being "repairable" speaks more to maintainability, and the ability to quickly understand the system and what must be done to repair it. We want to repair it with minimal interruption of flow, and with a minimum amount of overhead.
Why is any of that particularly "agile"? Most of it isn't, but the 'take' on reportability certainly is, and the notion of "releasable" may seem agile to those who feel the codeline should (ideally) be in a readily releasable state. CMers would say that "releasability" was always part of what a baseline requires (and they'd be right).
What do you think? Did I miss any other important R's? Or should something else be used instead? Would an additional R-word or two not listed above help differentiate between "Agile" CM versus more traditional CM?
Here are all the other R-words I considered:
- Recoverable Reliable Reversible Retractable Retainable Realizable Relocatable Remediable Repealable Replicable Revocable Relapsable Rebuildable Recapturable Reconfigurable Reconstitutable Reconstructible Recordable Recyclable Referable Retrievable Reusable Restorable Renewable Replaceable Representable Respectable Responsible Removable Reachable Readable Receivable Reclaimable Recognizable Recommendable Reconcilable Recreatable Remissible Rectifiable Recuperable Redeemable Reducible
Saturday, May 05, 2007
Software CM is Not a Process!
The (hopefully) provocative title of today's blog-entry is inspired by Phil Armour's essay "Software is Not a Product!", which is one of many profoundly insightful essay's from his book The Laws of Software Process.
Armour maintains that:
So today, I'll attempt a similarly-themed "riff" about Software CM, beginning with the assertion that Software CM is not a process!
This assertion might seem shocking to some. Other CMers might say they have known this all along, saying CM is a discipline (rather than a process), and that numerous formal definitions of SCM have said this for quite some time: SCM is a "discipline" that "governs" or applies "technical and administrative direction and surveillance" to the functional components of CM (item identification & planning; item storage, versioning & change control; status accounting, audit & review).
If software is a medium for storing executable knowledge, and software development is a knowledge acquisition & creation (learning) activity, then the result of software CM is the medium through which software development changes and collaborative learning must ultimately flow.
If the result of software CM is a medium for the conveyance of changes by executing the knowledge gained from learning, then software CM itself must impose some form of order (structure & rhythm) to achieve this resulting collaborative flow of change-flow.
For me, terms like "order" and "structure" evoke memories from my years participating in the software patterns movement and study+discussion of the works of Christopher Alexander. For Alexander, patterns were all about discovering the innate order in structures that emerged naturally from the recurring attempt to resolve (trade-off) the same set of competings concerns (forces) for the same problem in the same/similar contexts. The resulting structures and their sequencing and interaction is what all comes together as an overall (emergent) architecture.
Hence, I would say that Software CM is an emergent yet intentional architecture that ensures the orderly, efficient flow of software development change & collaboration.
The elements of this Software CM architecture include practices, tools & technology, teams & organizations, valued deliverables & intermediate work-products, changes to and assemblies of these deliverables & work-products, and the set of needed status/tracking reports & measures.
Hmmn, this fits in rather nicely with my 4+2 Views of SCM/ALM Solution Architecture and perhaps even does a good job of tying together SCM with Agile/Lean (collaboration & flow), and software patterns (particularly SCM Patterns :).
So there you have it:
What do you think?
Armour maintains that:
The core issue with the business of software is that we misunderstand what software really is. Software is thought of as being a product, it is looked at as being a product, it is mostly managed as if it were a product. But it's not a product... The hard part about creating software systems is not creating them, it is in acquiring the knowledge necessary to create them (correctly).
Therefore:Software is not a product, it is a medium for storing executable knowledge.
Our lack of understanding of this basic fact is one of the key issues facing the software industry. We do not "build systems"—we acquire knowledge. The systems we ship to our customers are actually the byproducts of the real activity, which is to learn.
The business imperative is that the real product is the knowledge that is in the systems we ship to the customer, and we don't manage that at all.
So today, I'll attempt a similarly-themed "riff" about Software CM, beginning with the assertion that Software CM is not a process!
This assertion might seem shocking to some. Other CMers might say they have known this all along, saying CM is a discipline (rather than a process), and that numerous formal definitions of SCM have said this for quite some time: SCM is a "discipline" that "governs" or applies "technical and administrative direction and surveillance" to the functional components of CM (item identification & planning; item storage, versioning & change control; status accounting, audit & review).
If software is a medium for storing executable knowledge, and software development is a knowledge acquisition & creation (learning) activity, then the result of software CM is the medium through which software development changes and collaborative learning must ultimately flow.
If the result of software CM is a medium for the conveyance of changes by executing the knowledge gained from learning, then software CM itself must impose some form of order (structure & rhythm) to achieve this resulting collaborative flow of change-flow.
For me, terms like "order" and "structure" evoke memories from my years participating in the software patterns movement and study+discussion of the works of Christopher Alexander. For Alexander, patterns were all about discovering the innate order in structures that emerged naturally from the recurring attempt to resolve (trade-off) the same set of competings concerns (forces) for the same problem in the same/similar contexts. The resulting structures and their sequencing and interaction is what all comes together as an overall (emergent) architecture.
Hence, I would say that Software CM is an emergent yet intentional architecture that ensures the orderly, efficient flow of software development change & collaboration.
The elements of this Software CM architecture include practices, tools & technology, teams & organizations, valued deliverables & intermediate work-products, changes to and assemblies of these deliverables & work-products, and the set of needed status/tracking reports & measures.
Hmmn, this fits in rather nicely with my 4+2 Views of SCM/ALM Solution Architecture and perhaps even does a good job of tying together SCM with Agile/Lean (collaboration & flow), and software patterns (particularly SCM Patterns :).
So there you have it:
Software CM creates the medium through which software development changes & activities must flow. Therefore, Software CM is the intentional architecture of software development change-flow.
What do you think?
Sunday, April 29, 2007
BOOK: Release It!
I just received a copy of "Release It! Design and Deploy Production-Ready Software" by Michael Nygard. This looks to be yet another winner from the PragmaticProgrammers' Pragmatic Bookshelf. In fact it made #1 on Amazon.com's "Hot New Releases" list for Design Tools and Techniques for the past two weeks.
Actually, this book isn't about what I had originally thought from reading the early descriptions. I thought it was going to be related to build+release+deployment engineering (CM guy that I am :). It's not about that at all. It is about architecture and design for production deployment concerns, such as: hardware/software "fit", availability/reliability, operability, stability, capacity, and maintainability (not just of the code, but of the deployed product at the customer's site).
"Release It!" covers all those things many of us software-only, high-level abtractionists forgot (or worse yet, never learned) about design & architecture for where the rubber meets the road. I need to add it to my reading list!
Actually, this book isn't about what I had originally thought from reading the early descriptions. I thought it was going to be related to build+release+deployment engineering (CM guy that I am :). It's not about that at all. It is about architecture and design for production deployment concerns, such as: hardware/software "fit", availability/reliability, operability, stability, capacity, and maintainability (not just of the code, but of the deployed product at the customer's site).
"Release It!" covers all those things many of us software-only, high-level abtractionists forgot (or worse yet, never learned) about design & architecture for where the rubber meets the road. I need to add it to my reading list!
Saturday, April 21, 2007
April CM Journal and LDM
The April issue of the CM Journal, and there is a FANTASTIC article in it by Austin Hastings about his Longacre Deployment Management strategy for dealing with database CM. It's long, but well worth the read for the insight into a new way of thinking about and doing CM of a database.
The April CM Basics issue has a companion/predecessor article a Case Study: Enterprise and Database CM the describes the initial problem, motivation and challenges that the LDM approach needed to solve. The LDM article goes into the gory technical details of the solution.
The April CM Basics issue has a companion/predecessor article a Case Study: Enterprise and Database CM the describes the initial problem, motivation and challenges that the LDM approach needed to solve. The LDM article goes into the gory technical details of the solution.
Saturday, April 14, 2007
Agile Development Distilled
Lately I've been spending some time thinking about how to distill Agile development within my company on a single powerpoint slide for a top-level Executive. I keep going back and forth between something that shamelessly steals (and modifies) something used to describe RUP, and something that shamelessly steals (and slightly modifies) something from Dan Rawsthorne.
Dan Rawsthorne writes that the "essence of agility is: iteration, validation, feedback." I think something along those lines is ...
RUP talks about 6 Key Principles For Business-Driven Development:
1. Adapt The Process
2. Balance Stakeholder Priorities
3. Collaborate Across Teams
4. Demonstrate Value Iteratively
5. Elevate The Level Of Abstraction
6. Focus Continuously On Quality
I think an "Agile slant" on that would be:
Of course much of this just seems like Steven Covey’s Seven Habits of Highly Effective People. And maybe that is true.
Other sources and quotes ...
Dan Rawsthorne writes that the "essence of agility is: iteration, validation, feedback." I think something along those lines is ...
Agility comes from rapid feedback & learning in short-cycles using:
- Close Collaboration
- Continuous Validation
- Frequent Iteration
- Dynamic Adaptation
RUP talks about 6 Key Principles For Business-Driven Development:
1. Adapt The Process
2. Balance Stakeholder Priorities
3. Collaborate Across Teams
4. Demonstrate Value Iteratively
5. Elevate The Level Of Abstraction
6. Focus Continuously On Quality
I think an "Agile slant" on that would be:
1. Adapt to Change
2. Prioritize Scope
3. Collaborate Across Teams
4. Demonstrate Value Iteratively
5. Elevate the Level of Automation
6. Continuously Validate Quality
Of course much of this just seems like Steven Covey’s Seven Habits of Highly Effective People. And maybe that is true.
Other sources and quotes ...
| Alistair Cockburn writes of Seven Properties of Agile Projects: 1. Frequent Delivery 2. Reflective Improvement 3. Osmotic Communication 4. Personal Safety 5. Focus 6. Easy Access to Expert Users 7. A Technical Environment with Automated Tests, Configuration Management, and Frequent Integration |
| David Anderson's Agile Recipe for Success is: Focus on Quality, Reduce Work-in-Progress, Balance Demand against Throughput, Prioritize. He also writes "Trust is the essence of Agile" |
| Jim Highsmith adds that: "Agile Organizations don’t just respond to change; they generate it!" |
| “Agile development uses feedback to make constant adjustments in a highly collaborative environment." -- Andy Hunt, http://www.sdtimes.com/fullcolumn/column-20060615-01.html |
| "Short Cycles and Customer Involvement" -- 3rd eWorkshop on Agile Methods |
| "an inclusive, people-centred approach to doing iterative, incremental software development. It uses a combination of technical and social practices to increase collaboration and reduce feedback cycles" -- Steve Hayes, http://pliantalliance.org/?p=31 |
| "The essence of Agile evolution is to gradually transform a typically conservative, risky and unattractive activity into a positive and proactive development activity." --Dave Thomas, Agile Evolution, http://www.jot.fm/issues/issue_2006_09/column2 |
| See table of "Key Characteristics of Agile" at (Towards an Agile Systems Engineering process) |
| See Agile Axioms and Seven Core Practices of Agile Development |
| DSDM in a Nutshell |
| Getting Real |
| My Nutshell definitions of Agile Development |
| Why Agility Works |
| Scrum Primer |
| Agile EVM |
| Allan Shalloway's Agile Explained |
| Dean Leffingwell with Ryan Martens, Scaling Software Agility, Ch 7 on The Essence of Agile |
| Not so Agile aspects of Agile Development |
| The Agile-Oriented Paradigm |
| More take-offs on Covey's Seven habits are ... Five Habits of Highly Visionary Companies Six Habits of Highly Effective CIOs Seven Habits of Highly Effective Programmers Seven Habits of Highly Effective User Interface Designers Seven Habits of Highly Effective IT Managers The Seven Habits of Effective Iterative Development |
| From SurgeWorks (http://www.surgeworks.com/our-methodology) ... In a nutshell, Agile Methodologies are focused on delivering maximum business value in minimal time. There are several different Agile approaches, but all of them focus on a similar set of core practices. They are:
|
Saturday, April 07, 2007
Defining Design Quality
Nice article on Defining Design Quality at InfoQ.com. The article heavily references the work of James Shore, who is currently working on a book with chromatic entitled "The Art of Agility". It has a pretty nice definition of design quality:
This also ties in quite nicely with Agile ideas about "Simple Design" and some earlier blog-postings of mine about Simplicity in Design (and ChangeThis for Simplicity).
"A good software design minimizes the time required to create, modify, and maintain the software while achieving run-time performance."It also references a few other nice articles:
- An Artima interview with Erich Gamma which notes that "Modification and maintenance time are more important than creation time."
- An article by Alistair Cockburn on programming as theory building
This also ties in quite nicely with Agile ideas about "Simple Design" and some earlier blog-postings of mine about Simplicity in Design (and ChangeThis for Simplicity).
Sunday, April 01, 2007
Best Kept Secrets of Code Reviews
The folks over at SmartBear software have written a nice little book entitled The Best Kept Secrets of Code Reviews. It's free if you go over to their webpage and ask for it (you have to fill out a registration form, and it takes a few weeks to arrive, but they havent spammed me at all since I registered with them a few months ago).
This is a pretty good book and it is VERY pragmatic! It is applicable to Agile development too! [You don't have to do Pair-Programming to be Agile! Pairing is part of XP, which is one particular agile method -- several other agile methods do not require it.]
SmartBear also has a pretty neat suite of tools that look to me like they would be REALLY USEFUL for an organization trying to streamline some of its otherwise heavyweight processes for peer-reviews and related quality metrics:
And "No!" they did not ask me to blog or say anything nice about them or their products! I'm simply coming from the perspective of someone in a large organization who has witnessed a lot of homegrown and heavyweight processes and tools for these kinds of things, and don't see too many commercial tools addressing the peer-review aspect of development and trying to make it lighter-weight and better-integrated with version-control and the rest of SCM.
The have some other nice resources too:
Looks like a lot of "good stuff" to me!!!
This is a pretty good book and it is VERY pragmatic! It is applicable to Agile development too! [You don't have to do Pair-Programming to be Agile! Pairing is part of XP, which is one particular agile method -- several other agile methods do not require it.]
SmartBear also has a pretty neat suite of tools that look to me like they would be REALLY USEFUL for an organization trying to streamline some of its otherwise heavyweight processes for peer-reviews and related quality metrics:
- CodeCollaborator - Automation for paperless peer code-reviews
- CodeReports - Continuous source code metrics over time.
- CodePickle - Suspend & resume code changes in local developer sandboxes (implements the PrivateVersions pattern without using version-control branches)
- CodeReviewer - automated peer-to-peer code reviews across remote sites
- CodeHistorian - Data-mining and visualizations for version control systems.
And "No!" they did not ask me to blog or say anything nice about them or their products! I'm simply coming from the perspective of someone in a large organization who has witnessed a lot of homegrown and heavyweight processes and tools for these kinds of things, and don't see too many commercial tools addressing the peer-review aspect of development and trying to make it lighter-weight and better-integrated with version-control and the rest of SCM.
The have some other nice resources too:
- Agile Peer Review: Methods, and Results (Powerpoint Presentation)
- The Case for Peer Code Review
- Brand New Information about Code Reviews
- 11 Best Practices for peer code review
- 2500 Reviews at Cisco® - The Largest Case Study of Code Review, Ever
- Why formal inspections fail
- Team-Building for the Cold, Dark, and Alone
- Compare 5 styles of review
- Pros & Cons of Four Types of Review
- Social effects of peer code review
Looks like a lot of "good stuff" to me!!!
Sunday, March 25, 2007
Agile in March RationalEdge & April CrossTalk
The March issue of The Rational Edge and the April issue of Crosstalk are both devoted to the the theme of Agile Software Development this month!
Wednesday, March 21, 2007
Lean-based Metrics for Agile CM Environments
My paper in this month's issue of The CM Journal is about Lean-based Metrics for Agile CM Environments.
This month we take an "Agile" slant on metrics for CM, including the CM process itself. Agility is supposed to be people-centric and value-driven. So any metrics related to agility should, at least in theory, provide some indication of the performance & effectiveness of the value-delivery system, and how well it supports the people collaborating to produce that value. We borrow heavily from the concepts of Lean Production (and a little from the Theory of Constraints, a.k.a. TOC). Let's see where it takes us ....
Labels:
Agile,
Change-Tracking,
CM,
Lean,
Version-Control
Saturday, March 17, 2007
Elements of Agile Style
Joe Little has authored a nice little booklet on The Elements of Agile Style
Wednesday, March 14, 2007
Top-down Agile Adoption in March Agile Journal
The March issue of the Agile Journal is about scaling-agility and agile adoption in the enterprise.
Sunday, March 11, 2007
Scaling Agility - new book & blog
Dean Leffingwell, previously known for his book Managing Software Requirements: a Use-case driven approach has just published a new book entitled Scaling Software Agility: Best-Practices for Large Enterprises. He also has a corresponding Scaling Software Agility blog. See the forthcoming reviews on amazon.com.
So how did Dean go from being a requirements-management guru to being a large-scale agile guru? It's not too big of a leap if you think about it! Dean is at Rally Software Development these days (the noted Agile consulting services & tool vendor) and has also authored a few Agile Whitepapers, an essay on The Essence of Agile (now an excerpt from the book), and a few articles for The Agile Journal, most notably Agile at Scale: 7+7 Practices for Enterprise Agility.
So how did Dean go from being a requirements-management guru to being a large-scale agile guru? It's not too big of a leap if you think about it! Dean is at Rally Software Development these days (the noted Agile consulting services & tool vendor) and has also authored a few Agile Whitepapers, an essay on The Essence of Agile (now an excerpt from the book), and a few articles for The Agile Journal, most notably Agile at Scale: 7+7 Practices for Enterprise Agility.
Wednesday, March 07, 2007
SEI Reflections on Agility: Challenges, Dillemas, & the Way Ahead
Interesting paper from Linda Levine and the SEI about Reflections on Software Agility and Agile Methods: Challenges, Dillemmas & the Way Ahead (see the corresponding presentation slides)
Some other related documents from the SEI are:
See! Not everything from the SEI is about CMM or CMMI ;-) They also a have a wealth of resources on Software Architecture and Software Product-Lines and other areas of Software Engineering!
Some other related documents from the SEI are:
- Systems of Systems: Scaling Up the Development Process; by Watts Humphrey. SEI Technical Report CMU/SEI-2006-TR-017
- Documenting Software Architectures in an Agile World; by Paul Clements, James Ivers, Reed Little, Robert Nord, Judith Stafford. SEI Technical Note CMU/SEI-2003-TN-023
- Integrating Software-Architecture-Centric Methods into Extreme Programming (XP); by R. Nord, J. Tomayko and R. Wojcik. SEI Technical Note CMU/SEI-2004-TN-036, ADA431084
- Using Earned Value Management (EVM) in Spiral Development; by Lisa Brownsword, Jim Smith. SEI Technical Note CMU/SEI-2005-TN-016
See! Not everything from the SEI is about CMM or CMMI ;-) They also a have a wealth of resources on Software Architecture and Software Product-Lines and other areas of Software Engineering!
Sunday, March 04, 2007
Practical Guide to Seven Agile Methodologies
In October of last year over at DevX.com, Rod Coffin and Derek Lane wrote a darn good article (in two parts) that gives a nice, concise overview of seven agile methodologies:
- An Overview of Seven Agile Methodologies -- PART 1
- An Overview of Seven Agile Methodologies -- PART 2
Sunday, February 25, 2007
ChangeThis for Simplicity
There are a lot of REALLY GOOD manifestos over at ChangeThis.com! Back in May 2006 I blogged about Simplicity in Design and included several links/resources on the subject. Turns out ChangeThis.com has a few good manifestos on the subject as well (and gets more every month). Here are the ones I liked most:
- Elegant Solutions: Breakthrough Thinking the Toyota Way, by Mathew May -- This is a distillation of Mathew May's book The Elegant Solution: Toyota's Formula for Mastering Innovation (also see the Elegant Solutions blog)
- The Simplicity Cycle, by Dan Ward -- "In the Simplicity Cycle, goodness is a general term that means slightly different things depending on a variety of contexts." In technology, goodness represents operational functionality or utility; for an academic discipline, it represents increased understanding; and for system design it reflects design maturity. If the context is art, maybe goodness means beauty" ... increased complexity does not inherently equal increased goodness, learn more by reading this manifesto.
- The Six Laws of the New Software, by Dror Eyal -- The Six Laws are: Single Idea, Collaborate, Disappear, Simplify, Release, Comply.
- Six Design Lessons from the Apple Store, by Jesse James Garret -- The Six Lessons are: Create an Experience, Not an Artifact; Honor Context; Prioritize your Messages; Institute Consistency; Design for Change; Don't Forget the Human Element!
- Software that Lasts 200 Years, by Daniel Bricklin
- Manifesto to Accelerate: 15 Truths, by Dan Coughlin [added April 5]
- The State of Competitive Advantage, by Mitchell Gooze
- A Manifesto for Mavericks: Why the Most Original Business Minds Win, by William Taylor and Polly LaBarre
- Going for the Go Point: The moment when a decision becomes action, by Michael Useem
- Thinking Through Problem Solving, by Valarie A. Washington
- The Bio-Teaming Manifesto: What teams can learn from Mother Nature
- How to Manage Smart People and Why Smart People Defend Bad Idea, both by Scott Berkun
- Managing with Aloha: Using Hawaiian values to change your business, and your relationships with employees and customers, by Rosa Say
- The Paradox of Choice: Why More is Less, by Barry Schwartz
- LESS: What Customers Want, by Bruce Kasanoff
- The Answer is Biodiesel, by Michael Briggs (Trade-in your Prius and buy a VW! What's better than hybrids and fuel-cells? The answer is biodiesel)
- Beyond Therapy: Biotechnology and the Pursuit of Happiness, by The President's Council on Bioethics
- A Physics of Ideas, by Nova Spivack
- Slacker @ Work, by Brendan Connelly
- Make Art, Not War, by Mary Anne Davis
- The CEO of the 21st Century, by Mark Goulston
- How to be Creative, by Hugh Macleod
- George Lakoff Manifesto, by George Lakoff
- How To Get Better Teachers -- and Treat Them Right!, by Chester E. Finn, Jr.
Sunday, February 18, 2007
BOOK on ERP for IT
Charles Betz' book Architecture and Patterns for IT Service Management, Resource Planning, and Governance: Making Shoes for the Cobbler's Children really ought to be required reading for anyone that fancies themselves a "CM professional" (especially Software CM) or an "Enterprise Architect."
I've been following his erp4it blog for over a year now (and his corresponding erp4it YahooGroup). Those looking for a taste of what the book is like can look there, and also at the paper ERP for IT which I understand was an early precursor for the book that has since been vastly updated and expanded in the latter.
Even though the subject of the book and the blog doesnt explicitly scream "CM", the content in the book and the blog are filled with often fundamental and profound insights about CM from the enterprise view (not just IT/ITIL) and where software CM, infrastructure CM, and network/element CM all fit in to the bigger enterprise picture. Several of his post that are among my favorites made their way into the book in some form or another:
And if that weren't enough, the book also puts together three of my favorite topics: CM, patterns, and architecture.
I've been following his erp4it blog for over a year now (and his corresponding erp4it YahooGroup). Those looking for a taste of what the book is like can look there, and also at the paper ERP for IT which I understand was an early precursor for the book that has since been vastly updated and expanded in the latter.
Even though the subject of the book and the blog doesnt explicitly scream "CM", the content in the book and the blog are filled with often fundamental and profound insights about CM from the enterprise view (not just IT/ITIL) and where software CM, infrastructure CM, and network/element CM all fit in to the bigger enterprise picture. Several of his post that are among my favorites made their way into the book in some form or another:
- A Data Architecture for IT Service Management -- you'd never know it from the title, but this is practically a primer on what is a configuration and what is a configuration item (and much more)
- A Configuration Management Maturity Model
- Element versus Enterprise CM
- Two key distinctions to help scope your CMDB -- about the difference between Configuration Items and Events (quick - what's the difference between a "release" and a "baseline"?)
- Is CM a process?
- DBMS Configuration Management -- and the difference between Software CM, Element CM and Enterprise CM
- Model-Driven CM
- A Value-chain approach to IT
- A simplified ERP for IT architecture -- the CM system figures prominently in this one
- IT portfolios, service catalogs, and enterprise architecture -- change management (at all levels of scale - including governance) links them all together across the value-chain
- Fundamentals of integration metadata
- A story of too many tools
- A metadata rant
- CMDB Chaos and Confusion: Making Sense of the Madness
And if that weren't enough, the book also puts together three of my favorite topics: CM, patterns, and architecture.
Sunday, February 11, 2007
Recursive Make Reconsidered
In an earlier blog-entry reviewing the book Code Craft, I mentioned the classic paper by Peter Miller entitled "Recursive Make Considered Harmful" ...
Anyway, I recently ran across a bunch of webpages that examined or revisited the issue. I thought several of them were worth sharing, so here they are:
Anyway, I recently ran across a bunch of webpages that examined or revisited the issue. I thought several of them were worth sharing, so here they are:
- Recursive versus Non-recursive Makefile architectures benchmark
- Recursive Make isn't all that bad
- "Recursive Make Considered Harmful" Revisited
- Recursive Make Reloaded
- Implementing non-recursive make
- Non-recursive make for Linux kernel
- Non-recursive Automake
- Makepp manual pages on recursive make in legacy makefiles and problems associated with recursive makes
Monday, February 05, 2007
Five Things About Me
I've been "tagged" amidst the recent spree of fellow bloggers who are being "asked" to disclose five personal tidbits about themselves that most people don't know. I won't disclose who tagged me, and I won't be tagging anyone else, but I will comply with the request just for the heck of it ...
1. I don’t drink beer or wine – I hate the taste!
3. I lived in Taiwan during 1966-1967, and in Hawaii during 1969!
4. I used to be a dancer, and had 20+ years of classical training!
So there it is; I've done the deed!
1. I don’t drink beer or wine – I hate the taste!
- When it comes to alcoholic beverages, the only ones I like are those sweet mixed drinks where you can barely taste any alcohol (you know, the ones that are for "sissies").
- Or so I'm told ... I don’t remember any of it, but as it was told to me, my folks were flying the family to China, and the airline lost our luggage. As consolation, the airline put us up in a hotel and threw a party for us (and several others in a similar situation). Apparently someone spiked the fruit-punch and I never knew what hit me. My sister says I was walking late at night on the shoreline of Taepei, swaggering, swaying, and hiccuping every couple minutes. Eventually my father picked me up and carried me with my head resting over his shoulder, still hiccupping with a giddy grin on my face, pointing at everything I saw and giggling my head off like only a toddler can. (Hmmn – could this explain #1? :)
3. I lived in Taiwan during 1966-1967, and in Hawaii during 1969!
- My Dad was a political science professor, and was at the time one of the foremost experts in his field on US-China relations. He would travel to China or Taiwan every now and again for extended periods of time (weeks or longer). One time he took all of us with him and we lived there for a year. In 1969 he had an exchange program with another professor from University of Hawaii on Oahu. Our house was at the top of a very big hill (or a very small mountain :). I went to pre-school at Noalani elementary school in the Manoa valley.
4. I used to be a dancer, and had 20+ years of classical training!
- My mom was a dance teacher, and got me started when I was 4 (along with my older siblings). When I got older I decided to stick with it and got to be quite good at it. All in all I had about 20+ years of classical ballet training, along with modern/contemporary, jazz, and a bit of tap and African. I was in a local dance company during my college years and for a short while after. I was good too! I kept up with it until my mid-30s when I was eventually diagnosed with degenerative disc disease. Sometimes guys would try and give me a hard time about my dance background (that's right about the time I would "let it slip" that I also held black-belts in two different martial arts :-)
- It's noticeable but mild in my case - not like the more pronounced cases you typically see and hear about on TV shows like Oprah or 20/20.
So there it is; I've done the deed!
Subscribe to:
Posts (Atom)
