Practice Exercises

Software economics book resources

Sorry for the mess! This version is just a first draft ;-)

Note: Constrains extracted from [code retreat activity catalog](- http://archive.coderetreat.org/facilitating/activity-catalog)

Design as cost reducer

Factoring code

Constraints

  • no naked primivives
  • no conditional statements
  • every method must be void (tell! dont’t ask!!)
  • no loops
  • Verbs instead of Nouns
  • Object calisthenics y reglas de formateo estéticas (clean code y oop)
  • https://codurance.com/2017/10/12/functional-calisthenics/
  • only four lines per method
  • immutable only

Techniques

  • CRC Cards
  • SOLID
  • OOP/FP

Katas

  • Parnas (Paper only)
  • http://kata-log.rocks/solid-principles
  • https://github.com/SoftwareEconomics/primary-ports-kata (verticales, cqrs, etc)
  • Kata log, kata static site
  • https://dzone.com/articles/openclosed-principle-kata

Refactoring code

Constraints

Techniques

Katas & exercises

  • https://bitbucket.org/bunt_formacion/gildedrose
  • Trivia Legacy Code Retreat
  • http://blog.thecodewhisperer.com/permalink/surviving-legacy-code-with-golden-master-and-sampling
  • https://franiglesias.github.io/quotebot-kata/
  • https://github.com/sandromancuso/trip-service-kata
  • https://github.com/emilybache/Tennis-Refactoring-Kata
  • https://github.com/emilybache/Yatzy-Refactoring-Kata
  • https://github.com/emilybache/Parrot-Refactoring-Kata

Test Driven Development

Constraints

  • ping pong, mute ping pong, evil coder, navigator-driver
  • Rules of uncle bob

Techniques

  • test first
  • assert first

Katas

  • https://github.com/jamesshore/tdd-intro/
  • String calculator
  • http://codingdojo.org/KataCatalogue/
  • https://github.com/gamontalvo/awesome-katas
  • http://codingdojo.org/kata/
  • Test doubles: https://github.com/SoftwareEconomics/primary-ports-kata

Delivery and lost opportunities

Emergent design

Constraints

  • TDD as if you meant it
  • https://xp123.com/articles/tdd-tcr-commits/
  • https://8thlight.com/blog/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html
  • Really baby steps (five minutes)

Techniques

  • The four rules of simple design

Katas & exercises

  • https://github.com/SoftwareEconomics/primary-ports-kata

Outside-in

Constraints

Techniques

  • doubles (mocks, fakes, inmemory, etc)

Katas & exercises

  • https://github.com/SoftwareEconomics/primary-ports-kata
  • http://kata-log.rocks/outside-in

Early value, low risk coding techniques

Constraints

  • baby steps (five minutes)
  • append only
  • automatic refactoring only

Techniques

  • Endeudarse
  • Branch abstraction, cambio en paralelo, feature toggles
  • plantear solución con papel y boli

Katas & exercises