Download - Design Types
Christian Rehn, Matthias Wittum
DESIGN TYPES
Entscheidungsmöglichkeiten beim Design von Software
1&1 Internet AG 2 17.11.2014
Vorstellung
Matthias Wittum:
In der Software-Entwicklung seit 2002
In der 1&1 seit 2007
Tätig als Software-Entwickler/Architekt
Seit 2012 Head of Source Center
Erreichbar unter: [email protected]
Christian Rehn:
Programmiert seit 2001
In der 1&1 seit 2013
Tätig als Software Engineer
Erreichbar unter: [email protected]
Blog: www.christian-rehn.de/
Design-Prinzipien: www.principles-wiki.net
1&1 Internet AG 3
Let‘s start with an demonstrative story
17.11.2014
Hi,
I am John.
I work as a
manager for a
company that
produces textiles
like shirts.
1&1 Internet AG 4
The vision and the team
17.11.2014
For the company
we will accelerate our business
if we sell our products online
(without any merchants in between)
Bob and Sally
you will start
Implementing
The vision
Hi,
I am Sally.
Hi,
I am Bob.
Hi,
I am Jack. Hi,
I am Sam.
Currently involved in
too many other projects
1&1 Internet AG 5
Split up tasks
17.11.2014
I will take over
the frontend partI will take over
the backend part
I found a very
interesting GUI
framework where
I can separate layout
from functionality
I will use an event
driven architecture
where I can decouple
all elements from
each other
XML
XSD
Service A
a queuea rule
handler
Service B
…
Both have a Technologic orientation means: using new, modern and more productive technologies
evolve with technology for being more competitive
broaden their personal horizon
etc.
1&1 Internet AG 6
After a while…
17.11.2014
Bob and Sally:
please give me a
brief overview how
you proceeded so far
XML
XSD Service A
Service B
Service C
I found a perfect
solution for the GUI.
We can separate
functionality from design.
Give me some money
to delegate the layout part.
I implemtent the functionality.
I started with an EDA
that is totally flexible.
We can add new
events/services on
demand e.g. engage
Logistics, BI, etc.
Sounds very
technical
but great.
Please prepare
a Demo!
1&1 Internet AG 7
Before the first demo
17.11.2014
Bob I do not understand
your interface. Too much
xml, xsd, generic methods, etc.
How can I use it or can you
make it easier to use?
It is like it is. Read my manual
or just use the xsd – it is self
describing.
Currently there is no example
I was working on a test
framework for my EDA.
But we have to
deliver a demo.
I don‘t see it!
Don‘t be
so clumsy
You are a
Bubble Bob
And you:
Sally2Simple
Sally is oriented in Simple that means: keeping it simple for better understandability
omit unnecessary things (lower risk; less bugs)
reduce complexity by splitting it up
prefer explicit solutions instead of implicit knowledge
etc.
Bob is oriented in Powerful that means: powerful and generalized solutions
Flexibility and Extensibility by foresighted design
configurable solutions instead of frequent code changes
mastering complexity
etc.
Without a
conclusion they
decide to
demonstrate their
own parts.
1&1 Internet AG 8
During the first demo
17.11.2014
Bob and Sally:
Let‘s see
Here is the brand
new shop!
Awesome
Service A
Test data
Generator
XML
Impressive
What about
an order about
1000 Shirts
with a discount
of 10% using
a credit card?
With the test
data generator
I can simulate
everything
1&1 Internet AG 9
The disaster
17.11.2014
Oh – NO!!!
Damn it!
Both are Technologic oriented but not Robust which means: protect applications against risks and potential bugs
use standards for an obvious structure
avoid magic and complexity
use proven solutions which stand the test of time
etc.
1&1 Internet AG 10
How to proceed?
17.11.2014
Sam and Jack:
Can you support?
yep
sure
Jack with his
architectural
background
will be in charge
of the structure
1&1 Internet AG 11
Fixing the unfixable
17.11.2014
XML
XSD Service A
Service B
Service C
Facade
How does it all
play together?
Let‘s use a simple
API for the GUI
And remove the
complex stuff
calling services
directly (maybe
using it later on)
Now I will
help Sally
with the
stability
Jack is Abstract oriented which means: think in concepts and abstractions
focus on the big picture and interaction of components
know about the consequences of a change
focus on real world models
etc.
1&1 Internet AG 12
Getting things done
17.11.2014
XML
XSD Service A
Service B
Service C
Bob: we go together
through all services
to see
what is available,
what is working
and bring it on quickly
ok
Sam is Pragmatic oriented which means: fulfill requirements asap
use only things that guarantee a value
omit unnecessary things
bring others down to earth
etc.
?
?
?
1&1 Internet AG 13
Celebrating success
17.11.2014
Congratulations!
We did it.
Thank you all…
Sally and Bob are both technologic oriented
but are too contrary regarding powerful and
simple software design.
Both are also not robust oriented which lead
to an instable system, here.
There was no agreement about a common
architecture because Bob is concrete oriented
and Sally could not negotiate with Bob after
their heated debate. Both are also idealistic
which complicated any agreements
Jack could support based on his orientation to
abstract (this was maybe supported by getting
the technical lead from John)
Sam could bring down Bob to earth and
supported by finding the quick wins in his
pragmatic manner.
1&1 Internet AG 14
Let‘s sum up
17.11.2014
Simple
Abstract
Idealistic
Technologic
Powerful
Concrete
Idealistic
Technologic
Powerful
Abstract
Pragmatic
Robustness
Simple
Abstract
Pragmatic
Robustness
First of all it is a fictive story.
In reality it will be different (circumstances, type combinations,
etc.)
Not all problems can be solved in the same way or in this case
by a manager
What we wanted to show/our motivation:
Several orientations can motivate a developer to make his
design decisions.
There are many ways to build good or bad solutions. Get to
know and understand these ways.
There are often one or two dimensions which overweight.
1&1 Internet AG 15
Why is the example not representative?
17.11.2014
1&1 Internet AG 16
A guide through design type dimensions
17.11.2014
Simple means: keeping it simple for better understandability
omit unnecessary things (lower risk; less bugs)
reduce complexity by splitting it up
prefer explicit solutions instead of implicit knowledge
etc.
Powerful means: powerful and generalized solutions
Flexibility and Extensibility by foresighted design
configurable solutions instead of frequent code changes
mastering complexity
etc.
Abstract means: think in concepts and abstractions
focus on the big picture and interaction of components
know about the consequences of a change
focus on real world models
etc.
Pragmatic means: fulfill requirements asap
use only things that guarantee a value
omit unnecessary things
bring others down to earth
etc.
Robust means: protect applications against risks and potential bugs
use standards for an obvious structure
avoid magic and complexity
use proven solutions which stand the test of time
Technologic means: using new, modern and more productive technologies
evolve with technology for being more competitive
broaden their personal horizon
etc.
Concrete means: think and act in code
transferring ideas into components immediately
optimizing algortihms for better performance
understanding systems by reading the code
etc.
Idealistic means: make things right – not only 80%
consider all aspects not only functional ones
everything has its right place
do not missuse existing concepts
etc.
Follower of each dimension use their particular design principles.
Have a look on www.principles-wiki.net to get an overall overview.
1&1 Internet AG 17
Try it by yourself > www.design-types.net
17.11.2014
Simple
Abstract
Idealistic
Technologic
Simple
Abstract
Pragmatic
Robust
From a developer‘s perspective:
Understand the motivation for particular design decisions
of your colleagues.
Get to know yourself – strenghts and weaknesses.
More precise and less exhausting communication about
design decisions.
From a managers perspective:
Identify which dimension is missing in my team.
Build up new teams according to the team mission.
Put the right ones together for e.g. a project or to learn
from each other.
1&1 Internet AG 18
What‘s in for me?
17.11.2014
1&1 Internet AG 19 17.11.2014
Source Center
Wie funktioniert das Source Center?
Einarbeitung (Technologien, Prozesse, Kultur)
Teameinsatz (~6 Monate produktiver Einsatz)
Fach-/Technologische Spezifika kennenlernen
Soziales Netzwerk aufbauen
Standort übergreifender Einsatz möglich (finanziert AG)
Wechsel in dauerhafte Position jederzeit möglich (Gegenseitigkeit)
„Die Richtigen an die richtige Stelle im Unternehmen bringen.“
ZEIT FÜR FRAGEN…
…UND FÜR PERSPEKTIVEN…
klassisch viajobs.1und1.de
Karriere bei 1&1
Unternehmen kennenlernen
Kontaktnetzwerk knüpfen
Optimalen Job finden
Speziell für Entwickler