What is Good Software
Design?
And why it matters?
3 Core Questions
What is software design?
What makes software design good?
How do we obtain good software design?
I work in a strange team
4 girls + 2 guys
We communicate
Learning is mandatory
@alexboly alex.bolboaca@mozaicworks.com
Caveats
This is a high level talk
Not exhaustive
I will focus on new advice
@alexboly alex.bolboaca@mozaicworks.com
Learn 3 Romanian words
Da Nu Ioi!
@alexboly alex.bolboaca@mozaicworks.com
What is software design?
What is good software design? And why it matters?
Babbage's Difference Machine
First computer programmer
Before computers existed
Weaving code by hand on boards
Increased
complexity
More
structure
Larger
code bases
Divide &
conquer
Abstractions
Cognitive
limitations
Built-in Abstractions
function doStuff()
x → x + 1
class A{}
Domain Abstractions
Speaker
Stream
Collection
OOP – How
Encapsulation
Inheritance
Polymorphism
Objects & Classes
OOP – Why?
Move complexity from
behavior to collaboration
Software Design
Managing complexity so that
the dev's brain can make sense
of the existing code
Is that it?
How about performance,
security ...
Software design means
structuring the code
so that
certain desirable
characteristics are met
What is good software design?
Definitely not art.
Ready to see some code art?
http://www0.us.ioccc.org/1990/westley.c
Desirable characteristics
Changeability
Performance
Security
Testability
Consistency
10 / 10
Aiming for:
8 / 10
8 / 10
10 / 10
8 / 10
Business benefit:
Low cost of feat.
User hapiness
Reputation
Low cost of feat.
Fast development
Good software design:
structuring the code
so that
certain desirable business
characteristics are met
Other desirable characteristics?
The users of software
design are:
programmers,
testers, ...
What is good software design? And why it matters?
Other desirable characteristics?
Navigability
Consistency
Mistake-proofing
Easy setup for new
devs
How do we obtain good software design?
Good design practices
Good designers
+
Good Design Practices
Define problem = Understand “what” is required
Understand constraints
Prototype – until you get it
Process is awesome, but not enough
http://www.alexbolboaca.ro/my-take-on/what-is-really-tdd
Educate taste
Educate sense of observation
Research
Practice
Become a better designer
Express yourself
What is good software design? And why it matters?
Example of Veja Du
cells[x + 1, y]
cells[x-1, y]
cells[x, y-1]
cells[x, y+1]
Axis!
Naming
Express yourself
Functional constructs
“Dream” your language
Will you push your limits
today as a designer?
Q&A
https://leanpub.com/
usablesoftwaredesign
Get your free copy
(limited copies)
or ...

More Related Content

PPTX
Design patterns - The Good, the Bad, and the Anti-Pattern
PPT
Bridging the virtual and the physical space : Kornelia - a chatbot for public...
PDF
Cleaning up your codebase with a clean architecture
DOC
Cv nilankar (1)
PPTX
Computer programming
PPTX
Coding Introductory Lesson Upper Elementary
PPTX
Future software-open-source-programming-languages
PDF
Data structure and algorithmic thinking with python cover
Design patterns - The Good, the Bad, and the Anti-Pattern
Bridging the virtual and the physical space : Kornelia - a chatbot for public...
Cleaning up your codebase with a clean architecture
Cv nilankar (1)
Computer programming
Coding Introductory Lesson Upper Elementary
Future software-open-source-programming-languages
Data structure and algorithmic thinking with python cover

Similar to What is good software design? And why it matters? (20)

PPTX
Software Design
PDF
A Philosophy Of Software Design John Ousterhout
PPTX
Software Engineering Unit 3 Key Concepts and Practices
PDF
A Philosophy Of Software Design Ousterhout John
PPTX
Software design (SWEBOK3 Knowledge area)
PPT
Goals Of Software Design - The main goals
PPTX
Chapter 08
PPT
Chapter 6 Software Engineering Design.ppt
PPT
Chapter 6 Design in software Engineeing.ppt
PPTX
Software design and Software engineering.pptx
DOCX
Software engg unit 3
PPTX
SE-Unit 3_Software Architecture and Design.pptx
PPTX
UNIT_III_Design Engineering, design engineering, architecture, patterns, UML ...
PPTX
Architecture and UML diagrams, types of UML diagrams, types of architecture a...
PPTX
Chapter 1 - Software Design - Introduction.pptx
PPTX
Lecture 11
PPTX
How to design a Software with methods and steps
PDF
Software design - Write solid software with the ideal chalk
PDF
cs603 ppts .pdf 222222222222222222222222
PDF
How To Win At Software - Advice for New Engineers - by Gabe Johnson
Software Design
A Philosophy Of Software Design John Ousterhout
Software Engineering Unit 3 Key Concepts and Practices
A Philosophy Of Software Design Ousterhout John
Software design (SWEBOK3 Knowledge area)
Goals Of Software Design - The main goals
Chapter 08
Chapter 6 Software Engineering Design.ppt
Chapter 6 Design in software Engineeing.ppt
Software design and Software engineering.pptx
Software engg unit 3
SE-Unit 3_Software Architecture and Design.pptx
UNIT_III_Design Engineering, design engineering, architecture, patterns, UML ...
Architecture and UML diagrams, types of UML diagrams, types of architecture a...
Chapter 1 - Software Design - Introduction.pptx
Lecture 11
How to design a Software with methods and steps
Software design - Write solid software with the ideal chalk
cs603 ppts .pdf 222222222222222222222222
How To Win At Software - Advice for New Engineers - by Gabe Johnson
Ad

More from Alexandru Bolboaca (20)

PDF
Refactor legacy code through pure functions
PDF
Design Without Types
PDF
Thinking in Functions
PDF
Raising the Bar
PDF
The Journey to Master Code Design
PDF
Functional programming in C++
PDF
Agile Technical Leadership
PDF
TDD As If You Meant It
PDF
Usable Software Design
PDF
Hidden loops
PDF
Removing structural duplication
PDF
Continuous delivery
PDF
Why You Should Start Using Docker
PDF
Pyramid of-developer-skills
PDF
Applied craftsmanship
PDF
Pyramid of-developer-skills
PDF
Stay focused
PDF
Kanban intro
ODP
Unit testing-patterns
ODP
Incremental design, simply explained
Refactor legacy code through pure functions
Design Without Types
Thinking in Functions
Raising the Bar
The Journey to Master Code Design
Functional programming in C++
Agile Technical Leadership
TDD As If You Meant It
Usable Software Design
Hidden loops
Removing structural duplication
Continuous delivery
Why You Should Start Using Docker
Pyramid of-developer-skills
Applied craftsmanship
Pyramid of-developer-skills
Stay focused
Kanban intro
Unit testing-patterns
Incremental design, simply explained
Ad

Recently uploaded (20)

DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PDF
Microsoft Office 365 Crack Download Free
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PDF
MCP Security Tutorial - Beginner to Advanced
PPTX
CNN LeNet5 Architecture: Neural Networks
PPTX
Cybersecurity: Protecting the Digital World
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
AI Guide for Business Growth - Arna Softech
PPTX
assetexplorer- product-overview - presentation
PDF
Topaz Photo AI Crack New Download (Latest 2025)
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
iTop VPN Crack Latest Version Full Key 2025
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
DNT Brochure 2025 – ISV Solutions @ D365
How to Use SharePoint as an ISO-Compliant Document Management System
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
Microsoft Office 365 Crack Download Free
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
MCP Security Tutorial - Beginner to Advanced
CNN LeNet5 Architecture: Neural Networks
Cybersecurity: Protecting the Digital World
Advanced SystemCare Ultimate Crack + Portable (2025)
Patient Appointment Booking in Odoo with online payment
Monitoring Stack: Grafana, Loki & Promtail
AI Guide for Business Growth - Arna Softech
assetexplorer- product-overview - presentation
Topaz Photo AI Crack New Download (Latest 2025)
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Trending Python Topics for Data Visualization in 2025
iTop VPN Crack Latest Version Full Key 2025
Oracle Fusion HCM Cloud Demo for Beginners
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
DNT Brochure 2025 – ISV Solutions @ D365

What is good software design? And why it matters?