Disciplined Agile
by Tatsiana Balshakova,
Mark Lines, Mike Griffiths, James Trott, Bjorn Gustafsson, Curtis Hibbs, Scott Ambler
This blog contains details about various aspects of PMI's Disciplined Agile (DA) tool kit, including new and upcoming topics.
View Posts By:
Tatsiana Balshakova
Mark Lines
Mike Griffiths
James Trott
Bjorn Gustafsson
Curtis Hibbs
Scott Ambler
Past Contributors:
Joshua Barnes
Michael Richardson
Daniel Gagnon
Valentin Tudor Mocanu
Kashmir Birk
Glen Little
Klaus Boedker
Recent Posts
DA 5.6 is released
Disciplined Agile 5.5 Released
Choose Your WoW! Second Edition Is Now Available
Requisite Agility applied in Project Management
Disciplined Agile and PMBoK Guide 7th Edition
Categories
#ChoiceIsGood,
#ChooseYourWoW,
#ConsumableSolution,
#ContinuousImprovement,
#CoreAgilePractices,
#experiment,
#Experimentation,
#GuidedContinuousImprovement,
#Kaizen,
#LifeCycles,
#ProcessImprovement,
#TealOrganizations,
Adoption,
agile,
agile adoption,
Agile Alliance,
Agile Business Analyst,
Agile certification,
agile data,
agile governance,
agile lifecycle,
agile metrics,
agile principles,
agile transformation,
Agile2018,
Agile2019,
Agile20Reflect,
AgileData,
Analogy,
announcement,
Architecture,
architecture,
architecture owner,
Articles and publications,
Asset Management,
Atari,
Backlog,
Barclays,
being agile,
benefits,
bi,
blades,
book,
Branching strategies,
Browser,
Business Agility,
business intelligence,
business operations,
capex,
Case Study,
Certification,
certification,
charity,
Choose your WoW,
CMMI,
cmmi,
Coaching,
Collaboration,
Communications Management,
Compliance,
Compliancy,
Conference,
Construction,
Construction phase,
Context,
Continuous Improvement,
coordination,
COVID-19,
Culture,
culture,
Cutter,
DA,
DAD,
DAD Book,
DAD discussions,
DAD press,
DAD roles,
DAD supporters,
DAD webcast,
DADay2019,
Data Management,
database,
dependencies,
Deployment,
Development Strategies,
DevOps,
disaster,
Discipline,
discipline,
Disciplined Agile,
disciplined agile delivery,
disciplined agile delivery blog,
Disciplined Agile Enterprise,
disciplined devops,
Documentation,
Domain complexity,
dw,
DW/BI,
Energy Healing,
Enterprise Agile,
Enterprise Architecture,
Enterprise Awareness,
enterprise awareness,
Essence,
estimation,
Evolving DA,
Executive,
Experiment,
facilitation,
FailureBow,
feedback-cycle,
finance,
Financial,
FLEX,
Flow,
foundation layer,
Funding,
GCI,
GDD,
Geographic Distribution,
gladwell,
global development,
Goal-Driven,
goal-driven,
goals,
Governance,
GQM,
Guideline,
Hybrid,
Improvement,
inception,
Inception phase,
India,
information technology,
infosec,
Introduction,
iterations,
Kanban,
large teams,
layer,
lean,
Lean Startup,
learning,
Legal Project Management,
LeSS,
Lifecycle,
lifecycle,
Manifesto,
mark lines,
marketing,
MBI,
Metaphor,
Metrics,
metrics,
mindset,
Miscellaneous,
MVP,
News,
News and events,
Non-Functional Requirements,
non-functional requirements,
Non-solo development,
offshoring,
Operations,
opex,
Organization,
Outsourcing,
outsourcing,
paired programming,
pairing,
paper,
People,
People Management,
phases,
Philosophies,
Planning,
PMBoK,
PMI,
PMI and DA,
PMI Chapter,
Portfolio Management,
post-format-quote,
Practices,
practices,
Principle,
Process,
process improvement,
process tailoring,
Product Management,
product owner,
Product Owners,
productivity,
Program Management,
Project Management,
project-initiation,
Promise,
Quality,
quality,
rational unified process,
Refactoring,
Reiki,
Release Management,
release management,
Remote Training,
Remote Work,
repeatability,
requirements,
Requirements Management,
research&development,
responsibilities,
retrospectives,
Reuse,
Reuse Engineering,
ride for heart,
rights,
Risk Management,
Risk Management,
Risk management,
Roles,
RUP,
SAFe,
sales,
Scaling,
scaling,
scaling agile,
Scheduled Workshops,
SCM,
scorecard,
Scrum,
ScrumMaster,
SDLC,
Security,
security,
self-organization,
SEMAT,
serial,
skill,
solutions software consumable shippable,
Stakeholder Management,
strategy,
Support,
Surveys,
Teal organizations,
team development,
Team Lead,
team lead,
Teams,
Technical Debt,
Teleconferencing,
Terminology,
terraforming,
test strategy,
testing,
time tracking,
Tool kit,
Toolkit,
tools,
traditional,
Transformation,
Transition iteration,
transition phase,
Uncategorized,
Upmentors,
Using PMI Standards,
value stream,
velocity,
vendor management,
Virtual Training,
Workflow,
workflow,
workspaces
Date
Viewing Posts by Scott Ambler
| This posting, the latest in a series focused on a disciplined agile approach to reuse engineering, overviews the activities associated with it. The Disciplined Agile (DA) toolkit promotes an adaptive, context-sensitive strategy. The framework does this via its goal-driven approach that indicates the process factors you need to consider, a range of techniques or strategies for you to address each process factor, and the advantages and disadvantages of each technique. In this blog we present the goal diagram for the Reuse Engineering process blade and overview its process factors.
The following process goal diagram overviews the potential activities associated with disciplined agile reuse engineering.
.jpg)
The process factors that you need to consider for reuse engineering are:
- Obtain assets. There are several ways that you can obtain potentially reusable assets. The least effective is to try to build them to be reusable from the very beginning but this strategy often proves problematic in practice because it’s hard to predict what other teams will actually want and as a result you tend to overbuild the asset. A better approach is to obtain an asset from external sources, either free (as in the case of open source assets) or through purchase. In this case the assets are often both under and over built – some features you want are missing and many that you do not want are there. The most effective strategy, in general, is to harvest an existing asset that is already in use within your organization and to generalize it so that others will want to reuse it.
- Publish assets. An asset won’t be reused if people don’t know that it exists. When a new reusable asset is made available it must put into your organizational reuse repository, described appropriately, and announced to any interested parties.
- Support delivery teams. There are many ways for a reuse engineering team, if it exists, to support IT delivery teams. Training, educating, coaching, and mentoring team members in reuse are fairly straightforward to understand. Some of the more interesting strategies include working with a delivery team to configure and even integrate an asset into their work. Reuse engineers, often working with a team’s architecture owner, will identify potentially reusable assets that can be harvested and generalized for reuse.
- Evolve assets. Reusable assets, like all other assets, will need to be evolved over time. This includes any work required to generalize the asset to make it reusable, configuration management of the asset’s constituent parts, to update an existing asset to support its evolving purpose, to tailor an asset so that it can be reused in a new situation, and to eventually retire the asset when it is no longer needed.
- Fund reuse. There are several ways to fund your reuse engineering efforts. The least effective, and often debilitating, strategy is to put a chargeback strategy in place. The basic idea is that if someone reuses an asset then they should pay for it (some organizations will even charge a team for downloading something from their reuse repository, regardless of whether they use it or not). The problem with this approach is that it in effect punishes teams for reusing things, thereby motivating them to build things from scratch in the future. In some organizations it proves better to not fund the reuse effort at all, which typically results in ad-hoc reuse at best, than it is to put a chargeback scheme in place. The most effective approach that we’ve seen is to directly fund the reuse team, thereby taking cost considerations out of the equation when people choose to reuse an asset.
- Govern reuse. The reuse engineering effort, as with all other efforts, should be governed in a lightweight, collaborative manner.
Related Postings
|
Posted
by
Scott Ambler
on: July 29, 2015 01:15 PM
|
Permalink |
Comments (0)
| An important philosophy for succeeding at reuse engineering in the information technology (IT) space is to understand that you have more than one option at your disposal. You can reuse source code, components, development artifacts, patterns, and templates. The following diagram summarizes the types, or categories, of reuse available to you. The left-hand arrow indicates the relative effectiveness of each category – pattern reuse is generally more productive than artifact and framework reuse for example. Similarly, the right hand arrow indicates the relative difficulty of succeeding at each type of reuse. Code and template reuse are relatively easy to achieve because you simply need to find the asset and work with it. Other forms of reuse become hard to achieve; with framework reuse you need to learn the toolkits, with pattern reuse you must learn when to (and when not to) apply various patterns, and with architected reuse you need an effective approach to enterprise architecture in place.

The reuse categories are:
- Architected Reuse. The identification, development, and support of large-scale, reusable assets via enterprise architecture. Your enterprise architecture may define reusable domain components, collections of related domain/business classes that work together to support a cohesive set of responsibilities, or service domains which bundle a cohesive collection of services together.
- Pattern Reuse. The use of documented approaches to solving common problems within a specified context. With pattern reuse you’re not reusing code, instead you are reusing the thinking that goes behind the code. Patterns can be a multiple levels – analysis, design, and architecture are the most common. Ward Cunningham’s site is a useful source of patterns on the web.
- Framework Reuse. The use of collections of classes that together implement the basic functionality of a common technical or business domain. Horizontal frameworks, such as a security framework or user interface frameworks such as the Kendo or QuickUI. Vertical frameworks, such as a financial services framework, are common in some domains.
- Artifact Reuse. The use of previously created development artifacts – use cases, standards documents, domain-specific models, procedures and guidelines, and even other applications such as a commercial off the shelf (COTS) package – to give you a kick start on a new project. Sometimes you take the artifact as is and other times you simply use it as an example to give you an idea about how to proceed.
- Component Reuse. The use of pre-built, fully encapsulated “components” in the development of your solution. In this case a component is self sufficient and encapsulates only one concept. Component reuse differs from code reuse in that developers don’t have access to the source code.
- Template Reuse. This is the practice of using a common set of layouts for development artifacts such as vision documents, training slide decks, or system overview wiki pages within your organization.
- Code Reuse. The reuse of source code within sections of an application and potentially across multiple applications. At its best code reuse is accomplished through the sharing of common classes and/or collections of functions and procedures. At its worst code reuse is accomplished by copying, pasting, and then modifying existing code which adds to your organization’s technical debt and can potentially result in negative overall value.
You can address these reuse categories simultaneously. Framework reuse often locks you into the architecture of that framework, as well as the standards and guidelines used by the toolkit, but you can still take advantages of the other approaches to reuse in combination with framework reuse. Artifact and component reuse are the easiest places to start, with a little bit of research you can find reusable items quickly. However, if your organization doesn’t have a common development process that it follows you may get little benefit from templates. Pattern reuse is typically the domain of developers with good modeling skills and your enterprise architects should be publishing and providing pattern-oriented guidance to them.
It is important to note that although the diagram indicates that pattern reuse is generally more effective than artifact reuse you may discover that within your organization the opposite holds true. This may occur because you have a comprehensive collection of reusable artifacts in place, because your organization culture is conducive to artifact reuse, or simply because your developers have little experience with patterns.
|
Posted
by
Scott Ambler
on: July 28, 2015 02:59 PM
|
Permalink |
Comments (0)
| 
Let’s start with some definitions:
- Asset. An artifact that is retained after its initial purpose is fulfilled. For example, working source code is an asset because it is retained and potentially updated in the future to address new stakeholder needs. A user story that is discarded once the functionality it describes is implemented is not considered an asset.
- Robust asset. An asset that is appropriately documented, generalized beyond the needs of a single team, thoroughly tested, is of high quality, and ideally has several examples to show how to work with it. Robust assets are much more likely to be reused than items without these characteristics.
- Reusable asset. A robust asset that has been used at least three separate times by at least three separate teams. You can claim that something is reusable, but it isn’t truly reusable until it’s actually been reused; reusability is in the eye of the reuser, not in the eye of the creator.
- Ad-hoc reuse. An informal approach to reuse where individuals or teams reuse whatever they can find on their own. Ad-hoc reuse is often a good start.
- Engineered reuse. A formalized approach to reuse where an organization actively supports a reuse engineering strategy.
- Reuse engineering. The purposeful creation (or rescue), management, support, and governance of reusable assets.
Why Do We Need Reuse Engineering?
The vast majority of developers, agile or otherwise, take an ad-hoc approach to reuse. Although this is a good start, we have the opportunity to do much better. There are several reasons why your organization should consider investing in explicit reuse engineering:
- Quicker time to market. The more reusable assets that a team has at its disposal then the less the team will have to build, thereby enabling them to release quicker.
- Improved return on investment (ROI). Reuse engineering enables IT delivery teams to avoid building something that your organization already has. This leads to greater ROI for your IT investment which in turn leads to greater value being delivered to your stakeholders.
- Improved consistency. When all of your systems use the same implementation of a service, or component, or function, or framework then that functionality by definition is implemented consistently across those systems. This makes them more predictable and easier to understand.
- Easier updates to common functionality. When functionality is implemented in one place and then reused where needed it is very easy to update that functionality and then deploy the updated version.
Why Reuse Engineering is Difficult
Unfortunately reuse is a lot easier to talk about than it is to implement in practice, at least beyond the ad-hoc level. There are several reasons why reuse engineering is difficult to achieve:
- There is a greater impact when reusable assets break. When an asset is used in only one place and it breaks, then the impact of that breakage is limited to that one place. When an asset is reused in dozens or hundreds of places, and it breaks, then the impact is significantly larger. This is reusable assets need to be of high quality.
- Teams must go beyond the reuse of source code. Reuse is often described as not “reinventing the wheel,” and an important step for succeeding at reuse is to understand that you have more than one option at your disposal. For example, in addition to source code you can reuse components, services, patterns, and templates to name a few. More on this in a future post.
- Reuse requires enterprise awareness on IT delivery teams. For reuse to succeed IT delivery teams must understand that reusable assets exist, how these assets fit into your overall IT ecosystem, and what the benefits of reusing them are for your organization. In Disciplined Agile we promote the philosophy that IT delivery teams should work closely with enterprise architects and reuse engineers, if any exist, so that they will better understand and appreciate these issues.
- Reuse requires investment. To get beyond ad-hoc reuse your organization will need to invest in a reuse program. This may include investment in a reuse engineering team, in a reuse repository, in the development/rescue of potentially reusable assets, and the long-term maintenance and support of those assets. More on these topics in future postings.
- Your approach to funding will make or break reuse. Many organizations will institute chargeback schemes to pay for reuse. The basic strategy is that just like you would pay for commercial software, you should pay for internally developed or purchased assets within your organization. That way the cost of those assets is shared fairly across the teams that are actually reusing them. Unfortunately, in practice, chargeback schemes are guaranteed to kill your reuse engineering efforts because you are in effect punishing teams when they reuse things. A better strategy is to purposefully fund your reuse engineering efforts and then track, often via automated metrics, the impact those efforts have on your organization (so as to justify the investment).
In future blog postings we will explore a goal-driven approach to reuse engineering as well as the workflows associated with reuse engineering. It is possible, and highly desirable, for organizations to succeed at reuse engineering. The Disciplined Agile Reuse Engineering process blade provides the guidance you need to do so.
|
Posted
by
Scott Ambler
on: July 28, 2015 01:29 PM
|
Permalink |
Comments (0)
| In this blog posting, the latest in our ongoing disciplined agile release management series, we overview the external workflows that release management is likely to be involved with.
Workflow With Other IT Teams
The following diagram overviews the major workflows that people performing the Release Management activity will have with others. One interesting aspect of this diagram is that it shows that many IT delivery teams, which may be following different lifecycles or even tailored versions of one of the disciplined agile lifecycles, potentially feed production ready releases into the release management process. In some organizations you may have a separate release management team doing this work. Other organizations, particularly those that are well on the way to adopting a disciplined DevOps strategy, will often choose to have the delivery teams themselves do the release management work via a “you build it, you release it, you run it” mindset. For now our focus is on the activities surrounding release management, not on the potential organizational structures to support it.
.jpg)
The following table summarizes the workflows depicted in the diagram.
| Process Blade |
Process Blade Overview |
Workflow with Release Management |
| Continuous Improvement |
Addresses how to support process and organizational structure improvement across teams in a lightweight, collaborative manner; how to support improvement experiments within teams; and how to govern process improvement with your IT department. |
Your continuous improvement efforts should result in improvement suggestions gleaned from other teams that whoever is doing release management can learn from. |
| Enterprise architecture |
Addresses strategies for collaborative and evolutionary exploration, potential modelling, and support of an organization’s architectural ecosystem in a context-sensitive manner. |
The enterprise architects will produce a technology roadmap that will reflect the current operational environment as well as the expected direction that it will head in. This information will be used as input into decisions regarding any technology strategies to support release management activities. Release intelligence, measures surrounding your release management activities (such the number of releases put into production, the time/cost of each release, results from deployment testing, and so on) are made available to enterprise architects to be used as input into their decision making processes. |
| IT Delivery |
Addresses how to develop solutions in a disciplined agile manner. This includes the four lifecycles – basis/agile, advanced/lean, continuous delivery, and exploratory – supported but DAD plus the program management blade (effectively a large team following one or more of the lifecycles). |
Your release management strategy will need to be able to support the range of development/delivery teams within your organization. Because each team is potentially working in their own, unique manner, it implies that release management professionals (if any) will need to be sufficiently flexible to work with these teams in manners that reflect their chosen strategies. |
| IT Governance |
Addresses strategies for consolidating various governance views, defining metrics, taking measurements, monitoring and reporting on measurements, developing and capturing guidance, defining roles and responsibilities, sharing knowledge within your organization, managing IT risk, and coordinating the various governance efforts (including EA governance). |
The IT governance team will provide guidance to all IT teams, including anyone performing release management activities. Release intelligence will be provided to the IT governance team so as to provide insight into the effectiveness of the release management effort. |
| Operations |
Addresses how to run systems, evolve the IT infrastructure, manage change within the operational ecosystem, mitigate disasters, and govern IT operations. |
Your operations group will provide operations intelligence (a range of measures, including current system statuses) that will be used to guide release management decisions. For example, if a platform is currently down (perhaps it is being upgraded), then you would likely be blocked from deploying into that environment until it is available. The release management activities will produce release intelligence measures that operations staff will use in their decision making around the consumability of aspects of the operational infrastructure. For example, they may be interested in knowing the level of effort required to deploy into various platforms. |
| Portfolio Management |
Addresses how to identify potential business value that could be supported by IT endeavors, explore those potential endeavors to understand them in greater detail, prioritize those potential endeavours, initiate the endeavours, manage vendors, and govern the IT portfolio. |
Your organization’s portfolio management monitoring activities will take advantage of any release intelligence made available to it. |
|
Posted
by
Scott Ambler
on: July 26, 2015 07:34 AM
|
Permalink |
Comments (0)
| This posting, the latest in a series focused on a disciplined agile approach to release management, overviews the activities associated with release management. The Disciplined Agile (DA) toolkit promotes an adaptive, context-sensitive strategy. The framework does this via its goal-driven approach that indicates the process factors you need to consider, a range of techniques or strategies for you to address each process factor, and the advantages and disadvantages of each technique. In this blog we present the goal diagram for the Release Management process blade and overview its process factors.
The following process goal diagram overviews the potential activities associated with disciplined agile release management.
.jpg)
The process factors that you need to consider for release management are:
- Plan IT release schedule. Your organization’s overall release schedule needs to be planned and communicated. Many organizations have blackout periods where teams are not allowed to deploy into production (for example, many retail organizations will not allow non-critical production releases near the Christmas holidays). There are many strategies that organizations may choose to adopt when it comes to scheduling releases, including release trains, release streams, ad-hoc releases, and release windows.
- Schedule solution release. The release of an individual delivery team’s work needs to be scheduled so that it does not conflict with the releases of other teams who want to deploy into the same operational environment.
- Manage infrastructure configuration. The release management team will work closely with your operations team, in fact they are often members of your operations team, to perform configuration management of your operational environment. To safely deploy into production you must know what is currently in production and how those hardware and software elements depend on each other. The more complex your operational infrastructure, and the more IT delivery teams you have, the more important this process factor becomes.
- Determine production readiness. Part of the release process is to verify that the solution is ready to be deployed and that the stakeholders are ready to have it deployed to them. The bigger and more infrequent your releases, the more this becomes an issue.
- Support delivery teams. The release management team, when a separate one exists, will work closely with the IT delivery teams to help them deploy successfully. This help may take the form of coaching the team on deployment techniques, on planning, and even working with them to automate their deployments. The release management team will often help with deployment testing, the verification after the fact that a deployment was in fact successful.
- Govern releases. Your organization’s overall release efforts should be governed, ideally with the aim to streamline those efforts as much as possible. This governance will include the development of policies and guidelines pertaining to the release process as well as the identification and collection of pertinent metrics.
Release Management and DevOps
Release management is an important part of your Disciplined DevOps strategy. Having said that, many IT departments are still in their early days of adopting a DevOps approach yet still effective release management. The implication is that the way that you approach release management will vary depending on how far down the DevOps adoption path you are. For example, with no DevOps in place at all your release management activities are likely to be performed by a team that is completely separate from your IT delivery teams. When you are in the process of adopting a DevOps mindset release management is likely to be a collaborative effort between the IT delivery teams and the release management team. When you have fully adopted DevOps strategies release management is mostly performed by the delivery teams themselves.
Related Postings
|
Posted
by
Scott Ambler
on: July 18, 2015 07:40 AM
|
Permalink |
Comments (0)
|
"A fanatic is one who can't change his mind and won't change the subject."
- Winston Churchill
|