Lessons from a year of

@channikhabra

June 15, 2019

TDD

Create things out of thin air
 

Put life into the inanimate
 

Bend reality to our will

Every Software is a Universe of its own

Every Software is a

Universe of its own

Every Software is a

Universe of its own

Every Software is a

Universe of its own

@RoseMakesArt

Universe of SoftwarE

The realm of men

Universe of SoftwarE

The realm of men

The realm of Tux

Universe of SoftwarE

The realm of men

The realm of Tux

Platform

Universe of SoftwarE

The realm of men

The realm of Tux

Platform

Framework

app.js

How to build thE Universe?

How to build thE Universe?

Compiler

Thoughts and prayers

Do thy bidding

BUGS

Are thoughts gone wrong

TDD

  1. Validate thoughts before they get into the system
  2. Validate translated thoughts in action

TDD

is time consuming

TDD

takes fear out of refactoring

TDD

enable tracking impact of your changes

TDD

validates how your new thoughts impact what you used to think

TDD

freed us up for

  • Deliver twice as much
  • Dev Ops
  • Creating and maintaining an admin panel
  • Contributing to other teams

TDD

is about Tests

DD  

is more important than

T

Validate your thoughts BEFORE they enter the system

Tests written after the fact are practically handicapped

TDD

means no bugs

TDD

is your last line of defense

BDD

Protect yourself from your PO

Adopt

TDD

guide developers toward best practices

Focus on what before how

Single Responsibility Principal is a must for testable code

Appreciation for DI and other design patterns

TDD

is a culture shift

Brace yourself for

  • Resistance
  • A learning curve
  • Lots of doing it wrong (if there is noone to guide)

Coverage reports are big fat liars

Things I wish we did

I wish we did

Mutation Testing

  • Because coverage Reports are big fat liars
  • Check how strong your tests actually are
  • Identify dead code/tests

I wish we

BDD

  • Catch the thoughts before they enter the system
  • Test your entire infrastructure
  • SolidSoftware = TDD + BDD
  • Make that acceptance criteria executable

early on

Adopted

A bit  AHEAD OF TDD

USE A

programming language

  • Dynamically typed languages cause more trouble than they are worth
  • Static Languages are expressive/elegant enough
  • Linting is not the answer
  • Ridiculous amount of tests can just vanish with a decent type system

proper

CTRL + S

  • No more fights for code formatting style
  • No more noise in Code Reviews

AUTO formatting is THE new

Cloud

containerize

your

already

Thank you!