dylan@dylanbeattie.net
@dylanbeattie
https://dylanbeattie.net
From: The Boss
To: Dylan
Subject: Change of job role
Dear Dylan,
This is to confirm your change of job role to Systems Architect, effective
immediately. You are now responsible for architecture, architecting,
doing architect stuff, systems architecture, and architecting systems.
Congratulations on your new role!
Kind regards,
Your Boss
Change of Job Role
ARCHITECT
LAUNCH
PIPELINE
BUS
PYTHON
CRASH MOUSE
LAU
ASH MOUSE
https://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/
https://franklloydwright.org/site/fallingwater/
https://commons.wikimedia.org/wiki/File:Margaret_Hamilton_1989.jpg
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
“Computer architecture, like
other architecture, is the art of
determining the needs of the
user of a structure and then
designing to meet those needs
as effectively as possible within
economic and technological
constraints.”
- Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
https://www.pcworld.com/article/258989/the_ibm_ps_2_25_years_of_pc_history.html
https://winworldpc.com/product/microsoft-visual-bas/10
https://www.arnnet.com.au/slideshow/557401/pictures-visual-history-netscape-navigator/
“The stuff
that’s hard
to change”
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
“Computer architecture, like
other architecture, is the art of
determining the needs of the
user of a structure and then
designing to meet those needs
as effectively as possible within
economic and technological
constraints.”
- Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
“Computer architecture, like
other architecture, is the art of
determining the needs of the
user of a structure and then
designing to meet those needs
as effectively as possible within
economic and technological
constraints.”
- Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
“Computer architecture, like
other architecture, is the art of
determining the needs of the
user of a structure and then
designing to meet those needs
as effectively as possible within
economic and technological
constraints.”
- Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
“Computer architecture, like
other architecture, is the art of
determining the needs of the
user of a structure and then
designing to meet those needs
as effectively as possible within
economic and technological
constraints.”
- Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
“Computer architecture, like
other architecture, is the art of
determining the needs of the
user of a structure and then
designing to meet those needs
as effectively as possible within
economic and technological
constraints.”
- Fred Brooks: "Planning a Computer System: Project Stretch”, 1962.
?
? ?
Rene Descartes
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
[…]
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Principles behind the Agile Manifesto
We follow these principles:
[...]
The best architectures, requirements, and designs
emerge from self-organizing teams.
[Slide: the iPhone 1]
NewShiny.js!
https://www.dailytarheel.com/article/2016/03/founding-uncs-computer-science-department-was-an-experiment-but-it-paid-off-for-fred-
ARCHITECTURE:
1. determine user needs
2. meet those needs
3. within economic and
technological constraints.”
SOFTWARE
ARCHITECTURE
IN THREE EASY
STEPS
Make Decisions
Communicate Decisions
Reinforce Decisions
HOW TO MAKE DECISIONS
https://www.flickr.com/photos/leviathana/88146176
1. What Have You Got?
Understand your Existing Technology
Vasyatka1 / CC BY-SA 4.0 / https://commons.wikimedia.org/wiki/File:Munich_Airport_T1_L4_passport_controls.jpg
WEBSITE
THE
INTERNET
HTTP
“I don’t care
about what
anything was
DESIGNED to do
– I care about
what it CAN do.”
Gene Kranz, NASA
Mission Director, Apollo 13
2. What Do You Need?
Asking the Right Questions
3. What Can You Build?
Understand your Capabilities
davetoaster / CC BY 2.0 / https://www.flickr.com/photos/dfoster/3722602616/
4. What Can You Buy?
Look for platform-as-a-service and software-as-a-service solutions
If you can't sell it – buy it.
Never use Powershell when
you could use Mastercard.
5. What Can You Lose?
Look for Redundancies and Duplication
Whatleydude/CCBY2.0/https://www.flickr.com/photos/whatleydude/3862398238
DECIDE WHAT TO DO
(The easy part)
COMMUNICATING
DECISIONS
DESIGN YOUR SOLUTION
https://theconcourse.deadspin.com/a-brain-meme-in-the-wild-1795721849
https://funnyjunk.com/Ikea+instructions/funny-pictures/5557042/
The Problem With
Diagrams
17:21:00
Mercutio
Norman Mandrill
Excelsior JK6GB87M$
Mercutio
Norman Mandrill
Excelsior JK6GB87M$
Key to Yourdon/DeMarco notation
Database or Filesystem
Function
Data Flow
Input / Output
“Mercutio”
(.NET service
that populates
email
templates)
“Norman”
(.NET app
that sends
emails)
“Mandrill”
(Mailchimp
SMTP relay
service)
“Excelsior”
(SQL Server
database of
customer details)
JK6GB87M$
(Windows file share
with Marketing email
templates)
Key to Yourdon/DeMarco notation
Database or Filesystem
Function
Data Flow
Input / Output
Key to Yourdon/DeMarco notation
Database or Filesystem
Function
Data Flow
Input / Output
“Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
“Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
“Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
“Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
Key
SQL Database
Windows Service
SMTP email relay
ADO.NET records
Network fileshare
SMB File share
RabbitMQ
SMTP
“Mandrill”
(Mailchimp SMTP
relay service)
“Excelsior”
(SQL Server database
of customer details)
Key
SQL Database
Windows Service
SMTP email relay
ADO.NET records
“Mercutio”
(.NET service that
populates email
templates)
“Norman”
(.NET app that
sends emails)
JK6GB87M$
(Windows file share
with Marketing email
templates)
Network fileshare
SMB File share
RabbitMQ
SMTP
.txt & .html files.
(Windows
authentication
required.)
ADO.NET
Windows
authentication
via Mercutio
service account
RabbitMQ
(SAAS hosted
on CloudAMQP)
SMTP
Port 993
TLS enabled
Mercutio
(Core Logic)
EntityFramework
Data Adapter
“Excelsior”
(Customer
Database)
ICustomerDataPort
ITemplatePort
FileSystem
Template
Adapter
Windows
File
Share
IMailSender
RabbitMQ Mail
Adapter
(implementation)
Mercutio
Entity
Framework
Data
Provider
“Excelsior”
(Customer
Database)
Windows
File Share
RabbitMQ
Mandrill
(SMTP relay
component)
REINFORCING
DECISIONS
VALIDATION
(are we building the right thing?)
VERIFICATION
(are we building the thing right?)
[restroom, pissoir]
I’VE REVIEWED YOUR C# CODE AND
I STILL DON’T KNOW WHAT IT DOES.
Dude. My team
switched to Haskell.
…two years ago.
public class CustomerRepo {
public CustomerRepo(IdentityMap<Customer> map) {
this.map = map;
}
public Customer GetCustomer(int customerId) {
return map.FindById(customerId);
}
}
API SERVER API CLIENT
{fake JSON} {spec tests}
API SERVER API CLIENT
{fake JSON} {spec tests}
Дякую! @dylanbeattie
dylan@dylanbeattie.net
https://dylanbeattie.net

Dylan Beattie "Architecture: The Stuff That's Hard to Change"