The Journey to Master Code Design

Alexandru Bolboaca
Alexandru BolboacaCTO at MozaicLabs, Trainer & Mentor at Mozaic Works
Journey to Master Code Design
Featuring original, not very good drawings by @alexboly
And the mandatory lolcatz
Remember the last time you enjoyed programming
What is good design and
why it matters?
This is a sequel
https://www.youtube.com/watch?v=yGJwPiIOf_8
The Journey to Master Code Design
How many of you design code?
How many of you design other things (UI, UX,
visual …)?
How many of you know designers from other
domains?
The Journey to Master Code Design
Perspective 1
We solve problems.
Most times we use code,
because it’s the
“prototyping” material we
know best
Perspective 2
We can learn from other
designers and design
practices: UX, industrial
design, service design,
visual design etc.
Perspective 3
Design is an old
discipline.
We can learn from its
tradition and practices
We will focus beyond
● Clean code
● SOLID principles
● TDD
● DDD
● 4 Elements of Simple Design
● Naming
How I designed 17 years ago
How I usually design today
Hidden assumption
Intuition ~= Satisficing
How do other designers design?
How I Learned Software Design
I haz made
mistakes
How do other designers learn
design?
● Design studies
● Design school
What if ...
We can haz
same for us!
How do you make design decisions?
Driver – Documenter
Driver writes all code
Documenter asks questions and builds a
decision map
The Journey to Master Code Design
Design Studies
The Journey to Master Code Design
The Journey to Master Code Design
The Journey to Master Code Design
Louis XVI chair, neoclassicism
The NV45 chair, Finn Juhl, 1945
The two-part shell chair, Hans J. Wegner, 1963
The Bow chair, Grete Jalk, 1963
Panton chair, 1960- Modernism
Moku chair, Cecilie Manz, 2016
Jake Cress – Animated furniture
The Journey to Master Code Design
Design Studies
Take a problem
Implement multiple solutions
Take these solutions further than a kata
Two types of design studies
● Compare specific techniques
– Immutable code vs. mutable code
– Single thread vs. concurrent
– Functional vs. OOP
● Compare different design qualities
– Performance vs. changeability vs. scalability vs.
security
Let’s see examples!
https://codedesigner.eu/
Pacman & Property based
testing
Constraints: immutability, pure functions, no nulls
https://github.com/alexboly/pacmanKataPropertyBasedGroovy/
Pacman C++
Church encoding C++
https://github.com/alexboly/ChurchEncodingCpp
Constraints:
Everything as
function
Great for exploring
functional support in
multiple languages
Composability
`
https://github.com/alexboly/composabilityDesignStudy
React State Design Study
https://hackernoon.com/the-react-state-museum-a278c726315
Self-contained processes as
microservices
https://github.com/MozaicWorks/SelfContainedProcessesAsMicroservicesDesignStudy
Idea: XML Parser
● Subset of features
● Design quality constraints:
– Optimize memory
– Optimize speed
– Optimize processing of large files
– Changeability: easily add another element type
● Compare your implementations with existing
ones
Idea: Database engine
● Features: multiple types, can read, update,
delete data; no SQL support
● Possible quality constraints:
– Fast reads / fast writes
– Parallel access
– Changeability: easily add another type
● Compare with mysql, postgresql etc.
Idea: Tetris game
● Full featured
● Design qualities ideas:
– Changeability: plug in different interfaces: console,
opengl, 2d graphics, web, etc.
– Performance: measure and optimize fps
More ideas for design studies:
https://github.com/MozaicWorks/SoftwareDesignStudies
Software Design Schools
Workshops on techniques
+
Design Studies
+
Community
The Journey to Master Code Design
Recap
The Journey to Master Code Design
https://leanpub.com/usablesoftwaredesign
1 of 49

Recommended

Brief Introduction to Spectacular by
Brief Introduction to SpectacularBrief Introduction to Spectacular
Brief Introduction to SpectacularMichael Dowling
457 views9 slides
A Ruby Conference Overview (by a Non-Ruby Programmer) by
A Ruby Conference Overview (by a Non-Ruby Programmer)A Ruby Conference Overview (by a Non-Ruby Programmer)
A Ruby Conference Overview (by a Non-Ruby Programmer)Crystal Stephan
518 views45 slides
Designers and Coders: why can’t we be friends? by
Designers and Coders: why can’t we be friends?Designers and Coders: why can’t we be friends?
Designers and Coders: why can’t we be friends?itnig
482 views11 slides
13. Objects II by
13. Objects II13. Objects II
13. Objects IIJoseph Murphy
213 views10 slides
API Strategy: The Next Generation by
API Strategy: The Next GenerationAPI Strategy: The Next Generation
API Strategy: The Next GenerationPaul Bruce
333 views30 slides
HTML Prototyper's Toolbox by
HTML Prototyper's ToolboxHTML Prototyper's Toolbox
HTML Prototyper's ToolboxJon Hadden
425 views25 slides

More Related Content

Similar to The Journey to Master Code Design

Alice Phieu - UI/UX For Developers by
Alice Phieu - UI/UX  For DevelopersAlice Phieu - UI/UX  For Developers
Alice Phieu - UI/UX For DevelopersAlice Phieu
561 views37 slides
Usable Software Design by
Usable Software DesignUsable Software Design
Usable Software DesignAlexandru Bolboaca
445 views83 slides
Design and Code. Work should be fun. by
Design and Code. Work should be fun.Design and Code. Work should be fun.
Design and Code. Work should be fun.Андрей Вандакуров
322 views16 slides
Software Engineering Primer by
Software Engineering PrimerSoftware Engineering Primer
Software Engineering PrimerGeorg Buske
46 views72 slides
C# .NET - Um overview da linguagem by
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
832 views42 slides
Exploring design-alternatives-using-tdd by
Exploring design-alternatives-using-tddExploring design-alternatives-using-tdd
Exploring design-alternatives-using-tddAlexandru Bolboaca
573 views30 slides

Similar to The Journey to Master Code Design(20)

Alice Phieu - UI/UX For Developers by Alice Phieu
Alice Phieu - UI/UX  For DevelopersAlice Phieu - UI/UX  For Developers
Alice Phieu - UI/UX For Developers
Alice Phieu561 views
Software Engineering Primer by Georg Buske
Software Engineering PrimerSoftware Engineering Primer
Software Engineering Primer
Georg Buske46 views
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is by Rehgan Avon
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Rehgan Avon150 views
Evolutionary Design - NewCrafts Paris 18 May 2018 by Adi Bolboaca
Evolutionary Design - NewCrafts Paris 18 May 2018Evolutionary Design - NewCrafts Paris 18 May 2018
Evolutionary Design - NewCrafts Paris 18 May 2018
Adi Bolboaca2.6K views
TDD - Seriously, try it! - Opensouthcode by Nacho Cougil
TDD - Seriously, try it! - OpensouthcodeTDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - Opensouthcode
Nacho Cougil25 views
Design Thinking for Requirements Engineering by Daniel Mendez
Design Thinking for Requirements EngineeringDesign Thinking for Requirements Engineering
Design Thinking for Requirements Engineering
Daniel Mendez1.6K views
Building an Open Source iOS app: lessons learned by Wojciech Koszek
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
Wojciech Koszek458 views
The Role of Testing in DevOps by Uberto Barbini
The Role of Testing in DevOpsThe Role of Testing in DevOps
The Role of Testing in DevOps
Uberto Barbini369 views
Effective entrepreneurship for developers by Carlos Ble
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developers
Carlos Ble963 views
TDD - Seriously, try it! - Bucarest Tech Week by Nacho Cougil
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
Nacho Cougil19 views
Open Minded? Software Engineer to a UX Engineer. Ask me how. by Micael Diaz d... by DEVCON
Open Minded? Software Engineer to a UX Engineer. Ask me how. by Micael Diaz d...Open Minded? Software Engineer to a UX Engineer. Ask me how. by Micael Diaz d...
Open Minded? Software Engineer to a UX Engineer. Ask me how. by Micael Diaz d...
DEVCON 889 views
What would Jesus Developer do? by Lukáš Čech
What would Jesus Developer do?What would Jesus Developer do?
What would Jesus Developer do?
Lukáš Čech31 views

More from Alexandru Bolboaca

Refactor legacy code through pure functions by
Refactor legacy code through pure functionsRefactor legacy code through pure functions
Refactor legacy code through pure functionsAlexandru Bolboaca
350 views78 slides
Design Without Types by
Design Without TypesDesign Without Types
Design Without TypesAlexandru Bolboaca
152 views58 slides
Thinking in Functions by
Thinking in FunctionsThinking in Functions
Thinking in FunctionsAlexandru Bolboaca
318 views59 slides
What is good software design? And why it matters? by
What is good software design? And why it matters?What is good software design? And why it matters?
What is good software design? And why it matters?Alexandru Bolboaca
281 views39 slides
Functional programming in C++ by
Functional programming in C++Functional programming in C++
Functional programming in C++Alexandru Bolboaca
781 views64 slides
Agile Technical Leadership by
Agile Technical LeadershipAgile Technical Leadership
Agile Technical LeadershipAlexandru Bolboaca
430 views40 slides

More from Alexandru Bolboaca(20)

What is good software design? And why it matters? by Alexandru Bolboaca
What is good software design? And why it matters?What is good software design? And why it matters?
What is good software design? And why it matters?
Alexandru Bolboaca281 views

Recently uploaded

DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove... by
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...Deltares
17 views17 slides
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ... by
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...marksimpsongw
76 views34 slides
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 by
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Icinga
38 views17 slides
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... by
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Donato Onofri
711 views34 slides
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...Deltares
9 views32 slides
SUGCON ANZ Presentation V2.1 Final.pptx by
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptxJack Spektor
22 views34 slides

Recently uploaded(20)

DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove... by Deltares
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
Deltares17 views
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ... by marksimpsongw
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
marksimpsongw76 views
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 by Icinga
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Icinga38 views
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... by Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri711 views
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares9 views
SUGCON ANZ Presentation V2.1 Final.pptx by Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor22 views
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... by Deltares
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
Deltares9 views
Roadmap y Novedades de producto by Neo4j
Roadmap y Novedades de productoRoadmap y Novedades de producto
Roadmap y Novedades de producto
Neo4j50 views
Advanced API Mocking Techniques by Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary19 views
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares11 views
Tridens DevOps by Tridens
Tridens DevOpsTridens DevOps
Tridens DevOps
Tridens9 views
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida by Deltares
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - PridaDSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
Deltares18 views
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM... by Deltares
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
Deltares7 views
DSD-INT 2023 FloodAdapt - A decision-support tool for compound flood risk mit... by Deltares
DSD-INT 2023 FloodAdapt - A decision-support tool for compound flood risk mit...DSD-INT 2023 FloodAdapt - A decision-support tool for compound flood risk mit...
DSD-INT 2023 FloodAdapt - A decision-support tool for compound flood risk mit...
Deltares13 views
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... by Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller38 views
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut... by HCLSoftware
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
HCLSoftware6 views

The Journey to Master Code Design