Johannes BrodwallChief Scientist
Smidigarkitektur
“How do you start a project and achieve
flexibility at the beginning?”
“How do you {start a project} and achieve
flexibility at the beginning?”
Keep it simple
Defer commitment
Inspect and adapt
It depends
5 tools
1. Discuss the problem2. Describe the usage3. Pick the technologies4. Plan the show5. Create the software
When
Monday Tuesday Wednesday Thursday Friday
Goal,Stakeholders
Dev baseline Dev baselineReview usage
Define progress,Stories
Wrap up docsDev baseline
Lunch Lunch Lunch Lunch Lunch
Look at what’s going on today
Stakeholder,Usage
Usage review,Context,Domain,Deployment
Refine models
Review,Retrospective
Typical plan for kickoff
Discuss the problem
The problem:“A program to assign a
worker to a client”
The problem:“A program to assign a
worker to a client”(yes, it’s unclear!)
Form groups of 3 (or 2)You will have five minutes
to discuss
For some user/stakeholderWho wants to achive some goal
The name of the systemIs a type of system
Which lets them perform some operation(s).
Unlike most compelling alternativeThis gives them some advantages.
For workersWho wants to get paid for good fun work
The Awesome work systemIs a digitial pimping system
Which matchers worker with a client.
Unlike the Excel file we’re using nowThis automateted, online, easy to use and .
Who?
Who?# Clients do ??? every ??? via ???
# Dispatchers do ??? every ??? via ??? # Workers do ??? every ??? via ???
# Building Managers do ??? every ??? via ???
Who?Tens of Clients sign up for service a few times every year via
meetingsAround 20 Dispatchers assign worker teams to maintainance
tasks all the time via specialized application Several hundred Workers accept tasks and confirm tasks a
few times per day via mobileHundreds of Building Managers order maintenance tasks for
their buildings every few days via web
Who else?Payroll
Describe the usage
1. Need: Someone identifies a need2. Trigger: Someone does
something with the system3. The system responds in some
way4. …5. …6. The goal has been fulfilled
1. Building manager has works that needs done (e.g. change mats)1. Alternative: Periodic trigger
2. Building manager register works request on web site3. Dispatcher lists unhandled work orders
1. Alternative: Dispatcher filters, searches and sorts work orders4. Dispatcher displays work order5. Dispatcher assign tasks to workers based on skills registered in
training system6. Worker get notified of task on their mobile7. Worker acknowledges task
1. Alternative: If worker rejects task, system marks it as unassigned and alerts dispatcher
8. Worker performs task9. Worker registers the task as done10. Worker registers time and materials spent on task on mobile11. System notifies payroll of time spent12. System submits invoicing data to accounting system13. Building is in great shape!
Worker
Mobile
Server
Payroll
Personell
Accounting
Dispatcher
Building manager
Worker
Mobile
Server
Payroll
Personell
Accounting
Dispatcher
Building manager
Pick the technologies
Constraints:• Interact per user
• Portability• Supported platform
Example:• Dispatcher: ____
• Building manager: ____• Worker: ____
• Supported platform: Java stack
Example:• Dispatcher: Web or desktop
• Building manager: Web or any mobile• Worker: Provided mobile
• Supported platform: Java stack
Example:• Dispatcher: “HTML5”
• Building manager: Responsive web• Worker: Android
• Supported platform: Java stack
Example:• Dispatcher: Responsive web SPA
• Building manager: Responsive web SPA• Worker: Responsive web SPA
• Supported platform: Java stack
Frameworks:• What can the team support
• Max one: Project risk or tech risk
Example risky project:• New team
• New supplier• New domain
• New codebase
Example risky tech:• New database system
• New framework• New programming language
Plan the show
1. Building manager has works that needs done (e.g. change mats)1. Alternative: Periodic trigger
2. Building manager register work order on web site3. Dispatcher lists unhandled work orders
1. Alternative: Dispatcher filters, searches and sorts work orders4. Dispatcher displays work order5. Dispatcher assign tasks to workers based on skills registered in
training system6. Worker get notified of task on their mobile7. Worker acknowledges task
1. Alternative: If worker rejects task, system marks it as unassigned and alerts dispatcher
8. Worker performs task9. Worker registers the task as done10. Worker registers time and materials spent on task on mobile11. System notifies payroll of time spent12. System submits invoicing data to accounting system13. Building is in great shape!
Stories0. (Mock work orders)1. Complete list of work orders2. Simple work order filter3. Placeholder display work order4. Placeholder assign task
Demo script
1. Preconditions2. Start up the system3. What do you see?4. Activate a function5. What do you see?6. Activate variations of function7. Thus we demonstrate that we have
delivered x
Example: Dispatch a task
1. Faked: Building manager registers a work order2. Dispatcher “logs into” web admin at
http://test.workers.com/admin3. Dispatcher sees a list of missions (future: sort, filter list)4. Dispatcher selects a mission5. Mission will display the type of tasks associated with the
mission type6. Dispatcher clicks a task7. Application lists all the workers that can be assigned to the task
(for now, all workers are listed)8. Dispatcher selects a worker9. Dispatcher is returned to mission screen and the worker is
listed next to the task
Stories – sprint 21. Polished list of work orders2. Complete display work order3. (Placeholder worker import)4. Simple assign task
Create the software
Example:• Feature: Dispatch task
• New codebase• 5 developers
Solo programming
Solo programming• Integration issues
• Inconsistent coding• Merge conflicts
Mob programming
Pair programming
Resource utilizationvs
Knowledge sharing
5 tools
1. Discuss the problem2. Describe the usage3. Pick the technologies4. Plan the show5. Create the software
1. Describe stakeholders2. Usage flow => context diagram3. Use technologies you know4. Demo script5. Mob programming
Conclusion:
When you return:Create a elevator pitchwith your
customerCreate a context diagram
Create a demo script for next sprint