About This Course
- Make you a better programmer
- Prepare you for industry
- Prepare you for Capstone
- Prepare you for Academia
Why Is Programming Hard?
- Figuring stuff out
Software Engineering Is Engineering
Engineering is a four-step process:
- What are you going to build? (requirements)
- How are you going to build it? (design)
- Build it (implementation)
- Is it built right? (validation and verification)
Engineering is interdisciplinary
Engineering is two-tiered:
- Project: Actually constructing the necessary artifact
- Process: Managing the work of constructing the artifact
Engineering is about risk management
- What are the likelihoods of various risks?
- What are the consequences of various risks?
- How do risks interact?
Software Engineering Is Weird Engineering
Extraordinarily complex artifacts
- Other fields are complicated only as software enables this
Bits are not atoms
- Product is infinitely perfectly replicable and distributable instantly at zero cost
- Wear and tear are not a thing
Software doesn't exist by itself
- Software-intensive systems
Software Engineering Is New
Didn't exist until about 50 years ago
- Wasn't a real thing until about 40 years ago
Tremendous (though slowing) pace of change
Still highly failure-prone
What Does This All Mean To You?
You (supposedly) know how to program at this point. Gratz
What do you still need to learn?
- End-to-end engineering
- How use / manage process
- How to work with people
- How to manage large scale complexity
- How to manage risk
- How to manage rapid change
There's only so much I can tell you
- We only know so much
- I only know so much
- Much of it isn't well-written-down