Announcements:
- IP1 is now complete!
- Groups are now assigned (see Discord).
- The schedule has been refined; see the calendar.
Learning Objectives:
The overall theme of this week's lessons is software engineering processes: how do we organize our (non-programming) activities so that we can build some software project as efficiently as possible? The lessons will center on these three themes:
- How do we build an effective team?
- How do we organize our development activities?
- How do we estimate how long a software project will take?
Important Dates:
Lecture Slides:
Activity:
- Project scoping activity (Also in slides)
Additional Readings:
The following books provide additional depth on the topics in this week's lessons:
- T Shirt Sizing: Agile Estimation & Capacity Planning
- Postmortem Exercise
- Expectations, Outcomes, and Challenges of Modern Code Review
- Modern Code Review: A Case Study at Google
- Peer interaction effectively, yet infrequently, enables programmers to discover new tools
- Do Developers Discover New Tools On The Toilet?
- How Social and Communication Channels Shape and Challenge a Participatory Culture in Software Development
- The Mythical Man-Month
- Head First Agile
- eXtreme Programming eXplained
- Debugging Teams
For more reflections on software processes in the 1980's, David Parnas' article: "Software Aspects of Strategic Defense Systems". For a discussion of various xDD approaches, see Rebecca Wirfs-Brock on What Drives Design?. Chuck Rossi's 2014 Release Engineering Keynote includes some great discussion of Facebook's mobile release process, now outdated, but quite interesting; there is a discussion of team structure around 18 minutes in. Sarah Mei's 2018 Power of Agile talk provides a great discussion of embracing agile values that work for your team, while leaving behind toxic practices. Miscellaneous: Investigating the origins of the tire swing meme