Project Management
Option 1: Waterfall Development Changes cheap Changes expensive Up front planning Phases: concept to detailed implementation
Option 2: Iterative/Agile Development Plan, but quickly Later parts of the plan more coarse Prototype Refine Test & Evaluate Includes end-user / customer evaluation
Waterfall vs. Agile? Strengths and weaknesses of each? Your team’s preference?
Waterfall vs. Agile? Strengths and weaknesses of each? Waterfall strength: efficient if you can plan well Agile strength: it’s hard to plan well iterate quickly instead Waterfall weakness: planning paralysis Agile methods now dominant in software Also common in HW Spreading to other industries (SpaceX, Tesla, …) Wikipedia vs. Nupedia: agile won
Agile: Prototype Early Not having a working system is very dangerous Don’t know when/if the system will work Engineers can’t test their work in the whole system Don’t know where the problem areas to improve / optimize will be Get something simple working Test & Measure Add features / Improve problem areas Repeat Keep it simple! Use simplest approach that works
One Flavour of “Agile”: Scrum image: ecomcanada.org Choose features for 21-day sprint Team meets each day for 15 min scrum End of each sprint working SW for customer
Set Measurable Milestones Key to keeping larger projects on track
Agile Development & Companies Harvard Business Review: “Why the lean start-up changes everything” Agile development applied to entire business of start-ups Simplest possible prototype! Iterate! Image: leadnet.org
Project/Teams Course Roadmap More waterfall More specification APS 111/112 More agile More implement + measure ECE 297 ECE 496: Capstone project APS 343: Engineering Leadership iLead: project management workshops https://ilead.engineering.utoronto.ca/events-programs/event-calendar-registration/ Jan. 30 & Feb. 5: project management Specify & implement PEY & Career
Case Study: Case Study #1
Background My PhD thesis: new CAD System for FPGAs Formed company to commercialize 4 people initially An early customer was Altera 10 months to produce a new “placement and routing” system for Altera’s chips Aggressive goal: 10X better than current system
Place and Route Example
Project Management Quick plan Concrete milestones Scared 1 day: estimate all tasks & time Add time margin (mine: 50%) Concrete milestones Meet a milestone every 3 months or don’t get paid! Scared Turned out to be helpful! Avoid any side projects, unnecessary complexity Get something working, measure & improve Measure our software vs. Altera’s every day
Outcome Hit all milestones, except first (2 weeks late) Focused! CAD system exceeded expectations 30X less runtime 38% faster circuits Altera replaced their P & R engine with the prototype Started simple, measured where to improve Some simple algorithms still in current Quartus didn’t need more!
Case Study 2: (First Version of) Quartus
Background Altera had highly successful CAD system: Max+PlusII Decided to do a complete re-write to a new CAD system Quartus Goals: C++ (not C) Cleaner, more extensible code Allow multiple engineers to collaborate on a project easily Allow fast, “incremental” recompiles
Project Management Planned for a year with no coding Too much waterfall planning paralysis Let complexity reign Fancy user features Fancy language (object oriented C++ to the max) No working prototype for ~2 years Can’t test new features in full system Didn’t understand & measure key metric CAD system that optimizes well And is ready for next-generation chip
Outcome Software not ready in time for chip Software rushed to market Not stable enough, didn’t optimize well enough Very bad customer experiences Lost sales: $billions! Rewrote & renamed later versions: Now very good!
Case Study 3: Hardware + Software (Stratix V)
State of the art for 2 years! Big Project! More planning? 3 year project ~500 engineers at peak Yes, plan as far ahead as you can But don’t paralyze yourself Accept that plan gets coarse as you go out in time Key plan: measurable milestones 3 year project need to break up schedule Project milestones goals / milestones per team Clear must have features Everything else: nice to have > $200 M State of the art for 2 years! +
Agile / Iterative Development? Build prototype / model of HW + SW system Use to evaluate and test new ideas Done by smaller team (~10 engineers) Will never ship to customers! Prototype shows good results? Build real hardware & full software Team grows to 500 Always keep system working as you improve Always measure results vs. expected (from prototype) HW & SW both in source code control Still iterative, but with more structure
Communication? Weekly status meeting Meeting style For sub-teams (~8 engineers) Managers discuss results for ~8 teams (~64 people) Directors discuss overall status (~500 people) Meeting style wiki, crisp reporting Big picture progress toward milestones
Outcome Iterative development of HW + SW Much better than pure waterfall Many companies: out of business by not getting full HW + SW system working Every 2nd generation: usually late! Engineers & marketing put in too much complexity Not scared enough, not enough iterative development! Late to market is terrible Competitor has twice the transistors, 1 year earlier Want to optimize, but on time more important
Testing
Testing Philosophy “If you didn’t test it, it doesn’t work” Assume all code broken until proven otherwise Look at what the program does not what it is supposed to do Scientist: you are testing hypotheses about program Think of every case your program should handle cover them all
Testing Time Develop tests as or before you code Test-driven development Prototype Refine Test & Evaluate