1. Purpose
    1. Fill the Gap, focus on technical side
    2. Scrum does not cover technical side
    3. Mandatory skills required in Agile Dev team
    4. ourself are impediments
  2. TDD
    1. Red-Green-Refactoring
    2. Arrange-Act-Assert
    3. Hamcrest API
      1. more expressive
      2. mathers
        1. assertThat
        2. is
        3. equalTo
        4. contains
      3. first argument is actual, second one is the expected
    4. Eclipse Shortcuts
      1. ALT+SHIFT+R
      2. ALT+SHIFT+M
      3. ALT+SHIFT+F
      4. CTRL+SHIFT+F11 to run tests
    5. Katas
      1. Bolwing
      2. Gilded Rose
        1. great refactoring example
      3. Roman Numerals
  3. Simple Design
    1. 4 simple design rules
      1. All tests must be passed
      2. Node code is duplicated
      3. Code is self-explanatory
      4. No superfluous parts exists
    2. Simplified version
      1. remove duplication
      2. fix names
    3. names
      1. pass phone tests
      2. meaningful
      3. use business domain term
        1. ubiquitous language
  4. Principles
    1. SOLID
      1. SRP
      2. OCP
      3. LSP
      4. ISP
      5. DIP
    2. DRY
      1. Don't Repeat Yourself
    3. LoD
      1. Tell, don't ask
      2. Write SHY code
      3. make mocking easier
  5. Refactoring
    1. code smells
      1. IF statement
      2. Null Check
      3. Comments
      4. Long methods and classes
      5. Feature envy
    2. patterns
    3. example: Gilded Rose
      1. rename
      2. extract method
      3. emerge patterns
      4. business logic emerge
      5. change code without understanding the business logic
  6. legacy code
    1. code without unit tests
    2. use mocks to break dependencies
  7. Action plans
    1. Write unit tests using mockito
    2. improve code review
      1. check name
      2. check duplication
      3. SOLID/Lod/DRY
    3. recommend 2 books
      1. clean code
      2. working effectively with legacy code
    4. attend onAgile virtual conference
      1. uncle bob
      2. Matin Fowler
      3. TDD/Pair programing/DevOps