Show Lecture.Delivery as a slide show.
CS253 Delivery
What Computer Programmers Do
Computer programmers don’t just program.
Bakers
- Bakers don’t just bake bread. They may:
- clean the bakery
- deal with employees
- purchase ingredients
- obey food/restaurant regulations
- research new recipes
- bake bread
- present bread attractively
- set prices
- deal with credit card companies
- deal with banks for checks
- pay taxes
- They love baking bread, and would prefer to do that
full time, but that’s the nature of the business.
Programmers
- Similarly, computer programmers don’t just write code. They may:
- learn new algorithms
- write specifications
- design code
- write code
- debug code
- test code
- package code
- deliver code
- support old code
CS253
- In this class, I will handle writing specifications, but you must:
- design code
- write code
- debug code
- test code
- package code
- deliver code
- support old code
Problems
- Design:
- My students don’t give design its due.
- They think that they can do design jointly.
- That’s a fatal error.
- Packaging:
- My students generally allocate about five minutes before the
due time to figure out how to do the packaging.
- Therefore, they often get the packaging wrong.
- This makes me sad, and them sadder.
- Delivery:
- My students tend to do OK at delivery.
- However, then don’t always read all the error messages,
and so don’t notice when the submission is rejected.
🍕
The other night, I called the local pizza parlor and ordered a large
pizza, with mushrooms & peppers, to be delivered at 7:00ᴘᴍ,
costing $20. By 8:00ᴘᴍ, I gave up, and called them back:
Me: Where’s my pizza?
PP: Large, mushrooms & peppers?
Me: Yes.
PP: I made it. It’s here.
Me: Maybe … I dunno … deliver it?!
PP: Oh, yeah. Sorry. I forgot.
Me: @#%$☠^&*!
PP: That’ll be $20.
Me: What?
|
PP: I made your pizza. You owe me $20.
Me: You didn’t deliver it!
PP: Yeah, that’s true. How about $10?
Me: YOU GET NOTHING!
PP: I made it perfectly! That’s what counts!
Me: I think that delivery is important.
PP: You can’t take away all the money for one problem!
Me: You. Didn’t. Deliver. It.
PP: But I worked really hard on that pizza!
>slam<
|
The Pizza Product
- It all comes down to defining The Product.
- The pizza chef might wish to define their product as a pizza, because they’re
really into pizza cooking, but that’s wrong.
- The real product for a pizza delivery company is:
- a good-tasting pizza
- with the right toppings
- delivered to the right place
- at the right time
- If any of those elements aren’t satisfied, the customer is unhappy.
The Programming Product
- It all comes down to defining The Product.
- A programmer might wish to define their product as the source file
that contains the main program,
because they’re really into programming, but that’s wrong.
- The real product for a programmer is:
- all the necessary source code (source files, header files)
- the overhead files (e.g., Makefile, data files)
- correctly packaged (e.g., a tar file)
- turned in on time
Testing Pizza
- A good pizza delivery service will test their actual product,
the delivered-on-time correct pizza.
- They would be foolish to only taste-test the pizza in the shop,
and never test the delivery process.
- They would secretly order a pizza, pretending to be a customer,
and test how long it takes to arrive at the destination, is it
correct, hot, tasty, etc.
Testing Software
- Similarly, a good student will test their actual product,
the on-time tar file.
- They would be foolish to only test their source code in the
directory where they developed it.
- They would untar their tar file, pretending to be the grader,
build the test case, and verify that it works.