Introduction to
Software Engineering or
"how to JOYFULLY BUILD
with a TEAM"
Prof. Jérémie Lumbroso, Ph.D.
lumbroso@seas.upenn.edu
⚠️➡️ RIGHT NOW, go to https://sli.do
Code #23232325
LECTURE 5:
Why Process Matters—
How Software Gets Made
“Software engineering is programming integrated over time.” – SE at Google
Coined by Ward Cunningham, technical debt describes the future costs (rework, complexity) incurred when a team takes the “quick/easy” solution now instead of a more robust approach
Why It Generally Happens Intentionally:
Leaky Roof “Patch”
Messy Closet “Just Slam the Door”
In Code:
Key Point: If you keep ignoring technical debt, it can snowball, slow you down, or cause major failures.
In modern production methods, regular refactoring and small increments help keep debt from overwhelming you.
refers to an actual occurrence of technical debt within software, technology, or organizational systems. These are real-world examples where past shortcuts or outdated systems create a burden that must be addressed in the future.
refers to instances where the concept of technical debt is used figuratively to describe inefficiencies, poor planning, or shortcuts in non-technical areas of life, such as personal habits, urban planning, or interpersonal relationships.
Path@Penn crashing during advanced registration – This is an actual technical issue caused by poor system design or maintenance.
Cramming for exams instead of studying steadily – This is not technical debt in the software sense but is likened to it because of the short-term gain and long-term cost structure.
refers to an actual occurrence of technical debt within software, technology, or organizational systems. These are real-world examples where past shortcuts or outdated systems create a burden that must be addressed in the future.
refers to instances where the concept of technical debt is used figuratively to describe inefficiencies, poor planning, or shortcuts in non-technical areas of life, such as personal habits, urban planning, or interpersonal relationships.
35 examples, often involve:
18 examples, often involve:
Obama (Oct 2013):
Nobody is madder than me that the website isn’t working... which means it’s going to get fixed.
“A late decision requiring login to window-shop caused a massive bottleneck at the site’s entrance.”
More detail from the Kansas City Star (Tony Pue, November 08, 2013): “It appears that one of the reasons for the high concurrent volume at the registration system was a late decision requiring consumers to register for an account before they could browse for insurance products. This may have driven higher simultaneous usage of the registration system that wouldn’t have otherwise occurred if consumers could ‘window shop’ anonymously.”
Quote:
“We did daily triage, day after day, for weeks. It wasn’t rocket science—it was iterative, relentless focus.”
– Mikey Dickerson, Tech Surge
Aspect | Before (Waterfall-ish) | After (Agile Rescue) |
---|---|---|
Leadership | Fragmented, no single owner | Unified “war room,” daily stand-ups |
Testing | Minimal pre-launch load testing | Real-time monitoring & iterative bug fixes |
Release | Big bang on Oct 1 (unchangeable deadline) | Continuous daily/weekly deployments post-“surge” |
User Flow | Forced login prior to browsing | Allowed browsing w/o account creation (reduced load) |
Outcome | Site meltdown, 6 signups first day | Stable by Dec, millions enrolled, regained public trust |
[Presenter Notes]:
- Walk through each row to contrast Waterfall vs. Agile. This sets up the next portion: “Why was Waterfall used in the first place?”
Royce already anticipated revisions and iterative development, but hoped it would be organized
In practice, he acknowledged that software requirements might need to be revisited after testing, but the notion of user is mostly absent
The big drawback: real-world software requirements often aren’t stable or fully known up front.
Think (2 minute):
Recall a recent “technical meltdown” or fiasco you’ve experienced or heard about—something that failed or got stuck in a big way (e.g., a university system glitch, a frustrating mobile app, or a well-publicized national-level issue).
Pair (3–4 minutes):
Share your example with a partner. Brainstorm specific steps an “Agile rescue team” might take to stabilize or improve the system quickly—what is one (or two) steps that could have made an improvement?
Share your individual answer with your PennKey (1 mins):
Submit scenario + fix. We’ll collect a couple of examples. Notice how focusing on small, continuous changes can help reverse a major software fiasco and demonstrate why Agile methods thrive in chaotic or fast-changing conditions.
Why This Prepares Us for the Next Lecture:
Much like the Healthcare.gov “tech surge,” Agile’s quick iteration and real-time feedback can rescue struggling projects. Next class, we’ll dive into how these Agile practices work and why they’re so effective.