Automatic constraints as a team maturity accelerator for startups

120
Automatic constraints as a team maturity accelerator for startups

Transcript of Automatic constraints as a team maturity accelerator for startups

Page 1: Automatic constraints as a team maturity accelerator for startups

Automatic constraints as a team maturity accelerator for startups

Franccedilois-Guillaume

RIBREAUFGRibreau

BringrPerformance oriented

Social Media Management

BringrLeader europeacuteen de

lengagement client en temps reacuteel

(click2chat click2call click2video community )

sold

Bringr

Developer oriented real-time monitoring and

administration service for Redis

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 2: Automatic constraints as a team maturity accelerator for startups

Franccedilois-Guillaume

RIBREAUFGRibreau

BringrPerformance oriented

Social Media Management

BringrLeader europeacuteen de

lengagement client en temps reacuteel

(click2chat click2call click2video community )

sold

Bringr

Developer oriented real-time monitoring and

administration service for Redis

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 3: Automatic constraints as a team maturity accelerator for startups

BringrPerformance oriented

Social Media Management

BringrLeader europeacuteen de

lengagement client en temps reacuteel

(click2chat click2call click2video community )

sold

Bringr

Developer oriented real-time monitoring and

administration service for Redis

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 4: Automatic constraints as a team maturity accelerator for startups

BringrLeader europeacuteen de

lengagement client en temps reacuteel

(click2chat click2call click2video community )

sold

Bringr

Developer oriented real-time monitoring and

administration service for Redis

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 5: Automatic constraints as a team maturity accelerator for startups

Bringr

Developer oriented real-time monitoring and

administration service for Redis

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 6: Automatic constraints as a team maturity accelerator for startups

Developer oriented real-time monitoring and

administration service for Redis

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 7: Automatic constraints as a team maturity accelerator for startups

LET ME TELL YOU A STORY

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 8: Automatic constraints as a team maturity accelerator for startups

A growing startup

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 9: Automatic constraints as a team maturity accelerator for startups

A growing startup

= a lot of newcomers = ever changing directions = need to move fast

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 10: Automatic constraints as a team maturity accelerator for startups

[Where How What to follow] to start

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 11: Automatic constraints as a team maturity accelerator for startups

- How to start alone a new project - Where are the conventions - What are the best practices - How can I quickly start on a new language - How to setup my dev env - How to deploy in production

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 12: Automatic constraints as a team maturity accelerator for startups

Only one quality guard

code reviews

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 13: Automatic constraints as a team maturity accelerator for startups

PROBLEM

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 14: Automatic constraints as a team maturity accelerator for startups

SOLUTION

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 15: Automatic constraints as a team maturity accelerator for startups

Letrsquos create conventions or how to add a new problem on top of another

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 16: Automatic constraints as a team maturity accelerator for startups

httpbitly1iJ27GA

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 17: Automatic constraints as a team maturity accelerator for startups

httpbitly1MmjFln

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 18: Automatic constraints as a team maturity accelerator for startups

httpbitly1iJ2BfV

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 19: Automatic constraints as a team maturity accelerator for startups

js best practices

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 20: Automatic constraints as a team maturity accelerator for startups

java code-style httpbitly1G4rjvN

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 21: Automatic constraints as a team maturity accelerator for startups

Okay

So whatrsquos the workflow now

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 22: Automatic constraints as a team maturity accelerator for startups

read conventions

write codeproduction

ready

memorise conventions

pass the code-review

Hard learning curve amp easy to forgot conventions

while writing code

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 23: Automatic constraints as a team maturity accelerator for startups

Humans are faillible

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 24: Automatic constraints as a team maturity accelerator for startups

BACK TO SQUARE ONE

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 25: Automatic constraints as a team maturity accelerator for startups

Only one quality guard

code reviews

blabla

blabla

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 26: Automatic constraints as a team maturity accelerator for startups

(

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 27: Automatic constraints as a team maturity accelerator for startups

Why not add tests tradeoff

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 28: Automatic constraints as a team maturity accelerator for startups

)

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 29: Automatic constraints as a team maturity accelerator for startups

Even with conventions Itrsquos still hard to detect issues in code-reviews

- code-style - undefined variables - misused functions - wrong types - DRYSoC respect - security - project structure - file naming

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 30: Automatic constraints as a team maturity accelerator for startups

Does conventions mean scalability

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 31: Automatic constraints as a team maturity accelerator for startups

Nope

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 32: Automatic constraints as a team maturity accelerator for startups

more feedbacks

production

more recruits

more code-reviews

human error

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 33: Automatic constraints as a team maturity accelerator for startups

more code-reviews

more feedbacks

human error

production

production

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 34: Automatic constraints as a team maturity accelerator for startups

It does not scale- learning curve is too hard - too hard for newcomers on other projects - conventions grow too fast - technology is moving faster than conventions

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 35: Automatic constraints as a team maturity accelerator for startups

SOLUTION

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 36: Automatic constraints as a team maturity accelerator for startups

Dont rely on principle rely first on automation

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 37: Automatic constraints as a team maturity accelerator for startups

AUTOMATE EVERYTHING

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 38: Automatic constraints as a team maturity accelerator for startups

Automate code-style checks

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 39: Automatic constraints as a team maturity accelerator for startups

jscs

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 40: Automatic constraints as a team maturity accelerator for startups

jscsrc

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 41: Automatic constraints as a team maturity accelerator for startups

jscs

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 42: Automatic constraints as a team maturity accelerator for startups

Automate quality-checks with static-analysis

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 43: Automatic constraints as a team maturity accelerator for startups

eslintrc

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 44: Automatic constraints as a team maturity accelerator for startups

Eslint

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 45: Automatic constraints as a team maturity accelerator for startups

Eslint

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 46: Automatic constraints as a team maturity accelerator for startups

Automate DRY-checks

with static-analysis

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 47: Automatic constraints as a team maturity accelerator for startups

JSInspect

Match - 2 instances

- domainDateRangeIntervalValueObjectjs3537 + domainMeasurementQueryValueObjectjs205207 if (_isObject(req) || req || _isObject(reqquery)) return new PrettyError(400 Invalid request)

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 48: Automatic constraints as a team maturity accelerator for startups

LETrsquoS INVENT

A NEW PRINCIPLE

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 49: Automatic constraints as a team maturity accelerator for startups

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 50: Automatic constraints as a team maturity accelerator for startups

Still

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 51: Automatic constraints as a team maturity accelerator for startups

- when amp how to run these checks - how to manage legacy code - how to talk about automated conventions - how and who choose conventions - how to be quickly up to speed with new projectsplatformlanguages

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 52: Automatic constraints as a team maturity accelerator for startups

when amp how to run these checks

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 53: Automatic constraints as a team maturity accelerator for startups

read conventions

write code production

memorise thempass

code review

before

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 54: Automatic constraints as a team maturity accelerator for startups

write code production

pass the code review

CIautomated

checks

continuous checks

after

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 55: Automatic constraints as a team maturity accelerator for startups

Letrsquos introduce

check-build (for javascript)

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 56: Automatic constraints as a team maturity accelerator for startups

httpbitly109XewR

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 57: Automatic constraints as a team maturity accelerator for startups

5SecurityFres

hness

Code styleDRYness

SyntaxGoodPractices

JSInspect

DavidNsp

httpbitly109XewR

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 58: Automatic constraints as a team maturity accelerator for startups

how to manage legacy code

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 59: Automatic constraints as a team maturity accelerator for startups

PROBLEM

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 60: Automatic constraints as a team maturity accelerator for startups

Bringr

monolith

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 61: Automatic constraints as a team maturity accelerator for startups

SOLUTION

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 62: Automatic constraints as a team maturity accelerator for startups

First donrsquot feed the damn monolith

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 63: Automatic constraints as a team maturity accelerator for startups

Bringr

Bringr Strategy

BringrImpact

Bringr

BringrSourcing

Bringr

BringrAlerts

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 64: Automatic constraints as a team maturity accelerator for startups

Then only automate checks on new code

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 65: Automatic constraints as a team maturity accelerator for startups

Bringr Strategy Bringr Impact

Bringr Backend

Bringr Sourcing Bringr Account

Bringr Alerts

Filtering

Statistics

Rules EnginePublishing

Statistics Updater

UIUIUI

Indexing

G+

Vimeo

Facebook

Youtube

Wordpres

Twitter

Notifications

only automate new code

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 66: Automatic constraints as a team maturity accelerator for startups

how to talk about automated conventions

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 67: Automatic constraints as a team maturity accelerator for startups

PROBLEM

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 68: Automatic constraints as a team maturity accelerator for startups

Automating everything can sometimes means less readable conventions amp best practices

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 69: Automatic constraints as a team maturity accelerator for startups

jscsrc

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 70: Automatic constraints as a team maturity accelerator for startups

SOLUTION

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 71: Automatic constraints as a team maturity accelerator for startups

Generate readable documentation

from automated tools

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 72: Automatic constraints as a team maturity accelerator for startups

write code production

pass the code review

CIautomated

checks

continuous checks

before

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 73: Automatic constraints as a team maturity accelerator for startups

write code production

pass the code review

CI

continuous checks

after

readable convention

automated checks

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 74: Automatic constraints as a team maturity accelerator for startups

jscsrcbefore

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 75: Automatic constraints as a team maturity accelerator for startups

httpbitly1itmabjafter

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 76: Automatic constraints as a team maturity accelerator for startups

httpbitly1itmabj

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 77: Automatic constraints as a team maturity accelerator for startups

how and who choose conventions

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 78: Automatic constraints as a team maturity accelerator for startups

Conventions should be versioned

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 79: Automatic constraints as a team maturity accelerator for startups

Debates should be around

Pull-Requests

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 80: Automatic constraints as a team maturity accelerator for startups

rdquoFGRibreau

ldquoDONrsquoT CREATE CONVENTIONS YOU CANrsquoT ENFORCE

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 81: Automatic constraints as a team maturity accelerator for startups

how to be quickly up to speed with new projectsplatformlanguages

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 82: Automatic constraints as a team maturity accelerator for startups

CI

check-build

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 83: Automatic constraints as a team maturity accelerator for startups

centralize conventions

keep settings

DRY

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 84: Automatic constraints as a team maturity accelerator for startups

Still

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 85: Automatic constraints as a team maturity accelerator for startups

You still need to explain the WHY

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 86: Automatic constraints as a team maturity accelerator for startups

We record internal talks about why we do what we do

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 87: Automatic constraints as a team maturity accelerator for startups

One last thing

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 88: Automatic constraints as a team maturity accelerator for startups

These automated principles were about code

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 89: Automatic constraints as a team maturity accelerator for startups

How to spread wider principles (eg application architecture)

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 90: Automatic constraints as a team maturity accelerator for startups

stories2

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 91: Automatic constraints as a team maturity accelerator for startups

FGRibreau

constants filesenvironme

nt variables

distributed

Simplicity Genericity

Knowing every running environments

One configuration to rule them all

CONFIGURATION

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 92: Automatic constraints as a team maturity accelerator for startups

rdquoFGRibreau

ldquoEVERY CONSTANT NUMBER BOOLEAN OR STRING SHOULD BE CONFIGURABLE

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 93: Automatic constraints as a team maturity accelerator for startups

How can we be sure developers will follow this principle

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 94: Automatic constraints as a team maturity accelerator for startups

Build base libraries Ease the learning curve Constrain by API design

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 95: Automatic constraints as a team maturity accelerator for startups

microserviceAPI

documentation

API schema

API validation

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 96: Automatic constraints as a team maturity accelerator for startups

swaggerjson-schemahapijson-api

(Pre-configured in a bootstrap project)

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 97: Automatic constraints as a team maturity accelerator for startups

Everything we just saw makes a common base

- leads the developer mindset while coding - brings developers quickly up to speed - flatten issues to cross-language concerns - being able to capitalize on amp standardize issues with an adapted tooling is a huge win

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 98: Automatic constraints as a team maturity accelerator for startups

What about non-code principles Eg github repository names

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 99: Automatic constraints as a team maturity accelerator for startups

A cron checks every days repository names If a developer makes a mistake he will be notified

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 100: Automatic constraints as a team maturity accelerator for startups

PRINCIPLES

CONVENTIONS

AUTOMATION

CONSTRAINTS

CODE

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you

Page 101: Automatic constraints as a team maturity accelerator for startups

FGRibreau

QuestionsJoin us iAdvize

Donrsquot forget to take some stickers

Thank you