For realism, lie to students about next project phases. For example, say that we will never need to track users. Then, next project, track users and render pages differently per user. Then do a scaling problem so their db access is too slow. Can talk about throw one away and 2nd system effect. Talk to rob and beav about big projects. Formal design languages/diagrams are ok, but mainly an artifact of days when submitting/building a program was a big deal (mainframe). Write out the class hierarchy. You learn most about a problem by coding.