Simplicity, The Way of the Unusual Architect

Dan North

Recorded at GOTO 2012

so mm-hmm where are we
book of geek in the Old Testament in the
beginning the software was without form
and void
the architects said let there be light
and they separated the light from the
darkness and they called the light
architecture and they called the
darkness hacking and that was the first
project on the second project the
architects used all the technologies of
heavens and earth they hadn't got around
to the first time the simple new was
replaced by a factory which was replaced
by a dependency injection which was
replaced by an IOC container which was a
rented by XML configuration which was
supplemented by annotations but they
were not done yet the simple save was
replaced by a data access object who
remembers those who still uses them ah
which was replaced by a unit of work
pattern where's Martin which was
replaced by a custom ORM which was
hibernate by the Redmond Knights which
was partly replaced by a bat is because
we didn't replace it everywhere you just
replaced it a bit now you've got to our
horns to worry about which was replaced
by ej b3 which was not really replaced
the simple
Wow compiled there we go yeah a simple
compile was replaced by a makefile
which was a place plan and build xml
Knights which was replaced by many build
XML files which was generated by an XSLT
transfer I was on that project there was
a project that had an XSLT at the XSL
transform that would take input and
generate two million lines of build
xml's
across the minute oh wow happy days
which was replaced by maven
and maven brought forth a plague of
Apache Commons and there was a flood of
all the libraries of the internet as a
judgment upon the people and that was
the second project there's a phenomenon
known as the second system effect where
if you let people who write one system
build a second system build the
replacement of that system they act out
a whole bunch of things they never got
to do the first time so all of the ideas
they had they just are we need this
thing to work okay but if we just have
to get it to work we'll just put
something together that works now we
need it to be enterprise okay well that
means I get to do all this other stuff
and this is called the second system
effect you'll see this a lot especially
people who call themselves Enterprise
architects or even worth who get called
Enterprise architects by other people
the architects were fruitful and
multiplied they decided to build an
architecture that would reach to the
heavens to show how clever and wise they
were and remote invocation would be its
name and it came to pass they were
scattered to the four winds and began to
speak in different tongues some smoking
CORBA which was called deacon by the
Redmond Knights the sunnite spoke
Tlingit the language of Jin D of the
edge' bytes which was ex emulation
verbose and there was a plague of
standards to test the people these are
the generations of RPC RPC began to RM I
which begat calm and object brokers
combi gat D calm which we got WCF object
brokers began web services web services
married XML and they began soap and
wisdom soap begat the twelve hundred
tribes of WS Deathstar
we're still big at code generated stubs
and the people wrung their hands and
wept on the seventh day they rested thus
ends the reading so this is what we do
okay we we just over complicate these
things we over engineer and over
engineer things so this is how it works
we observe a pattern we see a thing that
happens more than once typically only
twice but more than once and we're
designed to see patterns oh I saw this
thing that's nearly like that so they go
okay well what we're gonna do is we're
gonna create an abstraction we're gonna
create a generalization cuz that's
useful that's the thing that might help
because we're just trying to help right
so then abstractions we turn into a
framework and we go hey not only can I
describe this idea I can give you a
thing that does it for you you don't
have to think okay so the framework then
becomes a golden hammer we will use
either insert brew beyond brailles
everywhere right that's what we're gonna
use yeah and then people start to
subvert the framework because it isn't
quite what they need it doesn't quite
work and then finally sometimes finally
simplicity grows out of adversity so um
Joe warms my colleague over many years
in various different guises he's a he's
a rather astonishing programmer he also
makes up words and one of the words he
made up were two other words he made up
it looks like compliments implicating so
so complicated in it needs to be okay
simply cating is the opposites
implicating is seeing the simplicity the
inherent simplicity in something and
pulling it out okay there's I think
there might be a core behavioral
difference between oo programmers and
functional programmers which side of
that they sit that's all I'm saying
about that so what's this
what are you looking at the clues in the
title I put the title up there and you
still aren't seeing it you're looking at
two three quarter circles what do you
think you're looking at you think you're
looking at a gray square in the middle
don't you um this is how our brains work
our brain is wired to make sense of
incomplete data because what we get in
life is incomplete data so we're
programmed to see structure so what does
this mean
um even when none exists so we distort
delete and generalize this is one of the
sort of core principles of behavioral
psychology and particularly near
linguistic programming NLP is this like
the idea that any information coming in
we distort it we delete it we generalize
it so distorting it is all of the
different cognitive biases like
attribution bias confirmation bias all
of those things deleting in particular
with confirmation bias is when
information comes in that doesn't agree
with my model of the world I I just I
literally my unconscious doesn't even
hear it okay how many times have you
been speaking to someone and you felt
they haven't been listening to you and
then you say something like suddenly
they're engaged yeah usually you know
your partner and and that's what they
don't know filtering stuff out until you
say something they think is interesting
and then they engage okay
say more interesting stuff how about
that and generalize is how we do this
pattern matching thing so we complicate
fantastic book I want to tell you to go
and read
influenced by a guy called Robert
Cialdini who's an advertising guy and he
doesn't call it a book about advertising
he calls about it and he calls it a book
about the compliance profession okay
these guys are advertising people are
expert in making you comply with what
they want you to do and they do that by
messing with you so a lot of this stuff
comes from there um so what am I saying
that if I were going to Dublin is a
lovely there's a lovely joke that starts
this chat come his over here's this guy
with an Irish accent he says that you're
from Ireland it says yeah
well I want to get to Dublin how do I
get to Dublin
and the our chances are if I were going
to Dublin I wouldn't start from here so
so so the problem we've got is we're
starting from here yeah and we've got oh
I'd like to do this thing
agile transformations yeah so you need
to set up scrum you need to select your
scrum masters and we don't have that
we're starting from here I know but you
have to start from here the thing that
scrubs it you know XP is a similar thing
I'm not just ragging on scrum I'm saying
these things I need to wrap up quickly
so start where you are okay try to see
what's really there Terry Pratchett
who'd read Terry Pratchett books
excellent with a room full of nerds
loads of hands wet up that's great
Terry Pratchett has three of these
characters are witches actually several
of his characters of witches but three
in particular and one of them Granny
Weatherwax she talks about witchcraft
and what it means and so now I know
which cough that's having second sight
isn't it and she says no no she says
witchcraft is having first sight it's
seen what's really there pretty deep so
what's actually slowing you down okay it
may be all of these frameworks and all
of these libraries and all of these bits
reason that you think you need all these
bits of architecture it could be a
self-sustaining problem when you
externalize a question when you're
sitting in there the parts of the brain
you use and the cognitive processes you
use to externalize a problem to someone
else
are different from the ones when you
have your internal dialogue which is why
you get this phenomenon where you go up
to someone you say can you think how I
could possibly don't worry I've got it
how often does that happen
yeah a lot right and this is why and so
I actually have a bath duck I have a
little yellow pasture I don't have it
here in the hotel room I travels with me
when I'm when I don't have someone to
pair with I talk to the bath duck
because talking to yourself would be mad
right so I've got about that and the
Amazon stand downstairs has got these
little sort of rubber skittle people
like there for just big smiles in their
faces to go and grab one of those
they've got any left because they've
like perfect baths ducks because they
just smile at you do you think I should
do this crazy thing
okay I'll do the crazy thing and you
know ask yourself do you really need
another logging library and I'll try to
leave you with this quote I love his
Oliver Wendell Holmes he says I would
not give a fig for the simplicity this
side of complexity but I would give my
life for the simplicity on the other
side of complexity and this is as simple
versus simplistic if you like this is a
lovely thing so that's kind of what I
wanted to say I just want to leave you
with this lovely picture the picture on
the left is the is how you parse there
is the structure of the Ruby language
the thing on the right is the structure
of the Python language okay just saying
that's all I've got I do want some
questions I don't got anything to ask
what's my dog's name ah excellent my
duck didn't have a name until three days
ago
no Thursday last week Thursday last week
my ducks got got a name and the way word
I've got a name was there's a a a NGO
called Cara who I met at another
conference last week in in Cambridge and
she's one of the organisers and we were
having this conversation about you know
externalizing things and and and one of
the sessions there was about you know
using a dark and externalizing and how
you pair and that kind of thing and she
said all right like an epiphany duck and
I went what said yeah we call it an
epiphany duck because you you speak to
the duck and as you speak to the duck
you have an epiphany
so my duck is now called Epiphany his
name is Epiphany duck so I thought
that's how I speak - yeah okay thank you
right thanks