Choosing a JavaScript framework is both exciting and stressful. The decision will have a large impact on both your development team and your customers for the foreseeable future, so how can you effectively decide with all of that pressure?
The best way to approach this decision is to actually take a step back and plan the architecture of your single-page web app in a way that minimizes the reliance on a web framework while still providing all the benefits of a framework.
This case study from Comcast walks through what that single-page web app architecture looks like, as well as the decision making process their web engineering teams follow when making technology decisions such as choosing a JavaScript framework, so you can successfully apply the same blueprint.
5. Future-Proofing Your JavaScript Framework Decision - @JohnRiv5
“SACRIFICIAL ARCHITECTURE”
https://martinfowler.com/bliki/SacrificialArchitecture.html
“Thinking now about
things that can make it
easier to replace when
the time comes.”
- MARTIN FOWLER
6. Future-Proofing Your JavaScript Framework Decision - @JohnRiv6
1.REDUX
2.PERPETUAL CSS
3.DEMO PAGES
4.A FRAMEWORK FOR
CHOOSING YOUR FRAMEWORK
PATTERNS & TOOLS
114. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 1 4
“WHITE AND GREY KITTEN SMELLING WHITE DAISY FLOWER” BY ALEX BARGAIN LICENSED BY PEXELS.COM
115. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 1 5
CSS:
😁 Easy to add 📈
😬 Hard to remove
SOLUTION?
TAILWIND AND…
143. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 3
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
144. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 4
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
145. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 5
AHP FUNDAMENTAL SCALE FOR PAIRWISE COMPARISONS
Intensity of
Importance
Definition Explanation
1 Equal importance Two elements contribute equally to the
objective
3 Moderate importance
Experience and judgement moderately
favor one element over another
5 Strong importance
Experience and judgement strongly
favor one element over another
7 Very strong importance
One element is favored very strongly
over another; its dominance is
demonstrated in practice
9 Extreme importance
The evidence favoring one element
over another is of the highest possible
order of affirmation
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Pairwise_comparisons
Intensities of 2, 4, 6, and 8 can be used to express intermediate values. 1.1, 1.2, 1.3, etc. can be used for elements that are very close in importance.
146. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 6
AHP PAIRWISE SCORING
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Alternatives_vs._criteria
Alternatives compared with respect to EXPERIENCE
RAMÓN 1 KATE 4
RAMÓN 4 PAUL 1
KATE 9 PAUL 1
147. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 7
AHP RECIPROCAL SCORING
EXPERIENCE RAMÓN KATE PAUL
RAMÓN 1 1/4 4
KATE 4 1 9
PAUL 1/4 1/9 1
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Alternatives_vs._criteria
148. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 8
AHP MATRIX PRIORITY CALCULATIONS
EXPERIENCE RAMÓN KATE PAUL PRIORITY
RAMÓN 1 1/4 4 0.2 1 7
KATE 4 1 9 0.7 1 7
PAUL 1/4 1/9 1 0.066
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Alternatives_vs._criteria
149. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 4 9
AHP MATRIX PRIORITY CALCULATIONS
EXPERIENCE RAMÓN KATE PAUL PRIORITY
RAMÓN 1 1/4 4 0.2 1 7
KATE 4 1 9 0.7 1 7
PAUL 1/4 1/9 1 0.066
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Alternatives_vs._criteria
150. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 0
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
0.217 0.717 0.066
151. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 1
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
152. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 2
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
EDUCATIONEXPERIENCE INTEGRITYCHARISMA
RAMÓN KATE PAUL
153. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 3
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMAEDUCATIONEXPERIENCE
RAMÓN
INTEGRITY
KATE PAUL
154. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 4
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMAEDUCATIONEXPERIENCE
RAMÓN
INTEGRITY
KATE PAUL
156. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 6
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
158. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 8
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
0.547
159. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 5 9
AHP MATRIX PRIORITY CALCULATIONS
EXPERIENCE RAMÓN KATE PAUL PRIORITY
RAMÓN 1 1/4 4 0.2 1 7
KATE 4 1 9 0.7 1 7
PAUL 1/4 1/9 1 0.066
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Alternatives_vs._criteria
160. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 0
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
0.547
0.217 0.717 0.066
161. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 1
AHP FINAL PRIORITY CALCULATIONS
EXPERIENCE PRIORITY
PRIORITY
vs. GOAL
PRIORITY with
respect to
EXPERIENCE
RAMÓN 0.2 1 7
KATE 0.7 1 7
PAUL 0.066
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
162. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 2
ANALYTIC HIERARCHY PROCESS (AHP)
Goal:
Criteria:
Alternatives:
CHOOSE THE MOST
SUITABLE LEADER
CHARISMA
RAMÓN
EDUCATIONEXPERIENCE INTEGRITY
KATE PAUL
0.547
0.217 0.717 0.066
163. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 3
AHP FINAL PRIORITY CALCULATIONS
EXPERIENCE PRIORITY
PRIORITY
vs. GOAL
PRIORITY with
respect to
EXPERIENCE
RAMÓN 0.2 1 7 0.547
KATE 0.7 1 7 0.547
PAUL 0.066 0.547
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
164. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 4
AHP FINAL PRIORITY CALCULATIONS
EXPERIENCE PRIORITY
PRIORITY
vs. GOAL
PRIORITY with
respect to
EXPERIENCE
RAMÓN 0.2 1 7 0.547
KATE 0.7 1 7 0.547
PAUL 0.066 0.547
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
x
x
x
165. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 5
AHP FINAL PRIORITY CALCULATIONS
EXPERIENCE PRIORITY
PRIORITY
vs. GOAL
PRIORITY with
respect to
EXPERIENCE
RAMÓN 0.2 1 7 0.547 0.1 1 9
KATE 0.7 1 7 0.547 0.392
PAUL 0.066 0.547 0.036
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
x
x
x
=
=
=
166. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 6
AHP FINAL PRIORITY CALCULATIONS
EXPERIENCE PRIORITY
PRIORITY
vs. GOAL
PRIORITY with
respect to
EXPERIENCE
RAMÓN 0.2 1 7 0.547 0.1 1 9
KATE 0.7 1 7 0.547 0.392
PAUL 0.066 0.547 0.036
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
x
x
x
=
=
=
167. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 7
AHP FINAL PRIORITY CALCULATIONS
CANDIDATE
PRIORITY with
respect to
EXPERIENCE
PRIORITY with
respect to
EDUCATION
PRIORITY with
respect to
CHARISMA
PRIORITY with
respect to
INTEGRITY
PRIORITY with
respect to
GOAL
RAMÓN
KATE
PAUL
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
168. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 8
AHP FINAL PRIORITY CALCULATIONS
CANDIDATE
PRIORITY with
respect to
EXPERIENCE
PRIORITY with
respect to
EDUCATION
PRIORITY with
respect to
CHARISMA
PRIORITY with
respect to
INTEGRITY
PRIORITY with
respect to
GOAL
RAMÓN 0.1 1 9
KATE 0.392
PAUL 0.036
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
169. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 6 9
AHP FINAL PRIORITY CALCULATIONS
CANDIDATE
PRIORITY with
respect to
EXPERIENCE
PRIORITY with
respect to
EDUCATION
PRIORITY with
respect to
CHARISMA
PRIORITY with
respect to
INTEGRITY
PRIORITY with
respect to
GOAL
RAMÓN 0.1 1 9 0.024 0.201 0.015
KATE 0.392 0.010 0.052 0.038
PAUL 0.036 0.093 0.017 0.004
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
170. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 0
AHP FINAL PRIORITY CALCULATIONS
CANDIDATE
PRIORITY with
respect to
EXPERIENCE
PRIORITY with
respect to
EDUCATION
PRIORITY with
respect to
CHARISMA
PRIORITY with
respect to
INTEGRITY
PRIORITY with
respect to
GOAL
RAMÓN 0.1 1 9 0.024 0.201 0.015
KATE 0.392 0.010 0.052 0.038
PAUL 0.036 0.093 0.017 0.004
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
=
=
=
+
+
+
+
+
+
+
+
+
171. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 1
AHP FINAL PRIORITY CALCULATIONS
CANDIDATE
PRIORITY with
respect to
EXPERIENCE
PRIORITY with
respect to
EDUCATION
PRIORITY with
respect to
CHARISMA
PRIORITY with
respect to
INTEGRITY
PRIORITY with
respect to
GOAL
RAMÓN 0.1 1 9 0.024 0.201 0.015 0.358
KATE 0.392 0.010 0.052 0.038 0.492
PAUL 0.036 0.093 0.017 0.004 0.149
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
=
=
=
+
+
+
+
+
+
+
+
+
172. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 2
AHP FINAL PRIORITY CALCULATIONS
CANDIDATE
PRIORITY with
respect to
EXPERIENCE
PRIORITY with
respect to
EDUCATION
PRIORITY with
respect to
CHARISMA
PRIORITY with
respect to
INTEGRITY
PRIORITY with
respect to
GOAL
RAMÓN 0.1 1 9 0.024 0.201 0.015 0.358
KATE 0.392 0.010 0.052 0.038 0.492
PAUL 0.036 0.093 0.017 0.004 0.149
https://en.wikipedia.org/wiki/Analytic_hierarchy_process_–_leader_example#Synthesizing_final_priorities
=
=
=
+
+
+
+
+
+
+
+
+
176. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 6
“WELCOME TO HANA” BY KIRT EDBLOM LICENSED BY CC BY-SA 2.0
177. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 7
“HANA BEACH PARK” BY TRAVIS THURSTON LICENSED BY CC BY-SA 3.0
178. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 8
“HANA BEACH PARK” BY TRAVIS THURSTON LICENSED BY CC BY-SA 3.0
IT’S THE
JOURNEY,
NOT THE
DESTINATION
179. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 7 9
“HANA BEACH PARK” BY TRAVIS THURSTON LICENSED BY CC BY-SA 3.0
IT’S THE
JOURNEY,
AND THE
DESTINATION
184. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 8 4
OUR JS FRAMEWORK DECISION
Option 1:
Option 2:
Option 3:
Try it with your team!
http://github.com/ComcastSamples/ahp-tool
185. Future-Proofing Your JavaScript Framework Decision - @JohnRiv1 8 5
TAKEAWAYS
• Build with a Sacrificial Architecture
• Use Redux (or similar unidirectional data flow)
• Use Tailwind with PurgeCSS
• Demo Driven Development
• Use the Analytic Hierarchy Process for decisions
LINKS
• https://redux.js.org/
• https://redux-observable.js.org/
• https://tailwindcss.com
• https://www.purgecss.com/
• http://github.com/ComcastSamples/ahp-tool
THANK YOU!
Please send comments,
questions, or feedback
to me at @JohnRiv