SlideShare a Scribd company logo
1 of 22
Download to read offline
Look ma, No Frameworks
Pablo Chacin
Motivation
So, you are a
Java developer?
What frameworks
do you use?
I don’t use any
framework
What’s wrong with frameworks?
This is not (only) a rant
against frameworks,
but an analysis of the
consequences of using
them and a proposal
for alternatives.
Frameworkitis
“Is the disease that
a framework wants
to do too much for
you or it does it in a
way that you don't
want but you can't
change it”
Erich Gamma
“We might have been able to use
Ruby on Rails. But It also adds a
bunch of requirements for stuff you
then have to write
so everything will
work nicely with
your framework”
Node at LinkedIn: The Pursuit of Thinner, Lighter, Faster
Unneeded Stuff
Easy Yet Complex
“Many complicating
constructs are easy
to use. However,
what matters is the
complexity they yield.
And such complexity
is incidental to the
problem”
Rich Hickey, author of Clojure
Power Requires Discipline
“And because you
stand on the shoulders
of giants, you can
accomplish something
quickly. You don’t even
know exactly what you
have done.”
Dr. Ian Malcolm
Restriction in Choices
“Why did I leave .NET?
In short, it constrained
our ability to choose and
turned our focus towards
safety instead of helping
us experience all of the
possibilities out there”
Jonathan Oliver, Why I left .Net
Design as Learning
“While we all need to
write code that others
can use and maintain, I
hope part of that
process involves trying
to increase our
collective knowledge”
James Coglan
“How do you teach
magic to junior
developers?”
Greg Young, 8 lines of code
The Problems with Magic
Why Agile Development won’t help
“Software gets about 10x
bigger each decade. So while
our attention has been
focused on fixing process
problems, our software got an
order of magnitude bigger. In
my opinion, it's time to turn
our attention back to design.”
George Fairbanks, Just Enough
Software Architecture
Hints for a Solution
Create a vision
Follow a risk driven
design process
Document relevant
elements in a
meaningful way
Define your Style
Provide
a vocabulary
to describe
your system
and reason about
its properties.
Unix’s Pipe Style
Write programs that
do one thing well
and work together
by handling text
streams as a
universal interface.
The problem with styles
Msg. Passing EventsPipes Micro Services
(a.k.a SOA)
OOP
Document Relevant Structure
Follow a Risk-Driven Process
Identify risks due to
project, team, or
technology factors
Architect until main
risks are covered
Risk storming
Technical risk
(failures, data
inconsistency,
incompatibilities, ...)
Stakeholder’s
concerns (cost, time,
performance,...)
Architecturally-Evident Code
Close the model-
code gap by
adopting an
architecturally-
evident coding style,
embedding in code
hints about design
intent
Conclusions
“Life is pain. Anyone
saying differently is
selling something”
Iñigo Montoya
Questions? … Thanks!
Acknowledgements
1. Keep calm.., source: http://www.keepcalm-o-matic.co.uk/
2. Iñigo Montoya, source http://velvetgeek.com/
3. Architecture Documentation, Code naming example,
source http://www.codingthearchitecture.com/
4. Risk Storming, source http://www.doyoubuzz.
com/michael-keeling/cv/blog
5. Node at LinkedIn: The Pursuit of Thinner, Lighter, Faster,
source http://queue.acm.org/detail.cfm?id=2567673

More Related Content

Similar to Look ma, No Frameworks - Concise

Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpTony Bibbs
 
Selecting the Best Javascript Web Framework
Selecting the Best Javascript Web FrameworkSelecting the Best Javascript Web Framework
Selecting the Best Javascript Web FrameworkRajitha Pathiraja
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails PresentationPaul Pajo
 
corporateJavascript
corporateJavascriptcorporateJavascript
corporateJavascriptclimboid
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDave Malouf
 
Clean code quotes - Citações e provocações
Clean code quotes - Citações e provocaçõesClean code quotes - Citações e provocações
Clean code quotes - Citações e provocaçõesAndré de Fontana Ignacio
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
 
UserTesting 2016 webinar: Research to inform product design in Agile environm...
UserTesting 2016 webinar: Research to inform product design in Agile environm...UserTesting 2016 webinar: Research to inform product design in Agile environm...
UserTesting 2016 webinar: Research to inform product design in Agile environm...Steve Fadden
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemGiovanni Asproni
 
UX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The UglyUX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The UglyJoshua Randall
 
Douglas - Real JavaScript
Douglas - Real JavaScriptDouglas - Real JavaScript
Douglas - Real JavaScriptd0nn9n
 
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web ApplicationsWhat Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web ApplicationsTodd Hoff
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotesEudris Cabrera
 
So Many Frameworks, So Little Time
So Many Frameworks, So Little TimeSo Many Frameworks, So Little Time
So Many Frameworks, So Little TimeRichard Lord
 
No Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software EngineeringNo Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software EngineeringAditi Abhang
 
2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and WebMarco Parenzan
 
Small team scrum and kanban
Small team scrum and kanbanSmall team scrum and kanban
Small team scrum and kanbanDavid Daniel
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software ArchitectureSimon Guest
 
No more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and AzureNo more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and AzureMarco Parenzan
 
Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best PracticesSupun Dissanayake
 

Similar to Look ma, No Frameworks - Concise (20)

Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
 
Selecting the Best Javascript Web Framework
Selecting the Best Javascript Web FrameworkSelecting the Best Javascript Web Framework
Selecting the Best Javascript Web Framework
 
Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
corporateJavascript
corporateJavascriptcorporateJavascript
corporateJavascript
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 
Clean code quotes - Citações e provocações
Clean code quotes - Citações e provocaçõesClean code quotes - Citações e provocações
Clean code quotes - Citações e provocações
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
UserTesting 2016 webinar: Research to inform product design in Agile environm...
UserTesting 2016 webinar: Research to inform product design in Agile environm...UserTesting 2016 webinar: Research to inform product design in Agile environm...
UserTesting 2016 webinar: Research to inform product design in Agile environm...
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
UX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The UglyUX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The Ugly
 
Douglas - Real JavaScript
Douglas - Real JavaScriptDouglas - Real JavaScript
Douglas - Real JavaScript
 
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web ApplicationsWhat Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
What Should I Do? Choosing SQL, NoSQL or Both for Scalable Web Applications
 
[EN] Great software development quotes
[EN] Great software development quotes[EN] Great software development quotes
[EN] Great software development quotes
 
So Many Frameworks, So Little Time
So Many Frameworks, So Little TimeSo Many Frameworks, So Little Time
So Many Frameworks, So Little Time
 
No Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software EngineeringNo Silver Bullet - Essence and Accidents of Software Engineering
No Silver Bullet - Essence and Accidents of Software Engineering
 
2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web2015.01.09 - Writing Modern Applications for Mobile and Web
2015.01.09 - Writing Modern Applications for Mobile and Web
 
Small team scrum and kanban
Small team scrum and kanbanSmall team scrum and kanban
Small team scrum and kanban
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software Architecture
 
No more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and AzureNo more Three Tier - A path to a better code for Cloud and Azure
No more Three Tier - A path to a better code for Cloud and Azure
 
Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best Practices
 

Recently uploaded

SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 

Recently uploaded (20)

SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 

Look ma, No Frameworks - Concise

  • 1. Look ma, No Frameworks Pablo Chacin
  • 2. Motivation So, you are a Java developer? What frameworks do you use? I don’t use any framework
  • 3. What’s wrong with frameworks? This is not (only) a rant against frameworks, but an analysis of the consequences of using them and a proposal for alternatives.
  • 4. Frameworkitis “Is the disease that a framework wants to do too much for you or it does it in a way that you don't want but you can't change it” Erich Gamma
  • 5. “We might have been able to use Ruby on Rails. But It also adds a bunch of requirements for stuff you then have to write so everything will work nicely with your framework” Node at LinkedIn: The Pursuit of Thinner, Lighter, Faster Unneeded Stuff
  • 6. Easy Yet Complex “Many complicating constructs are easy to use. However, what matters is the complexity they yield. And such complexity is incidental to the problem” Rich Hickey, author of Clojure
  • 7. Power Requires Discipline “And because you stand on the shoulders of giants, you can accomplish something quickly. You don’t even know exactly what you have done.” Dr. Ian Malcolm
  • 8. Restriction in Choices “Why did I leave .NET? In short, it constrained our ability to choose and turned our focus towards safety instead of helping us experience all of the possibilities out there” Jonathan Oliver, Why I left .Net
  • 9. Design as Learning “While we all need to write code that others can use and maintain, I hope part of that process involves trying to increase our collective knowledge” James Coglan
  • 10. “How do you teach magic to junior developers?” Greg Young, 8 lines of code The Problems with Magic
  • 11. Why Agile Development won’t help “Software gets about 10x bigger each decade. So while our attention has been focused on fixing process problems, our software got an order of magnitude bigger. In my opinion, it's time to turn our attention back to design.” George Fairbanks, Just Enough Software Architecture
  • 12. Hints for a Solution Create a vision Follow a risk driven design process Document relevant elements in a meaningful way
  • 13. Define your Style Provide a vocabulary to describe your system and reason about its properties.
  • 14. Unix’s Pipe Style Write programs that do one thing well and work together by handling text streams as a universal interface.
  • 15. The problem with styles Msg. Passing EventsPipes Micro Services (a.k.a SOA) OOP
  • 17. Follow a Risk-Driven Process Identify risks due to project, team, or technology factors Architect until main risks are covered
  • 18. Risk storming Technical risk (failures, data inconsistency, incompatibilities, ...) Stakeholder’s concerns (cost, time, performance,...)
  • 19. Architecturally-Evident Code Close the model- code gap by adopting an architecturally- evident coding style, embedding in code hints about design intent
  • 20. Conclusions “Life is pain. Anyone saying differently is selling something” Iñigo Montoya
  • 22. Acknowledgements 1. Keep calm.., source: http://www.keepcalm-o-matic.co.uk/ 2. Iñigo Montoya, source http://velvetgeek.com/ 3. Architecture Documentation, Code naming example, source http://www.codingthearchitecture.com/ 4. Risk Storming, source http://www.doyoubuzz. com/michael-keeling/cv/blog 5. Node at LinkedIn: The Pursuit of Thinner, Lighter, Faster, source http://queue.acm.org/detail.cfm?id=2567673