Johannes Brodwall Chief Scientist Smidig arkitektur
“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 problem 2.Describe the usage 3.Pick the technologies 4.Plan the show 5.Create the software
When
MondayTuesdayWednesdayThursdayFriday Goal, Stakeholders Dev baseline Review usage Define progress, Stories Wrap up docs Dev baseline 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/stakeholder Who wants to achive some goal The name of the system Is a type of system Which lets them perform some operation(s). Unlike most compelling alternative This gives them some advantages.
For some user/stakeholder Who wants to achive some goal The name of the system Is a type of system Which lets them perform some operation(s). Unlike most compelling alternative This gives them some advantages.
For workers Who wants to get paid for good fun work The Awesome work system Is a digitial pimping system Which matchers worker with a client. Unlike the Excel file we’re using now This automateted, online, easy to use and.
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 meetings Around 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 mobile Hundreds 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 need 2.Trigger: Someone does something with the system 3.The system responds in some way 4.… 5.… 6.The goal has been fulfilled
1.Need: Someone identifies a need 2.Trigger: Someone does something with the system 3.The system responds in some way 4.… 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 site 3.Dispatcher lists unhandled work orders 1.Alternative: Dispatcher filters, searches and sorts work orders 4.Dispatcher displays work order 5.Dispatcher assign tasks to workers based on skills registered in training system 6.Worker get notified of task on their mobile 7.Worker acknowledges task 1.Alternative: If worker rejects task, system marks it as unassigned and alerts dispatcher 8.Worker performs task 9.Worker registers the task as done 10.Worker registers time and materials spent on task on mobile 11.System notifies payroll of time spent 12.System submits invoicing data to accounting system 13.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 site 3.Dispatcher lists unhandled work orders 1.Alternative: Dispatcher filters, searches and sorts work orders 4.Dispatcher displays work order 5.Dispatcher assign tasks to workers based on skills registered in training system 6.Worker get notified of task on their mobile 7.Worker acknowledges task 1.Alternative: If worker rejects task, system marks it as unassigned and alerts dispatcher 8.Worker performs task 9.Worker registers the task as done 10.Worker registers time and materials spent on task on mobile 11.System notifies payroll of time spent 12.System submits invoicing data to accounting system 13.Building is in great shape!
Stories 0. (Mock work orders) 1.Complete list of work orders 2.Simple work order filter 3.Placeholder display work order 4.Placeholder assign task
Demo script
1.Preconditions 2.Start up the system 3.What do you see? 4.Activate a function 5.What do you see? 6.Activate variations of function 7.Thus we demonstrate that we have delivered x
Example: Dispatch a task
1.Faked: Building manager registers a work order 2.Dispatcher “logs into” web admin at Dispatcher sees a list of missions (future: sort, filter list) 4.Dispatcher selects a mission 5.Mission will display the type of tasks associated with the mission type 6.Dispatcher clicks a task 7.Application lists all the workers that can be assigned to the task (for now, all workers are listed) 8.Dispatcher selects a worker 9.Dispatcher is returned to mission screen and the worker is listed next to the task
Stories – sprint 2 1.Polished list of work orders 2.Complete display work order 3.(Placeholder worker import) 4.Simple assign task
Create the software
Example: Feature: Dispatch task New codebase 5 developers
Solo programming
Integration issues Inconsistent coding Merge conflicts
Mob programming
Pair programming
Resource utilization vs Knowledge sharing
5 tools
1.Discuss the problem 2.Describe the usage 3.Pick the technologies 4.Plan the show 5.Create the software
1.Describe stakeholders 2.Usage flow => context diagram 3.Use technologies you know 4.Demo script 5.Mob programming
Conclusion:
When you return: Create a elevator pitchwith your customer Create a context diagram Create a demo script for next sprint
Tusen takk Johannes Brodwall