Teaching the Next Generation Software Engineering Alistair Cockburn http://Alistair.Cockburn.us
Two problems face SE educators Software Engineering isn’t a meaningful term in many places (including academia) SE courses are most often waterfall in nature (building bad habits) Both can be fixed
SE can be made relevant … and taught Cooperative Game 2 Lean Manufacturing 3 Craft 1 4 Knowledge Acquisition These can be taught in undergraduate education
1: The Craft view brings out lifelong learning Cooperative Game 2 Lean Manufacturing 3 Craft 1 4 Knowledge Acquisition These can be taught in undergraduate education
Craft = Lifelong deepening skills in a medium 7 major crafts in software development: 1 Deciding what to build 2 Managing (people and projects) 3 Modeling 4 Designing the external view 5 Large-scale design (architecting) 6 Fine-scale design (programming) 7 Validating the work
People learn skills in 3-stages Shu Learn One1 technique Ha Collect techniques Ri Invent / Blend techniques
Crafts view for educators Teach Shu /Ha, establish Craft view 1 Teach Shu-level techniques deliberately 2 Kick students out of the Shu-box into Ha 3 Establish craft-style lifelong learning 4 Use the SE course to show how the crafts fit together
2: The Cooperative Game brings out people issues Lean Manufacturing 3 Craft 1 4 Knowledge Acquisition These can be taught in undergraduate education
SE is a Cooperative Game of Invention & Communication SE is a Cooperative Game of Invention & Communication … making ideas concrete in an economic context ... People inventing and communicating, Solving a problem they don't yet understand which keeps changing Creating a solution they don't yet understand Expressing ideas in languages they don’t really understand which keep changing To an interpreter unforgiving of error Making decisions with limited resources and every choice has economic consequences
Organization Survival Cooperative Game teaches teamwork and strategies in situations that never quite repeat Organization Survival Infinite Product Lines Career Management King-of-the-hill wrestling Finite w/ no fixed end Jazz music Poker Tennis Theatre Finite & goal-directed Engineering Rock-Climbing Chess Software Development Swamp game Competitive Cooperative
Software development is a series of games Conflicting goals compete for resources: 1. Deliver this system 2. Set up for the next game (documentation and skills evolution) There is no simple formula for winning, only strategies in specific situations ! (Shu-Ha-Ri)
Cooperative Game view for educators Teach Cooperation & Strategies 1 Teach Behavior-in-teams (in Shu-Ha-Ri sequence) 2 Teach, attend to Communication , morale, safety, trust 3 Teach Strategies-in-context when running projects 4 Use the SE course to illustrate
3: Lean Manufacturing can teach designers a lot Cooperative Game 2 Lean Manufacturing 3 Craft 1 4 Knowledge Acquisition These can be taught in undergraduate education
Design=manufacturing if inventory=unvalidated decisions I wish they’d decide what style they want! Users & Sponsors Testers Business Analysts I wish they’d decide what functions they want! A decision I wish they’d decide on the UI design already! I wish they’d think a bit more carefully before coding! Programmers Every line of code is a decision UI Designers
The network of people waiting on others has loops. Detailed decisions about external appearance Decisions about function and style Detailed decisions about function and data Decisions about program structure Decisions about system correctness Users & Sponsors UI Designers Programmers Testers Business Analysts
Differing strategies come from queue locations Enough Users & Sponsors UI Designer A few Business Analysts Lots of Programmers Single, solitary Database designer Enough Users & Sponsors Many Business Analysts Not enough Programmers Some Testers
Lean processes use smaller increments & batches Example: Arrival at test # of design decisions How long this line of code / screen / use case / decision sits in the testing queue 100 lines of code show up for testing Testers Decisions arriving Decisions being validated / broken time 1,000 lines of code show up for testing Testers How long this line of code / screen / use case / decision sits in the testing queue time
Lean Process view for educators Lean Process view for educators Teach lean strategies, meaning of bottlenecks 1 Teach to Design/test in small batches ( μ-incremental dev ) 2 Attend to Queues between specialists 3 Teach Process Derivation from queue backup locations 4 Illustrate these within the SE course
SE involves strategic knowledge acquisition Cooperative Game 2 Lean Manufacturing 3 Craft 1 4 Knowledge Acquisition These can be taught in undergraduate education
#4 Design is a game of strategic learning Growth of knowledge with big-bang integration cost Knowledge comes at the “moment of truth”: final integration. Delivers nearly no knowledge (or risk reduction) time
Pay to learn early Growth of knowledge with early, continuous integration Delivers knowledge (risk reduction) Development sequence indifferent (with respect to knowledge) cost time
Develop for business value along the way Business value growing Knowledge growing (risk reduction) cost Growth of business value time
Trim the Tail: Deliver by value or by date Trim to deliver earlier Delay to deliver more/better
Knowledge Acquisition view for educators Knowledge Acquisition view for educators Teach Design-as-Learning, Trim-the-Tail 1 Teach to What to learn about staged over project 2 Teach to Detect Knowledge Gaps (domain, design, process) 3 Teach to Trim the Tail 4 Illustrate these within the SE course
These can be taught to undergraduates Cooperative Game 2 Lean Manufacturing 3 Craft 1 4 Knowledge Acquisition These can be taught in undergraduate education
These ideas have been in use since 2006 Course designed in 2006, in use at Utah Valley University Each craft introduced with Shu-level technique Three-pass spiral through IEEE/ACM SE core Every assignment with incremental delivery Semester assignment 6-9 weeks long 3 deliveries, each with reflection & adjustment Write to me TotherAlistair@AOL.COM http://Alistair.Cockburn.us/SE2k