Look ma, No Frameworks - JBcnConf 2015

Post on 04-Aug-2015

165 views 0 download

Tags:

transcript

Look ma, No FrameworksPablo 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 withyour 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 codehints 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/blog5. Node at LinkedIn: The Pursuit of Thinner, Lighter, Faster,

source http://queue.acm.org/detail.cfm?id=2567673