Software Engineer, Master in Project Management, Software Architect, Agile Consultant and Coach

# Topics Covered #
* Professional Value and Cross-pollination
– Increase your market value
– Improve mobility
– Cross-pollinate communities and tools

* Design By Contract (from Eiffel)
– Preconditions
– Postconditions
– Class Invariants

* Test First Development (from Rust)
– Test and Production code as a single entity

* Multi-branch with exception when none match (from Eiffel and many others)
– if-then, if-then-else,
– Traditional `switch`
– Pattern matching `switch`

* Control flow structures as expression (from many functional languages)
– No need for ternary operator (e.g. from Kotlin)

* Simple and powerful DTOs (a.k.a Records and Data Classes)
– Kotlin Data Class (20015)
– Java Record (2020)
– C# Record (2020)

* AOP as DBC bridge
– Preconditions -> before
– Postconditions -> after
– Class invariants -> before and after “each”

* Garbage Collection Strategies
– JVM’s Garbage Collection Algorithms
– .NET Framework stuck in just one

* Speed vs Fragmentation
– The Gen-4th problem
– [De]Fragmentation and Speed

* Avoid common pitfalls
– Similar languages (C#, Java, …)
– Lock into single paradigm (OO, Functional, Procedural, …)
– Use only mainstream programming languages

# Motivations #
I want to introduce intermediate developers to “novel” ideas in the .NET Stack because it is the stack used by the majority of CodeCamp’s attendees.

Also I want them to understand the value of known multiple languages and paradigms in order to increase both their market value and cross-pollination of ideas between developers communities that are usually to narrow focus around their main stack, in this case C# and the .NET SDK.