Viewing Posts by Scott Ambler
Agile Data Warehousing Q&A
|
On Tuesday, February 26th I ran a webcast entitled Disciplined Agile Data Warehousing/Business Intelligence. During the webcast we received several very good questions, some of which we had time for and some of which we didn’t get to. Regardless, we’ve decided to answer all of them here in this blog. In a few cases we’ve had to reword the questions to correct spelling or grammar mistakes and in a few cases we combined questions because they were effectively the same. We have organized the questions and answers into the following categories:
Start HereWhere can we download the slides?
Vertical Slices of DW/BI FunctionalityHow do we start with high-risk, vertical slices?Disciplined Agile teams take a risk-value approach to prioritizing their work, an extension to Scrum’s value-driven approach. The basic idea is that disciplined agile teams will implement the highest-risk requirements first so as to prove the architecture with working code early in the lifecycle. This strategy works quite well for DW/BI solutions, just like any other type of solution. To do so, you need to understand the risks that your team faces. For a DW/BI solution, these risks may include:
To address these risks, look for high-value requirements whose implementation would force your to address the risks. Implement those requirements first. How can we include all of the stages of DW/BI development into iterations/sprints e.g. Data modeling, staging, profiling, dd, DQ, ETL, reporting, testing into single iteration?This can be a struggle for any team new to agile, not just a DW/BI team. The challenge is that the majority of organizations have taken a Tayloristic approach to organizing the way that they work. They have specialists who each do a portion of the work, handing off their portion to the next person once they’ve completed it. It is virtually impossible for specialists to get all of the work done to develop a working, vertical slice of the solution within the timeframe of a two-week iteration, let alone one that is shorter. The overhead of specialists trying to work in a Tayloristic, “software factory” strategy is just too great. Unfortunately the culture within the data community tends to motivate over specialization and the overhead surrounding it. What agile teams need are generalizing specialists, T-skilled cross-functional people who work together collaboratively. Each person has one or more specialties, they need to be able to do something useful, but they also have a general knowledge of the rest of the process and are willing to pick up new skills from one another. When your team is made up of people like this the wait time between tasks (modelling, development, testing, …) starts to disappear as does all the bureaucracy (reviews, traceability matrices, …) around coordinating such activities. The fundamental challenge is that you likely don’t have generalizing specialists right now. As we like to say, you go to war with the army that you’ve got. You need to build a team of specialists right now because that’s the type of people you have. Insist that they produce a vertical slice of the solution during the current iteration. There will very likely be a lot of complaining about this at first, often because the team can’t imagine how they can pull this off. If possible, colocate them in an agile team room (sometimes called a tiger team room or war room) to get them working side-by-side. This will help to improve communication between the people involved and provide better ways to collaborate (such as agile modelling at a whiteboard). Push the idea that they should be doing non-solo work – such as pair programming, mob programming, or modelling with others – so as to share skills and get the work done quickly. They will need a strong agile coach to help them to learn these new strategies and to break themselves of their ineffective specialist habits. An important thing to observe is that many other teams have discovered how to work this way – you can too. Vertical slice is good but if only half of a report is created in a single iteration it may not be useful to the stakeholders. What should we do?The idea is to get something that works completely done each iteration. The stakeholders, often via the Product Owner (PO), will determine whether what you’ve built can be deployed into production. This is why we use the term “potentially consumable solution“, an improvement over Scrum’s “potentially shippable software” – it’s potentially consumable, but that doesn’t mean it has to be deployed only that the option to deploy is there. Having said this, if possible find a way to complete the entire report in a single iteration. Sometimes easier said than done. How to handle data coming from multiple source during data modeling within a single sprint when we are expected to develop a report in end?This is a very common occurrence. The solution is that you only model enough for that report at the time. Early in the lifecycle during Inception you will have done a bit of high-level modelling to explore the initial scope and to identify your technical strategy (your architecture). These high-level visions are fleshed out during Construction each iteration via Agile Modeling practices such as just-in-time (JIT) model storming, look-ahead modelling (backlog refinement in Scrum), and even iteration modelling (an aspect of iteration/sprint planning).
Architecture and DesignBut many of the companies are not using data vault? And may companies are reluctant in using this?The Data Vault 2 method is not required to be agile, but it is an approach that we highly suggest due to its practicality and flexibility. While using Data Vault how can we overcome challenges with teams supporting and creating data from various companies and geographies. Are there are control risks associated?Regardless of the architecture and design methodology that you follow, you will have risks associated with using data from multiple sources. Those risks tend to increase with multiple geographies or multiple companies involved. The greater the risk, the greater the importance of having a database regression test suite in place that validates your work. Refactoring DatabasesCan we take these database refactorings as technical debt user stories?Database refactorings are small changes to the design of your database schema (which includes functionality such as triggers or stored procedures) that improves the quality of the design without changing the semantics of the schema in a practical manner. Examples of database refactoring includes Rename Column, Introduce Cascading Delete, and Replace One-to-Many with Associative Table. A full catalog of database refactorings can be found here. Because database refactorings are small you should just do them as a matter of course as you work on the database, they generally aren’t large enough to justify their own work items (such as a technical debt story). I suggest that you read the Spilled Juice Analogy. However, if you wanted to fix a collection of refactorings up into a single technical debt story I suppose you could do this. Most often, data sources sit in the “business” area, that cares very little about how software are works or needs to work. Isn’t this attempt to clear data at the source something that will put strain on the organization?I suggest that you read the Spilled Juice Analogy. Does the business want to be able to make decisions based on information that they can trust? Does the business want to reduce their long-term IT costs? Does the business want IT to be able to bring solutions to market quicker? If the answer to any of these questions is yes then they need to start treating data like an asset and invest in concrete quality techniques such as database regression testing and database refactoring. Other Development PracticesCan we use database virtualization?Sure, why not? Automation – How that can be done in DW/BI project?You can:
How does the practice of spikes apply?A spike is a bit of code that is used to explore or prove a concept, typically written to pay down a technical risk. In a DW/BI solution that might be a bit of code to:
How do you make sure that documentation is updated and yet consumes less time which is accommodatable within the Agile iteration/sprint of 2 weeks? Without documentation the developers who come into the project at a later point of time are in no man’s land without updated documentation?See:
MiscellaneousHow can enterprise data governance fit into an agile DW/BI mindset?See:
What lifecycle would be most appropriate for projects implementing COTS software solutions (like ERP) within the company so investment would be maximized?It depends on the situation that you face, including the skills of the people involved. I would think that your best bet is the Agile/Basic lifecycle that is based on Scrum. Where Can We Learn More?At the DAC posters page you can download the Disciplined Agile DW/BI poster (amongst many others). We have a detailed article entitled Disciplined Agile Data Warehousing that you will find informative.
|
The practical realities of software estimation
Categories:
agile,
Scrum,
Portfolio Management,
Product Management,
Project Management,
Program Management
Categories: agile, Scrum, Portfolio Management, Product Management, Project Management, Program Management
| In IT we are often asked to estimate the expected time/schedule or cost of software development. Sadly, the desire of stakeholders to have “predictable” schedules or costs results in significant dysfunction within a software development team. When a software team is forced by their stakeholders to commit to a schedule/cost they must then ensure that the schedule/cost doesn’t slip. For example, to protect themselves from increased time and cost due to scope creep, software development teams will make it difficult for stakeholders to change their requirements during Construction and even go so far as to drop promised scope late in a project. The desire of stakeholders to reduce their financial risk often results in behaviors by the software development team that ensure that stakeholders don’t get what they actually want. Naturally IT gets blamed for this. We need to do better. In this blog we summarize the things that we know to be true about software development estimation. In no particular order, they are:
To summarize, when you are required to provide estimates for your software development efforts that you should take a pragmatic, light-weight approach to doing so. This blog posting has provided many practical insights that should help guide your decisions. These insights and many more, are built right into the Disciplined Agile (DA) toolkit. |
When should we create a document on an agile team?
| When transitioning to an agile mindset people invariably ask about how documentation is addressed on agile teams. Some documents, such as system overview documentation or operations manuals, are still a valuable part of the overall solution being delivered by the agile team. More often than not a document, such as a logical data model (LDM) or detailed requirements model, isn’t needed at all because it can be replaced with a more effective strategy or the document can be greatly simplified compared with what a traditional team would develop. This of course is a shock to most traditionalists, particularly for those who currently spend most of their time creating such documents. To help people understand the agile approach to documentation creation, we find that it’s valuable to describe the logic that disciplined agilists follow. This logic is captured in the following flow chart.
When an organization transforms to agile many traditional IT professionals will struggle at first with taking an agile approach to documentation. In traditional software development, and in particular traditional IT governance, documentation is used as a crutch and worse yet a band-aid over organizational dysfunction. We can no longer afford this and must instead be smarter about our approach to whether and how we write documentation. For more information about agile approaches to documentation, we suggest you read the article Agile/Lean Documentation: Strategies for Agile Software Development. |
The Race Car Metaphor
| Since 2001 agilists have been focused on finding ways to improve how software is developed. This article describes what we’ve come to call the Race Car Metaphor for process improvement. Agilists Know How to Build Great Race-Car Engines (Development Teams)We’ve adopted fundamental strategies such as regular coordination meetings, regular demos, product owners, developer regression testing, retrospectives, and incremental releases of working software. Disciplined teams have adopted more advanced strategies such as active stakeholder participation, continuous integration (CI), test-driven development, continuous documentation, continuous deployment, measured improvement, and incremental releases of consumable solutions (to name a few). We experiment with new techniques to learn what works for us in the situation that we face, improving our approach as we do so in an incremental kaizen-style manner over time. In effect we are finding ways to tune our “development engines” so that we can deliver more valuable functionality, to reduce our cycle time, and to be more productive as a team. This is very similar to a Formula One team who over the years improves their racing car engine to deliver more power and more speed for less fuel consumption so as to help them win the race. How to approach agile solution delivery in a streamlined manner is the focus of Disciplined Agile Delivery (DAD). But Then We Plunk Our Great Engines Into Our Organizational TractorWe see too many agile teams, who on their own are doing a great job at improving the way that they work, get bogged down by the organizational environment in which they work. This is particularly true in established enterprises that have been in operation for decades and sometimes even centuries. Your development team tries to work in an agile manner but they’re forced to conform to your PMO’s existing traditional governance strategy that requires creation of inappropriate artifacts following a lifecycle that is far from agile; they’re forced to work with a bureaucratic data management team who often takes weeks or months to do work that should be accomplished in minutes or hours; or they’re forced to work with a review-focused enterprise architecture team who hasn’t been actively involved with software development for years (to name but a few common challenges). This is akin to putting their racing car engine into an organizational tractor. Is it any wonder you’re not winning the race?
But We Really Need a Race Car (Disciplined DevOps)But agile software development alone isn’t sufficient. We see too many agile teams, who on their own are doing a great job at improving the way that they work, get bogged down by their organizational environment. This is particularly true in established enterprises that have been in operation for decades and sometimes even centuries. The software developers are agile, but you still have a “quality assurance (QA)” group that insists on manual testing based on a detailed requirements document. Or it takes days and sometimes weeks to release a new version of a system into production because of your existing release management practices. You’ve got this great agile team, a great car engine, but you’ve put it into an organizational tractor. Is it any wonder you’re not seeing the desired improvements? Many organizations have come to realize that agile software development alone isn’t enough and now are focusing on DevOps. They’ve increased the scope of their improvement efforts because they realize that their race car engines really need to be put into a race car. Enterprise-class DevOps is the focus of Disciplined DevOps.
We Need a Great Team to Run the Car (Value Streams)But this isn’t sufficient either. Just like a race car needs a driver and pit crew to operate it, your DevOps strategy is part of your value stream. If your product management approach is based on traditional thinking that requires teams to large, detailed requirement specifications then that’s the equivalent of a pit crew putting square wheels onto the car and then holding the driver accountable for losing the race. Similarly your DevOps efforts will be for naught without the support of business operations capable of supporting customers working with updated offerings. Just like your race car requires an effective team to run it in a race, your DevOps strategy requires a supporting value stream to be effective, the focus of Disciplined Agile's Value Streams layer.
And We Need a Race Where We Can Make Money (a Disciplined Agile Enterprise)But this still isn’t enough. A race car and team is of little value if there’s nowhere to race! They are part of a larger racing business which has multiple value streams through which they generate revenue: They make money from ticket sales, from advertisers, from merchandising, and from many other sources. Similarly, your value stream are supported by your larger organization, involved with and supporting many value streams from which you make money. This is what the Disciplined Agile Enterprise (DAE) is all about.
No Team is an Island Unto ItselfSo, to summarize, an engine is part of a race car that is evolved and operated by a team of people and this race car team is part of the overall racing business. Similarly, our software/solution delivery teams are part of an overall DevOps effort, which in turn is part of your IT strategy. Your IT strategy is one aspect of your overall organizational strategy. All of this must work together smoothly, given the challenges described earlier, in order for you to have a truly agile organization. And, on top of that, you need to accomplish this given the myriad of internal and external challenges that you face. How hard could that be?
What About Non-Software Teams?No metaphor is perfect. This metaphor works well for software teams because the way that they work are described by the Disciplined Agile Delivery (DAD) process blade, which is part of the Disciplined DevOps layer, which in turn is part of the Value Streams layer, which is part of the overall Disciplined Agile Enterprise (DAE) layer. But consider an agile marketing team. It's already part of the Value Stream layer and supports Disciplined DevOps efforts as appropriate, but isn't explicitly part of the Disciplined DevOps layer. Bottom line is that we need a second metaphor to address the realities faced by non-software teams. |
Disciplined Agile Strategies for Data Warehouse (DW)/Business Intelligence (BI) Teams
| In the past few years more and more teams have started to adopt agile approaches to data warehousing (DW) and business intelligence (BI). We have been at the forefront of this movement, having developed foundational techniques around agile data modelling, database refactoring, agile database testing, and many more that enable teams to be more agile in their approach to DW/BI development. In this blog posting we overview how a disciplined agile DW team works in practice. The following diagram summarizes the primary and secondary development activities, by phase, that are potentially performed by the team. Primary activities are ones that add direct value to the development effort. Secondary activities tend to focus on long-term documentation that may add value in the future, but the value proposition tends to be dubious in practice so you want to be very careful in how much effort you invest in them. A good approach is to think of these as sideline activities that I would only do if the team has time to spare from primary activities. There are several key ways in which a disciplined agile strategy for DW/BI development differs from a traditional one:
For a more detailed discussion, we suggest you consider the article Disciplined Agile Data Warehousing. |














