fix: talking about cycle time and ensure we have a lot of simulation

This commit is contained in:
Julien Calixte
2025-01-07 22:07:04 +01:00
parent be9ae72668
commit 12c7387072
6 changed files with 25 additions and 25 deletions

View File

@@ -43,9 +43,9 @@ const feature: Feature = {
different strategy patterns and which is the most effective.
</p>
<p>
Let's see what happens when we want to create a Newsletter mobile app.
We have some functionalities to implement and we want to measure how
long it takes.
Let's see what happens when we want to create a news mobile app. We have
some functionalities to implement and we want to measure how long it
takes.
</p>
<p>
<em
@@ -206,19 +206,19 @@ const feature: Feature = {
<SimulationDashboard />
<div class="text">
<p>
Pull systems seem better. But before any conclusion, comparing two
simulations is not enough. Let's generate 200 projects delivering the 20
features of the Newsletter app and see what happens.
Let's simulate... 1000 news mobile app! 500 for each system and see what
are the trends.
</p>
</div>
<SimulationControls type="multiple" class="above" />
<SimulationDashboard />
<div class="flow-multiple-simulation text">
<p>
Okay, now we're pretty sure! The takt time is quite close actually. But
as the quality issue increase in the push system, these defects and
corrections pile up and generate at about 15 days of difference. For a
long time, I wanted a proof
Okay, now we're pretty sure! The cycle time - the time needed to
complete one feature - is quite close actually. But as the quality issue
increase in the push system, these defects and corrections pile up and
generate at about 15 days of difference. For a long time, I wanted a
proof
<em>to trust the process</em>, that's the beauty of simulations. It's
quite impossible to convince people when we're in the middle of the
battle. If teams change every time, you are doomed to get this problem

View File

@@ -46,9 +46,9 @@ const featureStore = useFeatureStore()
</div>
</div>
<div class="card">
Takt time
Cycle time
<div class="data">
<span class="numeric">{{ featureStore.taktTime }}</span>
<span class="numeric">{{ featureStore.cycleTime }}</span>
days
</div>
</div>

View File

@@ -62,11 +62,11 @@ export const useFeatureStore = defineStore('feature', {
qualityIssues: (state) =>
state.features.map((f) => f.qualityIssue).reduce((a, b) => a + b, 0),
meanQualityIssue: (state) => getMeanQualityIssue(state.features),
taktTime: (state): string => {
const taktTime = (
cycleTime: (state): string => {
const cycleTime = (
state.meta.totalDays / state.features.filter(isFeatureDone).length || 0
).toFixed(2)
return taktTime === 'Infinity' ? '-' : taktTime
return cycleTime === 'Infinity' ? '-' : cycleTime
},
featuresGroupedByStep: (state) => {
const groupedByStep: Record<number, Feature[]> = {}
@@ -82,12 +82,12 @@ export const useFeatureStore = defineStore('feature', {
return groupedByStep
},
eta(): string {
if (this.taktTime === '-') {
if (this.cycleTime === '-') {
return '-'
}
const eta = (
parseFloat(this.taktTime) *
parseFloat(this.cycleTime) *
(this.features.filter((feature) => !isFeatureDone(feature)).length +
this.backlog.length)
).toFixed(2)

View File

@@ -7,7 +7,7 @@ defineProps<{
}>()
const simulationStore = useSimulationStore()
const NUMBER_OF_SIMULATION = 200
const NUMBER_OF_SIMULATION = 500
// [dps]
// const strategies: Strategy[] = ['push', 'pull', 'push-dps', 'pull-dps']

View File

@@ -42,9 +42,9 @@ const strategies: Strategy[] = ['push', 'pull']
</td>
</tr>
<tr>
<td>Takt time</td>
<td>Cycle time</td>
<td class="numeric" v-for="strategy in strategies" :key="strategy">
{{ simulationStore.meanTaktTime(strategy) }}
{{ simulationStore.meanCycleTime(strategy) }}
</td>
</tr>
<tr>

View File

@@ -8,7 +8,7 @@ import { defineStore } from 'pinia'
type Mean = {
leadTimeSum: number
taktTimeSum: number
cycleTimeSum: number
complexitySum: number
qualityIssueSum: number
teamWorkExperienceSum: number
@@ -25,7 +25,7 @@ type State = {
const initMean = (): Mean => ({
leadTimeSum: 0,
taktTimeSum: 0,
cycleTimeSum: 0,
complexitySum: 0,
qualityIssueSum: 0,
teamWorkExperienceSum: 0,
@@ -99,7 +99,7 @@ export const useSimulationStore = defineStore('dashboard', {
this.dashboards.push(dashboard)
this.mean[strategy].leadTimeSum += dashboard.analysis.meanLeadTime
this.mean[strategy].taktTimeSum +=
this.mean[strategy].cycleTimeSum +=
dashboard.meta.totalDays / newState.features.length
this.mean[strategy].complexitySum += dashboard.analysis.meanComplexity
this.mean[strategy].qualityIssueSum += dashboard.analysis.meanQualityIssue
@@ -131,9 +131,9 @@ export const useSimulationStore = defineStore('dashboard', {
state.mean[strategy].leadTimeSum,
state.mean[strategy].simulations
),
meanTaktTime: (state) => (strategy: Strategy) =>
meanCycleTime: (state) => (strategy: Strategy) =>
getRound(
state.mean[strategy].taktTimeSum,
state.mean[strategy].cycleTimeSum,
state.mean[strategy].simulations
),
meanComplexity: (state) => (strategy: Strategy) =>