Code Foresting

Sebastian Gebski

What to
expect?

#architecture #dotnet
#governance #fsharp
#continuousinspection
#ndepend #typeproviders
#automation #powershell
#roslyn #livingdocumentation

Who am I?

Sebastian Gębski

 

I lead software-based products' delivery.

#lean #dddesign #dotnet #elixir #webdev

@liveweird

https://no-kill-switch.ghost.io

Once upon
a time ...

Architecture

Governance

"Architecture
  is a belief system."

Ralph Loura (CIO of Clorox)

Why is it so
difficult?

 

 

* forget or DGAF
* siege mentality
* misaligned goals
* deadline pressure
* personal ambitions (ego)
​* different past experience

Rashomon
Effect

  • subjective VS objective

  • opinions VS facts

  • ​what is good enough?

Hell is

paved with

Assumptions

Theory of
Architecture Governance

Communication

>>>

Anything Else

1 Sergeant == 3 Generals

Split the
Ownership

Secure the
perimeter

Form follows
function

"Dowieraiaj, no prowieriaj"

Feliks Dzierzynski

Two key strategies

* validate afterwards
* constrain up-front

Code Foresting

The Ideas Behind

Swarm with robots

Architecture

Code

Docs

Fast Feedback

Pillars of Code Foresting

1.  Secure the Perimeter

2.  Communication

3.  Expressive Code (with Metadata)

4.  Convention Testing

5.  Living Documentation

Continuous
Inspection

1/5. Secure the Perimeter

Priorities & concepts

* Reference Models
* Code-level separation
* Manage dependencies
* Decommission over the time

Cake

* doesn't kill "VS DX"
* integrates with all IDEs
* scriptable in C#
* modular (plenty of add-ins, supporting tools)

2/5. Communication

Priorities & concepts (1/2)

* Values & principles!
* Transparency + Information radiators
* Syncs & check-ups

Priorities &

concepts (2/2)

* Vertical communication
* Multi-dimensional Leadership :D
* Understanding of Tech Lead role
* publish as early as possible

3/5. Expressive
Code

* metadata (code, DB)
* syntactical constructs 

4/5.
Convention
Testing

Priorities
& Concepts

* naming conventions
* coupling, dep. mgmt
* component isolation
* boundaries respected

NDepend

* proprietary tool (licenses!)
* .NET-focused
* produces report + artifacts
* provides flexible CQL(inq)
* limited capabilities in terms of metadata

* OSS-ed Platform SDK with rich API
* very low-level
* constructs for both analyzers & mutators

5/5. Living Documentation

Priorities & Concepts (1/2)

* minimal "threshold"
* no formal structures, nothing is final
* no "approval" process, trace changes

Priorities & Concepts (2/2)

* evergreen
* a side-effect of work
* generate from metadata
* generate from code
* tests as documentation

DocFx

* origin, who created
* .NET-friendly
* documentation generated from API
* MD support (articles)
* static content embedded
* self-hosted or just static bundle

Gluing it all AKA
Continuous Inspection

Priorities & Concepts (1/2)

* early detect issues
* track issues in time
* radiate issues out

Priorities & Concepts (2/2)

* notify interested people
* even block CI loop
* make documentation evergreen

* scripting -> PowerShell
* data exchange -> Type Providers
* NDepend/Roslyn -> F#
* input -> Argu

Epilogue

Sebastian Gębski

@liveweird

https://no-kill-switch.ghost.io

Made with Slides.com