
We've covered a lot of material that was probably brand new to you. Make sure that the concepts are crystal clear by answering the questions below:
The Principles of Software Engineering
- How did software engineering actually begin?
- What processes were early software engineering techniques modeled after?
- What macro-scale trends helped define the arc of software engineering over the past half-century?
- What specific advances have led to rapid change in the discipline since the 1990's?
- What characteristics of the web make modern day web software development more flexible than traditional software?
- Why are software engineers more like architects than builders?
- Why are software engineers actually very similar to visual or UX designers in some ways?
- What are the four steps of the high level engineering problem solving process?
- What are the specific things you need to do to implement each of these four steps, particularly the first two?
- Why is thinking about the user so important for engineers?
- What does KISS stand for and why do engineers love it?
- What does DRY stand for and why is it relevant to you?
- What is "You ain't gonna need it?" (YAGNI)
- What do you think are the top 3 themes of good software engineering?
- Why do we say that the engineering approach covers both Product and Process?
Introduction to Agile Development
- What is Waterfall Development?
- Why does Waterfall seem to follow the core engineering problem solving steps?
- What is Waterfall good for?
- What is Waterfall not good for?
- What is Agile Development?
- What is Agile good for?
- What is Agile not good for?
- What is eXtreme Programming?
- What development techniques does XP advocate?
- What is SCRUM?
- What are the common principles of XP and SCRUM?
- What are User Stories?
- What is the format of a typical story?
- What are Acceptance Criteria?
- What is a Burndown Chart and how is it useful?
- What is Pivotal Tracker?
- What are the 6 steps of implementing a typical new Agile project?
- What is Software Testing?
- Why do we need automated testing?
- What does a QA department do?
- What are the general characteristics of automated testing software?
- What does Test Coverage mean?
- What is Unit Testing?
- What is Integration Testing?
- What is Acceptance Testing?
- What general types of behavior should you test?
- What is TDD?
- What are the advantages of TDD?
- What does "Red/Green/Refactor" mean?
- What is BDD?
- How does BDD unite the ideas of User-Centered Design with TDD?
Pseudocoding and Good Software Design
- What is Pseudocoding?
- What is Whiteboarding?
- Why is pseudocoding useful for a beginner?
- Why is pseudocoding useful for an experienced engineer?
- Why do we say that code follows "Sequence"?
- What is Flow Control?
- What is Iteration?
- What is Modularity?
- How does modularity help us think about systems?
- What is an Interface?
- How can the real world be modeled as a modular system?
- How specific should your modules be?
- How can you apply modules to your pseudocode "programs"?
- What is SOA?
- How was Amazon's transition to using SOA an example of high level modularity at work?
- Why was it important for Amazon to make this transition?
- What are the three characteristics of good modules?
- What is Coupling?
- How much coupling should good modules have?
- What is Cohesion?
- How much cohesion should good systems of modules have?
- What is Encapsulation?
- How much encapsulation should good modules have?
- What are the SOLID principles good for?
- (optional) What are each of the SOLID principles?