Architecture
Theory
Tyler Graf
Senior Web Dev
Tree Team


Architectural Myth
Developer
Architect


Architectural Truth
Developer
Architect
Architect


Muscle Mass === Responibility
All Developers are Architects
Component
App
Set of Apps
Website
Real-world Architect ≠ Software Architect
- Design EVERYTHING up front
- Do not construct
- Building lasts a long time without changes
Architect
Gardener
Architect
Town Planner
Architect

What is the Role of an Architect?
(Within your scope)
All Developers are Architects
The single architect is a servant leader, there to make sure all developers are competent architects who understand and consider architectural issues as they work.
Main design responsibility
Assure coherence across the system
The architect is the expert, but also the coordinator, teacher and mentor.
So you want to be an Architect?

A Good Architect:
Skilled Coder
Design Patterns
Conferences
Network w/ Architects
Read Code
Write Code
Communication Skills
Presentation Skills
Look at open source software well enough to understand it's pros and cons architecturally


Hey
OK
Architects know how to ask the right questions

- Talk to developers to understand problems
-
Talk to product managers to understand requirements
- Research public packages and services to see if there's an open source or paid solution
- See how others in the community are solving it
Problem Solver
Build an Architecture System Over and Over


Allen Holub
Gretchen's Cookbook




~600
Recipes
PHP (2008)
PHP (2008)

Linux Server

- server admin
- linux
- php
- mysql
- queries
- url query params
- domain registration
- cname
- html
- css
- jquery
- ux

Rails (2009)
Rails (2009)

Linux Server
- ruby
- rails
- jquery
- social sharing
- pre-pwa
- media queries
- svn
- ssh


Angular (2012)

Angular (2012)

cookbook-api.herokuapp.com
- heroku
- git
- node
- express
- rest
- mongo
- mongoose
- angular 1
- xhr


gretchenscookbook.com
Polymer 1 (2015)

Polymer 1 (2015)

- nosql
- firebase
- pwa
- service worker
- real time db
- polymer 1
- performance

gretchenscookbook.com
Polymer 2 (2017)
PWA, node, mongo

Polymer 2 (2017)

cookbook-api.herokuapp.com
- Polymer 2
- offline
- performance
- ES Modules
- Auth

gretchenscookbook.com

Lit (2019)

React (2021)

Architects make

It's OK to be wrong
It's OK to change your mind
A Good Idea

Tower blocks in Great Britain
Lit

React


Angular
Polymer
Frontier Controls
Sunk Cost Fallacy
Even if we spent 100K on a thing and it's the wrong solution, we shouldn't spend time blaming people, we should just move forward with the right solution.
Agile Manifesto
Responding to change over following a plan
Don't plan out 10 years
2-3 is plenty
Ivory
Tower
Architects should experience the hard parts
Example from Erik Dörnenburg
Frontend
Backend
ESB
id
Example from Erik Dörnenburg
Frontend
Backend
ESB
id
id
id
id
id
data
data
data
data
data
Surreal Architecture
Surreal Architecture
components
App Shell
Service
axios
local cache
Thanks Joey Cozza
"I don't think there's an architect or developer that can claim they intuitively understand the web of dependencies and actually grok them."
-Erik Dörnenburg
Collaboration
Always develop/review your architecture with someone else

Alternate Spouses
zion-user

Reviewing Architecture
-
Use your experience to guide
-
Don't nitpick
-
If you hate 8 things in a PR, pick 1 or 2
import React, { useState, useEffect } from "react";
export default function MyComponent({ value }) {
const [thing1, setThing1] = useState();
const [thing2, setThing2] = useState();
const [thing3, setThing3] = useState();
useEffect(() => {
setThing1(value + 1);
}, [value]);
useEffect(() => {
setThing2(thing1 + 1);
}, [thing1]);
useEffect(() => {
setThing3(thing2 + 1);
}, [thing2]);
return (
<ul>
<li>{thing1}</li>
<li>{thing2}</li>
<li>{thing3}</li>
</ul>
);
}
import React from "react";
export default function MyComponent({ value }) {
const thing1 = value + 1;
const thing2 = thing1 + 1;
const thing3 = thing2 + 1;
return (
<ul>
<li>{thing1}</li>
<li>{thing2}</li>
<li>{thing3}</li>
</ul>
);
}
Your architectural decisions will affect others
Your architectural decisions will affect others
Ask for feedback!
Be considerate.
Be teachable.
Study References

Architecture Theory
By Tyler Graf
Architecture Theory
- 782