SlideShare uma empresa Scribd logo
1 de 106
Baixar para ler offline
How frameworks
can kill your
projects

Sander Hoogendoorn

Principal Technology Officer
& Global Agile Thouhtleader Capgemini

And some patterns
to prevent you from getting killed

www.sanderhoogendoorn.com
www.speedbird9.com
@aahoogendoorn
Sander Hoogendoorn

2

Capgemini
 Principal technology officer
 Global agile thought leader
 Chief architect Accelerated Delivery Platform

Other






Author books on UML, agile (2)
Author +200 articles
Speaker +100 international conferences
Microsoft Partner Advisory Council .NET
Editorial boards & Advisory boards

Web
 www.sanderhoogendoorn.com
 www.speedbird9.com | www.smartusecase.com
 @aahoogendoorn
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
On being a developer...

4

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
A small rectification …

5

Ukrainian

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

6

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

7

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Hofstadter’s Law
It always takes longer than you expect,
even when you take into account Hofstadter’s Law
MyFirstSurvey

9

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
MyFirstSurvey

10

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Life is never easy
Frameworks, like pizzas, come in only two
sizes: too big and too small.
MyFirstSurvey

12

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
What’s it gonna be punk?

13
General purpose frameworks
Enterprise Library, Spring.Net, Castle,
NakedObjects, Accelerated Delivery Framework
(ADF), SubSonic

Single goaled frameworks – verticals

Single goaled frameworks – architectural

Dependency injection: ObjectBuilder, Unity,
Castle Windsor

User interface: Silverlight, ASP.NET MVC, WPF,
ASP.NET Ajax, Spring MVC

Logging: Log4Net, Logging Block,
Common.Logging

Process: UI Process Application Block, WF

Exception handling: Exception Handling Block
Apect orientation: PostSharp, SetPoint

Data: Entity Framework, Hibernate, Castle
ActiveRecord, CSLA

Search: Lucene.net, NLucene

Service s: WCF, WCF RIA

Domain: Entity Framework, Hibernate, NEO

Portals: DotNetNukeSpatial, Umbraco
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Frameworks. CodePlex

14

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Frameworks. www.csharpopensource.com

15

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Frameworks. Microsoft Enterprise Library

16

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Frameworks. Project Castle

17

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Don’t believe the hype. It’s a SQL

18

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Convincing the management to apply the framework (25.5 %)

19

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Understanding the framework (56.4 %)

20

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Convincing other developers to use the framework (23.6 %)

21

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Convincing other developers to use the framework (23.6 %)

22

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Training the developers (20 %)

23

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
The eye of the tiger

24

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

25

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Applying
Frameworks
My software never has bugs.
It just develops random features
So glad you made it!

27

What if the author of our
favorite framework suddenly
stops developing it?

What if we require
additional features that
aren’t covered by our
framework?
And what if the new
version of our framework
is implemented totally
different?
What if we decide that
another framework
might be better than the
one we’re using now?

What if the framework
contains bugs?
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
More than anything, dependencies will kill your project

28

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Kentucky Fried
Architecture
A short story about framework developers
and application developers
Pigs & Chickens

The framework
developer

30

The
application
developer
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
The customer is not always right

31

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
KFC Architecture. Entity Framework

32

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
KFC Architecture. Entity Framework

33

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
KFC Architecture. Entity Framework

34

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Here’s …
beta!

Letting
the lunatics
run the asylum

I don’t care if it works on your machine!
We are not shipping your machine!
Hot or not?

37

Hot?

From hot to not?

Not?

WindowsRT
PCL
HTML5
LightSwitch
WCF RIA Services
Silverlight 4.0?
ASP.NET MVC 3
MEF
jQuery
NService Bus
Entity Framework Code First
Xamarin
TypeScript

Expression Blend
ASP.NET Ajax
REST
Unity
BizTalk
Surface
Duet
SketchFlow
Azure Services
ADO.NET Data
Services
ASP.NET Dynamic
Data
WPF

Entity Framework 2.0
LINQ2SQL
LINQ2Entities
Entity Data Model
Dublin
DSL’s
Silverlight 2.0
F#
ASP.NET
PopFly
M
Oslo
MGrammar

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Be a genius

38

Metro?

WTF? I just figured
out ASP.NET MVC

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Here’s Johnny! ASP.NET MVC

39

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Here’s Johnny! ASP.NET MVC

40

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
No strings
attached
It’s only in theory
that practice and theory are the same
MyFirstSurvey

42

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Changing base classes. NHibernate / Log4Net

43

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Changing base classes. NHibernate / Log4Net

44

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Yes, your
frameworks
version too

Programming is like sex. One mistake and you
have to support it for the rest of your life
It ain’t over till it’s over

46

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Missing base classes. Workflow Foundation 4.0

47

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Missing base classes. Workflow Foundation 4.0

48

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Enterprise Library & Retirement

49

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
“Evolving” the Reflection API

50

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
“Evolving” the Reflection API

51

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
“Evolving” the Reflection API

52

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

54

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Sound
architecture
Architecture starts when you carefully put
two bricks together. There it begins.
(Software.Architecture != List<Framework>)
A software architecture

57

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Creating your architecture

58

What to do?
 Identify your architectural requirements
 Set up a (layered) architecture
 Identify layers and layer elements

 List the elements responsibilities
 List the elements collaborations
 And only then map to frameworks

 Create a thin “umbrella” of independence responsible for
managing dependencies

 “Wrap” frameworks to avoid too many dependencies

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Presentation
Silverlight
XAML
ASPX

Process

Pages
UserControls
Panels

Entities
(from EF)
Domain
Services

Use cases
Workflow
MVVM?
MVP?

Domain objects / Entities
Factories / Repositories
Enums / Value objects / Smart references
[Mapping]

Domain

Metadata

Service gateways
Service locators
[Mapping]

Data / Services

COBOL
Outside world

SAP

BizTalk

Java

Entity Framework
LINQ
Nhibernate?
WCF?

Databases
Services / ESB

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

61

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Layer supertype
From a developers point of view
the user is a peripheral that types
when you issue a read request.
Layer Supertype

63

What’s a layer supertype Ollie?
 Acts as a supertype for all types in
its layer

 All types inherit from the layer
supertype

Well Stan, it’s characteristics are
 Name expresses common behaviour
 Forces common features on all inherited types
 Ideal starting point for services
 Initially the layer supertype is empty

 Reserve layer supertype for future additions
 Extension methods don’t (always) help, you
know

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Layer Supertype. ASP.NET MVC

64

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Layer Supertype. ASP.NET MVC

65

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Pages
UserControls
Panels

Presentation

Process

Use cases
Workflow

Domain

Domain objects / Entities
Factories / Repositories
Enums / Value objects / Smart references
[Mapping]
Service gateways
Service locators
[Mapping]

Data / Services

Exact
Outside world

SAP

BizTalk

Java

Databases
Services / ESB

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Layer Supertype. Using a layer supertype

67

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Layer Supertype. Reasoning about layer supertypes

68

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Layer Supertype. Extension methods on layer supertypes

69

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

70

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor
Always code as if the guy
who ends up maintaining your code
will be a violent psychopath
who knows where you live.
I know nothing. I’m from Barcelona

72

What is the matter
Mister Fawlty?

The problem Manuel, is that
 I want to use constants in my
application

 But I want to define them in my
framework and extend them in
my application

 Enumeration won’t do – there’s
no inheritance

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor. The problem

73

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor. The problem

74

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Enum?

75

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
String Collection?

76

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
String Collection

77

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
I know nothing. I’m from Barcelona

78

Descriptor
Defines a restricted but
application specific
extendible list of
definitions

Useful when
 Enums can not be inherited
 Framework defines enumeration

types that need to be extended in
application code

 Define layer supertype using
reflection

 Pre-define frequently used
instances

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern

79

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern. Definition

80

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern. Extending the definition

81

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern. Use in framework

82

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern. Use in application

83

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
MyFirstSurvey

84

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern. Use in ASP.NET MVC

85

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Descriptor Pattern. Use in ASP.NET MVC

86

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Agenda

87

An short story
about frameworks

How frameworks can
get you in trouble

Software architecture
versus frameworks

The layer
supertype

Introducing the
descriptor pattern

The
manager-provider

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Dependency
injection
XML is like violence.
If it doesn’t solve your problems,
you are not using enough of it.
Dependency Injection. A contagious disease?

89

What do you think it is?
Create true separation between
definition and implementation, so that
the two can vary independently and can
be replaced easily

Looks like a typical case
of dependency injection to me

So …

 Call functionality without having to know

 Single or multiple implemenations need

the actual implementation

 Implement replaceable services

 Apply implementations in different contexts
 Plug-in services at run-time

 Single topic services
to be handled, which differs dependant
on context, like with Windows API,
logging or error handling

 Unit testing

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Different variations?

90
Did you know that there
are different types
of this dependency injection?

Yeah, sure. There’s

 Constructor injection

 Property (setter) injection
 And even manual injection
Arggh…

Who cares doc?

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Dependency injection. Manual injection

92

c

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Dependency injection. what to plug in

93

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Manager –
Provider
"Teamwork is a lot of people doing what I say“
Marketing executive, Citrix Corporation
Manager-Provider Pattern

95

Definition
 Create a simple static facade (manager) for a (set of)
interfaced implementations (providers)

In practice
 Manager holds one or a collection of providers
 Provider implement a particular interface
 Manager has methods to call methods from interface

 At run-time, using dependency injection, actual providers
are injected

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Manager. ValidationManager

96

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Interface

97

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Manager. Initialization (using dependency injection)

98

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Configuration of implementation

99

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Configuration of implementation

100

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Manager. Executing methods

101

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Client. Calling methods

102

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Client. Extending

103

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Manager-Provider pattern

104

Useful when
 Generic services need to be called, which may have
different implementations

 Manager prevents having to loop through each of a list of
providers

 Flexibility to add or remove providers without changing
application code

 Providers differ e.g. in development code, test code or
deployed code

 Writing platform independent code

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Manager-Provider pattern

105

Use for
 Task Management
 View Management
 Binding and Persisting

 Resource Management
 State Management
 Logging

 Datasource interaction
 Encryption
 Authorization

 Testing!
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Creating your
architecture
Software architecture is like deodorant.
Those who need it the most don’t use it.
Creating your architecture

107

What to do?
 Identify your architectural requirements
 Set up a (layered) architecture
 Identify layers and layer elements

 List the elements responsibilities
 List the elements collaborations
 And only then map to frameworks

 Create a thin “umbrella” of independence responsible for
managing dependencies

 “Wrap” frameworks to avoid too many dependencies

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
Too many layers

108

HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
HOW FRAMEWORKS CAN KILL YOUR PROJECTS

©2012 Sander Hoogendoorn All Rights Reserved
References
and questions
www.sanderhoogendoorn.com
www.smartusecase.com
www.speedbird9.com
sander.hoogendoorn@capgemini.com
sander@ditisagile.nl
@aahoogendoorn

Mais conteúdo relacionado

Semelhante a How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

20081027 Smart Use Cases Hogeschool Arnhem Nijmegen
20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen
20081027 Smart Use Cases Hogeschool Arnhem NijmegenSander Hoogendoorn
 
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Stefan Richter
 
Coming Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMakerComing Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMakerdclsocialmedia
 
Max flash based code quality is there a canary in your coal mine-
Max  flash based code quality  is there a canary in your coal mine-Max  flash based code quality  is there a canary in your coal mine-
Max flash based code quality is there a canary in your coal mine-Xavier Agnetti
 
ODROID Magazine April 2014
ODROID Magazine April 2014ODROID Magazine April 2014
ODROID Magazine April 2014Nanik Tolaram
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationFred George
 
Zitec - 13mai2011
Zitec - 13mai2011Zitec - 13mai2011
Zitec - 13mai2011Agora Group
 
STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!kshaffar
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfFarHanWasif1
 
33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s Success33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s SuccessDialexa
 
From DevOps to NoOps
From DevOps to NoOpsFrom DevOps to NoOps
From DevOps to NoOpsCapgemini
 
The Language of Application Architecture
The Language of Application ArchitectureThe Language of Application Architecture
The Language of Application ArchitectureBrad Beiermann
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsCaesar Chi
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaWey Wey Web
 
CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...
CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...
CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...Chris Purrington
 
Techfest design patterns
Techfest design patternsTechfest design patterns
Techfest design patternsRookieOne
 
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework ProjectRakuten Group, Inc.
 

Semelhante a How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev (20)

Agile and Frameworks
Agile and FrameworksAgile and Frameworks
Agile and Frameworks
 
20081027 Smart Use Cases Hogeschool Arnhem Nijmegen
20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen
20081027 Smart Use Cases Hogeschool Arnhem Nijmegen
 
What is this cloud thing?
What is this cloud thing?What is this cloud thing?
What is this cloud thing?
 
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
 
Coming Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMakerComing Up to Speed with XML Authoring in Adobe FrameMaker
Coming Up to Speed with XML Authoring in Adobe FrameMaker
 
Max flash based code quality is there a canary in your coal mine-
Max  flash based code quality  is there a canary in your coal mine-Max  flash based code quality  is there a canary in your coal mine-
Max flash based code quality is there a canary in your coal mine-
 
ODROID Magazine April 2014
ODROID Magazine April 2014ODROID Magazine April 2014
ODROID Magazine April 2014
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid Innovation
 
Zitec - 13mai2011
Zitec - 13mai2011Zitec - 13mai2011
Zitec - 13mai2011
 
STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!STLDODN - Get Rid of CRUD faster!
STLDODN - Get Rid of CRUD faster!
 
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdfAstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
 
33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s Success33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s Success
 
From DevOps to NoOps
From DevOps to NoOpsFrom DevOps to NoOps
From DevOps to NoOps
 
The Language of Application Architecture
The Language of Application ArchitectureThe Language of Application Architecture
The Language of Application Architecture
 
Building Better Software Faster
Building Better Software FasterBuilding Better Software Faster
Building Better Software Faster
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo Collina
 
CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...
CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...
CloudCamp. Paul Hopton, @relayr_cloud - 'The WunderBar - Bootstrapping the In...
 
Techfest design patterns
Techfest design patternsTechfest design patterns
Techfest design patterns
 
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
[Rakuten TechConf2014] [E-4] Rakuten Front-end Framework Project
 

Mais de Sander Hoogendoorn

Flow. The official worst software development approach in history
Flow. The official worst software development approach in historyFlow. The official worst software development approach in history
Flow. The official worst software development approach in historySander Hoogendoorn
 
It's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeIt's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeSander Hoogendoorn
 
Welcome to the world of micro-apps
Welcome to the world of micro-appsWelcome to the world of micro-apps
Welcome to the world of micro-appsSander Hoogendoorn
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applicationsSander Hoogendoorn
 
Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Sander Hoogendoorn
 
20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...Sander Hoogendoorn
 
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...Sander Hoogendoorn
 
Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Sander Hoogendoorn
 
Geecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesGeecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesSander Hoogendoorn
 
Thirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellThirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellSander Hoogendoorn
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsSander Hoogendoorn
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsSander Hoogendoorn
 
Microservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellMicroservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellSander Hoogendoorn
 
Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Sander Hoogendoorn
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Sander Hoogendoorn
 
Microservices. The good the bad and the ugly
Microservices. The good the bad and the uglyMicroservices. The good the bad and the ugly
Microservices. The good the bad and the uglySander Hoogendoorn
 
Scaling agile from the ground up
Scaling agile from the ground upScaling agile from the ground up
Scaling agile from the ground upSander Hoogendoorn
 
Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Sander Hoogendoorn
 
The state of agile in ten easy learned lessons
The state of agile in ten easy learned lessonsThe state of agile in ten easy learned lessons
The state of agile in ten easy learned lessonsSander Hoogendoorn
 

Mais de Sander Hoogendoorn (20)

Flow. The official worst software development approach in history
Flow. The official worst software development approach in historyFlow. The official worst software development approach in history
Flow. The official worst software development approach in history
 
It's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeIt's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big time
 
Welcome to the world of micro-apps
Welcome to the world of micro-appsWelcome to the world of micro-apps
Welcome to the world of micro-apps
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applications
 
Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?
 
20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...
 
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
 
Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.
 
Geecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesGeecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservices
 
Thirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellThirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hell
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessons
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessons
 
Microservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellMicroservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hell
 
Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.
 
Modeling Microservices
Modeling MicroservicesModeling Microservices
Modeling Microservices
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...
 
Microservices. The good the bad and the ugly
Microservices. The good the bad and the uglyMicroservices. The good the bad and the ugly
Microservices. The good the bad and the ugly
 
Scaling agile from the ground up
Scaling agile from the ground upScaling agile from the ground up
Scaling agile from the ground up
 
Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)
 
The state of agile in ten easy learned lessons
The state of agile in ten easy learned lessonsThe state of agile in ten easy learned lessons
The state of agile in ten easy learned lessons
 

Último

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

Último (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

  • 1. How frameworks can kill your projects Sander Hoogendoorn Principal Technology Officer & Global Agile Thouhtleader Capgemini And some patterns to prevent you from getting killed www.sanderhoogendoorn.com www.speedbird9.com @aahoogendoorn
  • 2. Sander Hoogendoorn 2 Capgemini  Principal technology officer  Global agile thought leader  Chief architect Accelerated Delivery Platform Other      Author books on UML, agile (2) Author +200 articles Speaker +100 international conferences Microsoft Partner Advisory Council .NET Editorial boards & Advisory boards Web  www.sanderhoogendoorn.com  www.speedbird9.com | www.smartusecase.com  @aahoogendoorn HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 3. HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 4. On being a developer... 4 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 5. A small rectification … 5 Ukrainian HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 6. Agenda 6 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 7. Agenda 7 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 8. Hofstadter’s Law It always takes longer than you expect, even when you take into account Hofstadter’s Law
  • 9. MyFirstSurvey 9 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 10. MyFirstSurvey 10 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 11. Life is never easy Frameworks, like pizzas, come in only two sizes: too big and too small.
  • 12. MyFirstSurvey 12 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 13. What’s it gonna be punk? 13 General purpose frameworks Enterprise Library, Spring.Net, Castle, NakedObjects, Accelerated Delivery Framework (ADF), SubSonic Single goaled frameworks – verticals Single goaled frameworks – architectural Dependency injection: ObjectBuilder, Unity, Castle Windsor User interface: Silverlight, ASP.NET MVC, WPF, ASP.NET Ajax, Spring MVC Logging: Log4Net, Logging Block, Common.Logging Process: UI Process Application Block, WF Exception handling: Exception Handling Block Apect orientation: PostSharp, SetPoint Data: Entity Framework, Hibernate, Castle ActiveRecord, CSLA Search: Lucene.net, NLucene Service s: WCF, WCF RIA Domain: Entity Framework, Hibernate, NEO Portals: DotNetNukeSpatial, Umbraco HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 14. Frameworks. CodePlex 14 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 15. Frameworks. www.csharpopensource.com 15 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 16. Frameworks. Microsoft Enterprise Library 16 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 17. Frameworks. Project Castle 17 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 18. Don’t believe the hype. It’s a SQL 18 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 19. Convincing the management to apply the framework (25.5 %) 19 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 20. Understanding the framework (56.4 %) 20 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 21. Convincing other developers to use the framework (23.6 %) 21 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 22. Convincing other developers to use the framework (23.6 %) 22 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 23. Training the developers (20 %) 23 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 24. The eye of the tiger 24 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 25. Agenda 25 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 26. Applying Frameworks My software never has bugs. It just develops random features
  • 27. So glad you made it! 27 What if the author of our favorite framework suddenly stops developing it? What if we require additional features that aren’t covered by our framework? And what if the new version of our framework is implemented totally different? What if we decide that another framework might be better than the one we’re using now? What if the framework contains bugs? HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 28. More than anything, dependencies will kill your project 28 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 29. Kentucky Fried Architecture A short story about framework developers and application developers
  • 30. Pigs & Chickens The framework developer 30 The application developer HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 31. The customer is not always right 31 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 32. KFC Architecture. Entity Framework 32 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 33. KFC Architecture. Entity Framework 33 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 34. KFC Architecture. Entity Framework 34 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 35. Here’s … beta! Letting the lunatics run the asylum I don’t care if it works on your machine! We are not shipping your machine!
  • 36. Hot or not? 37 Hot? From hot to not? Not? WindowsRT PCL HTML5 LightSwitch WCF RIA Services Silverlight 4.0? ASP.NET MVC 3 MEF jQuery NService Bus Entity Framework Code First Xamarin TypeScript Expression Blend ASP.NET Ajax REST Unity BizTalk Surface Duet SketchFlow Azure Services ADO.NET Data Services ASP.NET Dynamic Data WPF Entity Framework 2.0 LINQ2SQL LINQ2Entities Entity Data Model Dublin DSL’s Silverlight 2.0 F# ASP.NET PopFly M Oslo MGrammar HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 37. Be a genius 38 Metro? WTF? I just figured out ASP.NET MVC HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 38. Here’s Johnny! ASP.NET MVC 39 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 39. Here’s Johnny! ASP.NET MVC 40 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 40. No strings attached It’s only in theory that practice and theory are the same
  • 41. MyFirstSurvey 42 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 42. Changing base classes. NHibernate / Log4Net 43 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 43. Changing base classes. NHibernate / Log4Net 44 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 44. Yes, your frameworks version too Programming is like sex. One mistake and you have to support it for the rest of your life
  • 45. It ain’t over till it’s over 46 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 46. Missing base classes. Workflow Foundation 4.0 47 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 47. Missing base classes. Workflow Foundation 4.0 48 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 48. Enterprise Library & Retirement 49 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 49. “Evolving” the Reflection API 50 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 50. “Evolving” the Reflection API 51 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 51. “Evolving” the Reflection API 52 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 52. Agenda 54 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 53. Sound architecture Architecture starts when you carefully put two bricks together. There it begins.
  • 55. A software architecture 57 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 56. Creating your architecture 58 What to do?  Identify your architectural requirements  Set up a (layered) architecture  Identify layers and layer elements  List the elements responsibilities  List the elements collaborations  And only then map to frameworks  Create a thin “umbrella” of independence responsible for managing dependencies  “Wrap” frameworks to avoid too many dependencies HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 57. Presentation Silverlight XAML ASPX Process Pages UserControls Panels Entities (from EF) Domain Services Use cases Workflow MVVM? MVP? Domain objects / Entities Factories / Repositories Enums / Value objects / Smart references [Mapping] Domain Metadata Service gateways Service locators [Mapping] Data / Services COBOL Outside world SAP BizTalk Java Entity Framework LINQ Nhibernate? WCF? Databases Services / ESB HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 58. Agenda 61 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 59. Layer supertype From a developers point of view the user is a peripheral that types when you issue a read request.
  • 60. Layer Supertype 63 What’s a layer supertype Ollie?  Acts as a supertype for all types in its layer  All types inherit from the layer supertype Well Stan, it’s characteristics are  Name expresses common behaviour  Forces common features on all inherited types  Ideal starting point for services  Initially the layer supertype is empty  Reserve layer supertype for future additions  Extension methods don’t (always) help, you know HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 61. Layer Supertype. ASP.NET MVC 64 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 62. Layer Supertype. ASP.NET MVC 65 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 63. Pages UserControls Panels Presentation Process Use cases Workflow Domain Domain objects / Entities Factories / Repositories Enums / Value objects / Smart references [Mapping] Service gateways Service locators [Mapping] Data / Services Exact Outside world SAP BizTalk Java Databases Services / ESB HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 64. Layer Supertype. Using a layer supertype 67 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 65. Layer Supertype. Reasoning about layer supertypes 68 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 66. Layer Supertype. Extension methods on layer supertypes 69 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 67. Agenda 70 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 68. Descriptor Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
  • 69. I know nothing. I’m from Barcelona 72 What is the matter Mister Fawlty? The problem Manuel, is that  I want to use constants in my application  But I want to define them in my framework and extend them in my application  Enumeration won’t do – there’s no inheritance HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 70. Descriptor. The problem 73 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 71. Descriptor. The problem 74 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 72. Enum? 75 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 73. String Collection? 76 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 74. String Collection 77 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 75. I know nothing. I’m from Barcelona 78 Descriptor Defines a restricted but application specific extendible list of definitions Useful when  Enums can not be inherited  Framework defines enumeration types that need to be extended in application code  Define layer supertype using reflection  Pre-define frequently used instances HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 76. Descriptor Pattern 79 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 77. Descriptor Pattern. Definition 80 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 78. Descriptor Pattern. Extending the definition 81 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 79. Descriptor Pattern. Use in framework 82 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 80. Descriptor Pattern. Use in application 83 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 81. MyFirstSurvey 84 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 82. Descriptor Pattern. Use in ASP.NET MVC 85 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 83. Descriptor Pattern. Use in ASP.NET MVC 86 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 84. Agenda 87 An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 85. Dependency injection XML is like violence. If it doesn’t solve your problems, you are not using enough of it.
  • 86. Dependency Injection. A contagious disease? 89 What do you think it is? Create true separation between definition and implementation, so that the two can vary independently and can be replaced easily Looks like a typical case of dependency injection to me So …  Call functionality without having to know  Single or multiple implemenations need the actual implementation  Implement replaceable services  Apply implementations in different contexts  Plug-in services at run-time  Single topic services to be handled, which differs dependant on context, like with Windows API, logging or error handling  Unit testing HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 87. Different variations? 90 Did you know that there are different types of this dependency injection? Yeah, sure. There’s  Constructor injection  Property (setter) injection  And even manual injection Arggh… Who cares doc? HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 88. Dependency injection. Manual injection 92 c HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 89. Dependency injection. what to plug in 93 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 90. Manager – Provider "Teamwork is a lot of people doing what I say“ Marketing executive, Citrix Corporation
  • 91. Manager-Provider Pattern 95 Definition  Create a simple static facade (manager) for a (set of) interfaced implementations (providers) In practice  Manager holds one or a collection of providers  Provider implement a particular interface  Manager has methods to call methods from interface  At run-time, using dependency injection, actual providers are injected HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 92. Manager. ValidationManager 96 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 93. Interface 97 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 94. Manager. Initialization (using dependency injection) 98 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 95. Configuration of implementation 99 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 96. Configuration of implementation 100 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 97. Manager. Executing methods 101 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 98. Client. Calling methods 102 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 99. Client. Extending 103 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 100. Manager-Provider pattern 104 Useful when  Generic services need to be called, which may have different implementations  Manager prevents having to loop through each of a list of providers  Flexibility to add or remove providers without changing application code  Providers differ e.g. in development code, test code or deployed code  Writing platform independent code HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 101. Manager-Provider pattern 105 Use for  Task Management  View Management  Binding and Persisting  Resource Management  State Management  Logging  Datasource interaction  Encryption  Authorization  Testing! HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 102. Creating your architecture Software architecture is like deodorant. Those who need it the most don’t use it.
  • 103. Creating your architecture 107 What to do?  Identify your architectural requirements  Set up a (layered) architecture  Identify layers and layer elements  List the elements responsibilities  List the elements collaborations  And only then map to frameworks  Create a thin “umbrella” of independence responsible for managing dependencies  “Wrap” frameworks to avoid too many dependencies HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 104. Too many layers 108 HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved
  • 105. HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2012 Sander Hoogendoorn All Rights Reserved