Course Wrapup

Lecture Notes for CS 190
Winter 2018
John Ousterhout

  • Key ideas and red flags: see slides
  • This class is just a beginning
    • Goal for this class: start the process
    • To keep learning, need experience and feedback:
      • Try something hard enough to push you outside your comfort zone
      • Make mistakes
      • Get feedback (ideally, from an expert)
      • Rework to improve
    • How to get feedback?
      • Code reviews (ideally, with experts)
      • Learn to recognize red flags, so you can provide feedback for yourself
  • What to do you when you get into a company?
    • Many companies don't care about software design
    • As a fresh-college grad, it may not be possible for you to change the organization.
    • When interviewing for jobs, look for a company that cares about software design:
      • Ask to see code.
      • Ask tough questions:
        • Is any time budgeted for code cleanup and refactoring?
        • Does management care about code quality? Give an example
        • Does management set reasonable project schedules?
    • Do as much as you can in your own code:
      • Write documentation ("it helps me organize my thoughts")
      • Take a little extra time to design carefully
      • Take time to clean up as you make changes
    • Keep developing your own design skills
    • Look for opportunities to influence the organization
      • Start code reviews with other engineers, if there aren't any already
      • Offer to help train new hires
    • As you get more senior, use your influence to change the organization:
      • Code reviews: discuss design, not just style standards
      • Unit tests
      • Documentation
      • Coding standards