- get into the habit of developing according to the software life cycle stages (even when not strictly necessary for small programs) - incremental technique: develop in small steps - echo printing - print out values grabbed from user - for debugging 1) problem statement 2) map out overall plan - id classes necessary - id implementation steps to follow - outline program logic - write design document 3) consider design alternatives - better depends on metric - but remember, always developing for users