Simple Systems

Diverse Teams

“Share our love for creating incredible internet things”

– SitePoint

“We should be able to hire anyone who shares our love for creating incredible internet things”

– My Boss

“We should be able to hire anyone who shares our love for creating incredible internet things”

– My Boss

As lead frontend developer making that happen is my job.

The Business Value

  • Seniors are hard to find
  • Juniors cost less in salary
  • Diversity + perspectives​
  • A system optimized for
    juniors is also optimized
    for seniors

Right, Okay... What now?

Well, we have learned

some lessons

Well, we have learned

some lessons

A good code base is the responsibility of everyone

A concept of correctness is extremely important

Correctness
----------------------
Convention
----------------------
Configuration

The correct way needs to

be the easiest way

Violations of correctness should teach the developer how to implement the things correctly

Composition
----------------------
Inheritance

Composition is the

key to simplicity

Declarative
----------------------Imperative

Immutability
----------------------
Mutability

Treat everything as a snowflake

Until you have done the same thing enough times to hate it

Truly truly truly hate it

Fast feedback loops

Invariants

  
  x === reverse(reverse(x));

Generative testing


  testcheck.check(testcheck.property(
      [ gen.array(gen.any) ],
      function checkReverse(x) {
          return x === reverse(reverse(x));
      }
  ));

Mistakes are only bad if they make it to production

Small incremental steps in a positive direction

Qualitative A/B test

code implementations

Encourage experimentation

and innovation

Links

  • Slides:                                http://slides.com/jameshunter/deck-5
  • Book:                                  http://learnyouahaskell.com/
  • Simple Made Easy:     http://www.infoq.com/presentations/Simple-Made-Easy
  • Generative testing:   https://wiki.haskell.org/Introduction_to_QuickCheck2
  • Generative testing:   https://github.com/leebyron/testcheck-js
  • Immutable-js:               https://github.com/facebook/immutable-js
  • Immutable-js:               https://www.youtube.com/watch?v=I7IdS-PbEgI
  • Twitter:                            James Hunter @cccc00
Made with Slides.com