Thursday, October 13, 2016

Martin Fowler | Software Design in the 21st Century

so inside it's an honor to introduce our gallery
I'm sure you recognize me
for me Martin dollar when i first got to start for myself was actually be it is a
new methodology are listed and is back tonight you or five can remember a long
time ago but for me was my first introduction to the agile methodology
with this new methodology spoken which is actually going to let into my journey
here at voice as well so it's my pleasure to introduce our family
so as usual as my type of software development in the 21st century
if you have a singing in the tall building obviously the quiet let me talk
about give these days because it's what I Michael article about whatever I got
access to the other thing that over the charge pretty much always give now as we
speak it is i don't give you one long boring tool instead i'm going to give
you three short boring Fox stay i find this health break things up angel if
you're not interested in one will be interested
the other two topics are connected in general if you're interested in him
often come up saying and I have slides my slides are not designed to make any
sense for without speaking
so I don't get our problems slide go to this URL here talking about my lists
various articles and things on my website that are relevant to some
getting and you can generally find reasonable material there as well as
lots of little things like to now the first my 20 min talks is going to be a
topic i haven't talked about all the new tool based on talking about skinless
data structures this is a popular topic talking at the moment because if you
hear people talk about no sequel databases streets this
that was a little while that another big advantage is many people's lives is the
fact that they are limitless
this is a topic also likely always one of these on very well understood either
what we really mean with talking about stimulus and also want the real
advantages and disadvantages are so I'm going to talk a little bit about that
i'm going to be in read by focusing on the water side what we mean by not happy
scheme and the various ways in which it drops off on mental a little bit about
when Inglis easily isn't a good idea
so when we talk about unless the context of data structures particularly nice
talking about sequel databases it's generally yes
comparison with relational databases so a relational database you basis set up a
structure of a relational title as you create you define various columns of her
loud and then answer tonight internet activates the data has to match the
stuff for those columns maybe try to insert something that doesn't fit
Camille you haven't defined you're going to get an act you can be prevented from
carrying out back surgery now with the scheme of this database you got a little
extra bility you can store a whole bunch of different records in there and the
database is not presenting you whatever it is if you want to store you gain a
great deal of flexibility because of the fact of having a schema although when I
saying haven't got a schemer that's not really true equal to all the bad things
inless it's not really stimulus imaginative also safely stored in your
comment in a way and you want to find some information so you say ok I want to
find out from a whole bunch of Records tell me all about it so you need to do
some kind of query and you'll highlight various records of actually very but
what happens if you using your data and you actually have a bit of variation
here such as a fact with 19 feels differently
one of the things you can do this english databases you can store they are
very key value as you like
so you install the same semantic later on
different names which is cool and helpful except when you want to actually
get over back information and it's not going to show you expecting it
the one thing about this is i said what we may not have I explicit relational
schema relational database but there's still an implicit schema that implicit
scheme it is Howard owners using today if your query based on certain the old
names that's effectively an implicit scheme about data and the implicit
steamer has a big effect on having to use the data after understanding
listen schema just as much as you can actually understand an expert with
relational database there's a far i talked about this in terms of databases
and said that certain kinds of databases may or may not have exclusive demons but
the same is true of any network programming exercises well so let's
imagine were defining classes or even all the records structures you know that
memory data in memory processing what we're actively doing here is dividing
the schema decided if you can access our customer object here are the names of
the fields within the talk to and we're really struggling environment we're
going to say some things about the types of things like to see in there now just
as we can use our schema-less approaching databases we can simply use
the schema-less approached Caryn every discoveries led a very popular approach
is to use hash max addiction is associative arrays that you want to call
them have these value packs and in most programming languages we can do with
these people stuff even a snack
simply typed with a very rigid and inflexible and all the type system white
job we can make those data structures apple is behind the same text may not be
as convenient as it is with cool scripting languages but the basic
operations school of the sign and just as I moved ignites where you got this
notion of implicit schema that's still just as president in programming
languages as well I mean really the only difference between where I'm going to
use addiction or using class is what's the exact syntax i'm going to use in
order to get information again even if i don't have an explicit schema in terms
of the fields of define x still happy inglis's while keys to actually use to
insert all the information and if i'm putting those keys in his literal values
like this then no difference between having / Ingles in terms of you know how
couple i am to the data structure is a lot of people side while the great thing
about stimulus nurses it means you're not so helpful to have more flexibility
well there's no real difference in flexibility and i'm typing in key names
when you make a difference is the fact that it's now you can actually passing
our variable don't affect the very field names effectively as parameters for
easily and you can replace this is when you are going to see feel that this
really taking much advantage of this seamless nature of a dictionary if you
just typing any literal into your cover if you're passing values are
out then you're getting 260 of different things but even there you can typically
do that with regular class structures as well it's got some kind of reflection
instruction so this is for instance you would do the same thing in really where
you can effectively call methods on some object that like let me know the
difference between a schema schema listen in memory is an all distinction
and it was screwed up get back I'm back when he grabs multiple passes in the
mid-nineties talk back in a small again this trailer is it good to have what he
called Colin state where we have pics method names always good to have a very
real estate where we use dictionary since day and are real trade-off between
two quantities which are basically the same batteries and existing databases to
and I'll talk about those primary later on but before I do that I want to bring
out the point in fact conduct have to choose between one or the other it's
perfectly reasonable to use of common state and area state to use schema and
evil asst in the same class this is the example of doing this in programming
language where i can define some fixed pieces of common stakes another the same
time provide addiction bring the variable state and then I can use the
common state of things where I the board explicit scheming I very light the cases
for a walk their reaction
it's not an either/or choice you can combine together
similarly just because you're pulling night
the stimulus or doesn't necessarily mean you have to use it as described in your
in every program so this is a common thing for people to see if you call it
being I grew because our name breathe through some kind of fiction like data
structure for instance maybe I don't parts of Jason into addiction great and
i'm going to use that customer well typically one might consider doing is
they're lacking that round we have explicitly define ethics but you're just
going inside the dictionary on the insides but then that gives me the more
explicit structure so i might have a scheming speaks of days now but I can
rock a schema in memory so here is that as I said it's not an either/or choice
between fear and stimulus when you're working
certainly many structures you can combine the two together and find people
don't necessarily need to do that very often but it can be anything
all we could do a whole point of object orientation in many ways at least
encapsulation object or innovation is the fact that we can actually do
presented wanting an interface that's different to our clinical data structure
and there are lots of advantages in doing so we can do schemas and stimulus
stuff in memory but we can also in fact it's very common to see people do
seamless data structures in relational databases which sounds kind of over the
whole one relational databases is I have a schema but it's very common to see
where data stored in relational databases in a similar way here's one
way in which Lewis I you have a whole bunch of fields of columns in the table
we effectively nine value pairs it's
your query I but people do school day despite I'm sure spend any time with
relational databases you've seen something like this and his number
approach to doing it in this case what they're doing is you're basically
excited well let's accent of large objects typically a patient Jason claw
stuck into a failed again it's difficult to query in terms of people because
sequences not everywhere i'm ready to fly in which the store is kind of
schemas data into a relationship advice
here's another skin where typically have some separate table that allows you to
hold this
exudative and this could lead to a lot of extra drawings & Order balls off
again not easy to query because of the fact that you have to really twist
sequel in all sorts of directions have been twisted but it's a common thing to
need to do in a relational database and normally spend a lot of time working
with relational databases without having seen at least one of those books in one
program so scheme of stuff exists in diagnosis exists memory and it exists
often involves are particularly obvious
the other thing about schemers is I tend to get there are two styles scheme
around day so far are talking about beavers in terms of storage control
mechanism within your relationship dynamics keeper it stops and putting the
role of data into the database at all
that's it basically you can't book square pegs into round holes but it's a
different approach to schemas which I referred to as a predicate schema that's
basically says will store everything might we have a square peg round pegs
whatever you like but we use scheming as a mechanism side obviously six legs
around or not it becomes a way to test the school to see if it's your problem
now close the million case of a predicate schema is where you use eagles
with xml xml allows users or whatever you like
right everything looks very worst trait is any act right in XML is usually
stored this textual representation so it may not even really well Lex about but
even if you have el in xml you can store whatever values you like make up
whatever tax structure them however you want to
however scheming to do is test was an xml document the server set of
characteristics that most common ways of finding a predicate scheming xml are
actually pretty only rxs duty which uses they're not quite but not as power this
is actually the ball of schema my brakes now it's this is relaxed compact
pressure which is part of relaxing chilling and i usually quite a lot
because i think it's a very readable by to describe the schema if you've ever
written anything
that any grammar file recognition you recognize the field for it hopefully I'm
gonna feel the harvest even here is matching the xml document now this
brings a lot of interesting characteristics of Credit Scheme one of
the nice things is you can plz room the board wants the language of the same
kind of thing which is really kind of useful because scums scum
I'm thinking excellent after some excellent someone xml roller sons
languages good representing certain constraints but other languages there
were different kinds of constraints
why should we use only one schema language construct trying to represent
so one of the nice things you have choices available to do another choice
but nothing that is a particular external document could be validated
look different
xml schemas so here are hanging another excellent scheme where I'm taking the 1i
took the call and said I want to add some extra rules this and this is
because this brings out a very important issue about validating any sort of
information when people think about validation like typically saying or user
object document whatever that they could never deliver to clean yes no general
case but i was able that's a bad way of looking at fingers instead what you need
to say is a document for some conflicts one of the valley appointment when
you're just trying to request an appointment isn't necessarily about an
appointment when you're actually converting because there's additional
information needed this later .
fine so validation is very much texture longevity is valid its value for certain
complex and usually the best way of thinking letters i think i think about
that context thing at something that you want to do its value airing episodes
valid request very valid confirmation be valid all recording them something
actually reappointment different states different actions that you want to do
have different notions of what is politically and this is where credit
scheme was a much better because you could use multiple schemas for a single
thing with with storage steamers really what the context is an allowed to store
visit all she's often not terribly good context because it's often very useful
to be able to store in valuing invited information because it's invalid
incomplete and you want to be able to store about then gradually build up all
knowledge until you reach your Valley order to do something with my nation but
thinking about the limiters are as a as a single yes no global context thing
gets in the way of that kind of thing and this is where pregnancy could be
really very easy so it's really fun call box schemes can be and what are really
the main point here is trying to expand it was a warm i think all the
president's college
it can be databases that we never ate schemas various different falls so the
question is when do we want to use a similar approach whether we want to use
this approach uses schema and to me there's one really one thing but drives
this whole process
let's imagine i want to manipulate some awesome piece of information customer
record and I wonder what I'm going to be scandalous treated as a half simple
picture out lots of lots of this stuff it's going out there is something in our
system that relies upon using these hash maps and I want to get some information
how do i find that what information is present in that fashion or really the
only way i can do is I'm going to go into color I'm going to look at all
places that cash back thats related and see what he's on this is the problem of
the implicit scheme where it's going to be a schema there's always a schema I've
got to find it and incoming rather heart I lots of cold out there
where do I find all the places in which this stuff is being God what I think it
boils down to is that we don't like we shouldn't be liking implicit scheme
because there's no easy way to find out where is what happening in there you
need to something really useful to be able to say oh I expect the worst field
and it's going to be called first name not Christian thing we call chris
tonight it's going to go up and back to where it's gonna be
and a schema that doesn't necessarily mean you have to have a scheme and other
stories that are not saying we necessarily have to go to but it is
always good to be able to side I can find something like that expected tells
a little like
of cheese a little blood and I have some programmatic like which I can check to
see whether things that rhyme scheme so we can do that kind of thing with the
president's statement we can do that kind of thing without storage scheme but
having some way of knowing what it looks like really really useful and that's
widely push back against the people whose names evil is good ski Melissa
really will ya might be the thing but it's an implicit even that needs
something usually very back but this is what we should never use it
there are cases where the weather even our visits even is a bad thing
other advantages or a bigger thing on product and briefly at all why typical
cases are here to boil down to these places places on the land examples of
your non-uniform native well in most common ones that used to be particularly
ways these things like various Christian relational databases is where people are
all custom fields now here we kind of have to have the most most approach
because we don't want to even while still going to be going to use and the
cost of the illicit schema is not so great goodness because typically people
using custom fields that were very formal plan screen and what the access
to the scripting in a very localized context so the back of the scheme is not
such a bad problem so yeah but the unique custom fields been using some
technique of a listen skin of Englishness that's going to be quite
complex and every example is when you're the day two types of yourself a very
non-uniform an example of this is an event for different events area all
sorts of different
now if you've got a very rich and powerful predators schema language you
might be able to handle back web but in a lot of cases the skin behind what you
have available is not just not up to the job i made a relational database schema
is very happily very non-uniform datatypes my kids so in that situation
we got ya
I don't like Melissa all this implicit scheme of stuff going to have to go with
yeah that have to agree with of area where people talk about us being a
world-class is it in migration being able to come changes in vegas keepers of
the time and they said well this is much better to do skills environment it's
easy to make changes here much less convinced because of robberies you still
got involved with the implicit schema again it's always there
it's just not so very easily visible you've got a little bit more flexibility
because he decided well since some of the record says it some of the records
zip codes i can adjust my reading programs like look the pieces of data
and how to pull them into a uniform interface it's something you've got a
little bit of extra tools that you can use the Vatican and eventually still
have to deal with skin migration insanely fabulous evil system as you do
with the scheme of an explosive schema because again is always visits there so
the fundamental is most of the time prefers have explicit schemes there were
the extra energy one with it
essentially the clear statement of what it looks like there are cases where
business is useful but they're relatively they're relatively limited
cases but they are very common cases but the good news is as I've indicated wrong
way subjects into together and so combining them often be quite effective
access to triple the amount of plants there so the second thought i'm at the
end of the talk around somewhere comfortable offering no sequel
circumstances and again staying relevant technical area i am going to dive into
another area that I find with people who talk about those simple stuff in
particular often you hear the wrong message here looking at the topic of
consistency and the messages are gonna really love about right heel is what
people say that while relational databases they use acid consistence acid
transactions always kind of thing while no single isn't like there's something
survivors someone that wanted to thank for somebody came up with some clever
and meaningless acronym it's even more meaningless acid but the thing is that
the story that consistently no single database is way more interesting than
just some exactly . and that's what I want to at least expose you a little bit
to this book so that the heart of this is really the fact that when the story
conductor relational database is what we're all doing is we're taking some
large Club data such as
for instance and we're breaking a nail into loss of individual rows of you lots
of different flavors we have to break into splatter effect relation in
structure because related or relational approach is based on the idea of these
tables and strictly relations of taking around so something that we might think
of as being the water becomes many things in the database no business
schools leads the things
yeah what we possibly go wrong so one knows i'm using classic example of
consistency is one person says I'm also and stop saving it all database so I
stole my line items in one table and then somebody else conference that's all
I want to read punk updater about borders with two different tables behind
the middle of a drought and gets the stake in the middle market this is right
because i have to split up my day to put in lots of different places
somebody else actually read the state of the database in the middle of my right
and see a state of data not just use wrong and should never existed because
it's completely that was never true and this is what it makes of a subtraction
price ceiling but it involves things to remember it's a consequence of the back
but I'm taking one me and splitting the whole separate things one of the crucial
things about many kinds of no sequel databases is that they don't have this
splitting in two separate things problem actually take the whole thing and they
still holding a single thing I list is not true all databases but it's true
many of them and while eliminating kind of
persistency problems are dirty reading things about it doesn't reduce the issue
because nervous or in whole things that were thinking about and the accident is
why i use this term aggregate we have these logical clubs but are aggregates
that we tend to think particularly in certain contexts and we stole a whole-
dyes are used to an aggregate because it comes to their evidence for the main
driven design we talked about wanting a very valuable things about doing the
main modeling and modeling of the world is that is to try and work out what the
aggregate saw and thinking of those aggregates now when we look at the
various no sequel databases that exist out there and this is not a
comprehensive any means but it gives you a little deal out there typically they
get divided up into categories based on the fundamental data models and I'm not
going to really explain the difference between some of these things except when
you're bringing water very important distinction and that is that many no
single databases is that most of the categories of database no sequel
databases what a full active oriented and then they still manipulate whole
aggregates of information if it's a key-value very base its value if it's
called the family very nice
it's the Collins family if it's a document database it's a document there
are differences between those data models although is actually very glowing
lines putting these distinctions but I think what's really interesting is the
fact that this culture of an accident and therefore web databases small is
where exactly
manipulating like folders purchasing or articles in a newspaper system clear
arguments were really really well without oriented databases but not all
no signal databases are going to orient the most noticeable calculated isn't the
graph databases which are all about lots of little bits of information connected
to get me complicating where the relationships don't like the relational
database click the tiny tiny little to no relations people over the ways so the
key thing to note here is that these craft databases they do have active
transactions they have to have acid transactions because they paraded
logical things lots of little pieces
the aggregate oriented databases don't need transactions as lunch because of
the story that doesn't mean there's no transactions are still the ages of 30
rights etc but thing the becomes a lot less prevalent effect because of able to
operate on large data structures fine reason to think about when we say
getting rid of this common army it's not true decide no stable databases are acid
because many of them are based are also remember that the different meanings of
the atomicity part of acid because we've got a much bigger battles in case
because they're acrobatics this is another example of consistency
consistency problems so he is a common situation versus your browser stopping
to serve talking diabetics animals
we're going to talk about persistence issues no interesting stuff is where two
people doing the same thing so he's a common are we will begin by two people
getting the same basic things
the information same piece of data structure then once the two of them
above reading the same thing one of the chooses to post an update into the
database and then the other person without realizing that posters occurred
at x2 also update the same record but in a different way obviously trying to
update the side records into different you can pack of lies
we got robbed so we need to do something to reduce left ball and this is what
transactions sailors right we can just take the entire interaction and records
and transaction
how many of you would do this to sticking out but this is what
transactions of all explicity isolation consistently now design now i'm doing
this why I left because as we no longer in transactions about idea not the
database except exactly exception is a bit of a bugger me right now because
this is the whole point of what transactions supposed to help us too
we're not actually use them but we actually have to do is stay you have to
wrap the transactions around the last little bit of the update the big take
some server into the data banks and this is no very useful because it means we're
not going to have problems because something is right under some goes in
the database also please crying over rows of the legs it's done you know
transactions are useless they are help but they can't solve the whole roll of
quarters we still have to do something on top of ways because we can still get
that clash clearing we believe all this on doing web and media way to get
randomly something so my application architecture book title upload and
essentially what this being exists when we read the games of weary diversion
stamp the date when somebody other day
that Russian stamp gets updated now is somebody else pushing the sign-in and
operating on an all-russian snap we know something's going wrong
what we do about it and all the circumstances you have to figure out
about it but at least we know what's going on the same kinds of mechanisms
are required when working with no sequel database because the aggregates again
and still have this kind of thing happening and so you typically see
question that's being used in no sequel databases to explore the same thing but
important thing to note is that it's not necessarily a more work than what we
were doing anyway transactions useful and valuable but they don't solve the
whole problem for us we still have to build additional mechanism and this is
also why in the definition of aggravated the errands but he talks about how
aggregates are there defined by the transaction that you don't want
transactions across aggregates and that's bottom at the start of that
that's what he uses an aggravated seems to be such an obvious way of thinking
about that and I possible that the so far i'm talking about one aspect of
consistency what I will modular system these kinds of consistency the problems
are sort of commenting using some kind of multiple multiple people using the
data but no sequel system simply introduced a whole meal air system
problems to do with reputation the reason why a lot of people like single
databases is because of the notion that we can easily replicate the day two in
lots of different places but if those as soon as you start having multiple copies
of the data around you introduce a whole new way it's very noble consistency
again let's look exactly i've got two copies of the same date the last of
telling what you want to get into tonight and two people want to look at
that hotel same time so they submit the
request to the local notables was in my market known as in Boston remote
mandible whatever you want to submit my local number to put that master well of
course what's going to happen nicely interconnected world is a note to note
for each other and other than in conversation one of that will be exactly
what you wanted
so this is how it's supposed to work right but then let's take this scenario
and let's break the connection now what we do but we still going to submit our
request but we have two alternative things happen as a result of mix the
first choice is to say well the connections broken so that's it there's
nothing we can do without
sorry no nobody could look at Hotel rules you have to say well okay
connections down so i'm going to allow people to google a stone unless
something happens and other business process to happen it's something you get
very apologetic for next second person that's happened to being given talks
output to the hotel room and I'm sorry we have a problem and I know what
happened right there
so how's the side always leave some hotel operators of businesses expand
background this is not your mobile equal to Delta consistency problems and hotel
and you know how teenage usually don't want someone that like Republicans will
give you free calls the wine or smoothing over is better to do that with
a better ship that your entire hotel system while your internet connection
step by the way that choice is ours to make our software guys this is a
business decision thanksgiving what we're doing is deciding between do we
want to completely consistently with the world or do we want to make sure the
system is always available number running and as I said this is not
software decision it's a business decision and we can backwards it's not
about attitudes one of the other the great example of you want to buy the
military in the one example that always uses the amazon shopping cart and as
always make sure you can put some in the shopping part because boys be mostly
full thing to be able to do in America shopping
nothing to stop shopping so what we see is something that involves we're talking
about consistency very simple partition tolerance which is absolutely the
necklace and basically when people talk about the fact that they say these three
things you would like to have the ability to to run with the network
broken be consistent be available by the way to get have 23 these things that's
how you do it i think this is not particularly good way to think about the
problem the way I problem is to say if you're in a world where you may get a
network which is not going to happen another single server machine we're
together right side up or down it doesn't split into as soon as you want
to move data across a length of cable or wireless of water that you may have a
network up even more partying mayor maybe even have to choose between
consistency availability you have to choose you don't get to have both
yeah and said that it's not a binding there are degrees of consistency and
availability been working there are also different transactions can have
different properties some situations you make one really consistent some
situations no availability step so you have a lot of choices and they have
choices based on business
leans against our technical thing it's a business choice what matters most
everybody likes his backing examples are you with me consistence acts very good
at being with consistency as you'll find out all the time
anywhere near our actual system and it's actually not usually a choice of
inconsistencies availability
interestingly enough it's often choice between consistency response time like
accuracy if you're going to have to talk to external systems make sure you're
what does that mean it means that every time you have a transaction you're going
to making remote remote systems
what do we know about remote systems slot so often you'll find actually
trading off consistency response i mean you know somebody's one in the body
really full thing are you gonna hand around my to make sure shopping cart
consistent before you accept the wanted something in the shop . why is the most
important thing for American students shopping and Jerry that if you believe
in currency work ever in your life probably know this is really special
eight of the very fundamental trade-off in concurrent program which is between
state lines so after their ingredient to up of consistency in some of the
consistency issues single databases
these are a bunch of topics are not talking that because I'm not time you
might look like you need those but what you want to really leave you with is the
notion that this note this idea that relational databases are absolutely good
and consistent of no sequel that the bases are either a good and consistent
wonderfully flexible it's very not very useful distinction I think it's much
more useful to remember that when we're looking into nelsonville will have to
think about the differences between the aggregate or
scented and the non-active oriented databases that a Gamorrean because
they're putting things together and aggregates allows us to think about
consistency transactions and unless important because of that and also
because of that actually bringing replication the distribution we end up
with this trade-off consistency like adults mostly for the great American is
shopping going to be better than dancing
goodbye number three were able to say showing that's that's all Americans like
just got plenty of shots and Denmark as well for anyone more on this mandatory
look at that I could spend a lot of time talking about what various books but i'm
gonna show you one that's that building was I did with my colleague promotes LG
why all the examples have me and cannoli easy intelligence test go
ok so that's the second of all you don't need to platform the second floor
so the final talk a bit more male and higher-level many ways will be no code
shown in this talk is nothing so but actually a very fundamental both people
who write software and people do need your bi software really comes down to
very existential question for me close my whole career is based my whole life's
work is based on trying to understand what software design which great
question of well why would anybody care that's a design what is valid and it's
triggered by things like this how many ppl third this without a manager
customer or when people come to me and I side
oh it's terrible to think these deadlines people so we got to make
quality code have to do that so how do we react to this
how does people react to this well one example
anybody recognize this guy people recognize this guy party uncle ball
parodybart software record his approach to this issue of what is about software
design basically runs wide arguments of layers display that design is a shame
if you have people saying that you push inappropriate responsibilities to get up
buddy like that we find you choose later there will be Bradley double flesh as
your body
so basically doing this argument is a model exciting your black person if you
are very good sort of yourself but this is not very actually very satisfying are
mainly because i can't do preacher figure that box too
I don't like it seriously enough to talk about the set button it but also because
i'm deeply cynical now it's all very well but it's all going to more
important things to do good software design but I'm cynical enough to believe
that you know right property always trumped by money so to me its software
designers were doing
it's gonna be an economic reason all moral reason otherwise why not
so what is economics
let's go back to express so I threw up in the beginning what's going on here is
the notion that hot in here is a mindset that says a quality is something that's
trade but if I want higher quality i have to pay more for it
this is very naturally through many things in our life now we want the
really nice Lori testa rossa but we choose instead to have some toyota camry
because there are now we will disclose my food we're constantly making trouble
for that really nice artisanal cheese or not and a lot of the time trailer
functional quality cost if I want high-quality have to pay more but what
do we mean when we talk about the party software i don't mean lots of different
things now its userbase nice cold nice structure all that makes it into
different things we talked about his politics but there's very moral
distinction comes across these things that summer big students are not visible
to the people who barks let's imagine that can hear he's selling this one of
these software those flowing water flooding is and he'll sell it to you
$400 my good friend at the background right very wonderful guy who all right
now can't talk about it is not listening to you know the riot after some software
and it costs $500 exactly decide now it turns out google games are canceled its
falling its director he's not a whore alexis Ryan beautifully crafted uncle
but in light of the fire while the life there is something the bucs five bucks
what should I care
ok it's not visible to the way it is the distinction between external and
internal port what matters to me is a fire is gets so why does internal model
Carol watching anyone care that whole statement
I'm can software I answer this question move but wanting a little sued over
typically when we look at a lot of software projects we say well we can
move really fast beginning really happen
just very rapidly but us knows all things slow down we don't pay attention
to putting some design the speed at which features drugs and so after a
while I feel like every time you want to do something to the code you can spend
that is hacking away through the code lights to actually do even simple things
having a little problem but we're good design is an alternative that says I was
going to carry on with the project we are building up this nice little bit
library of reusable components that we can arrange tweaking new ways we can
evaluate much the only fact functionality really quick because we're
just combining together if we come over here and we can do really powerful
things very quickly we don't have this effect of slowing down we're going to
want to have an effective speaking up how many people work on a project like
that less but still many people that's the difference we going into politics or
into a party
it means that maybe in two years time comes along
Ryan has produced a dozen really significant updates but maybe stuff
we're competitive out care of barely managed to one of his crap over time
clock back design quality matters but it matters in an economic way for me as a
fire i'm buying back ability to add blue things really rapidly quickly so that
the heart of your Harvard this is designed stand my offices which is also
realized someone
a long-winded name but the point is designed off-campus establishment to be
able to go quickly before . and i called hospices because I'm not prove that
these curves exist but i intuitively of experience believe them to be true of
most software developers I know also see the difference
don't know what design starring opposite sign up i want to add a picture of a
clean it's much less than my two people lots of well don't know essentially when
I added feature there's a cost of $MONEY due to lack of words on that means that
every time a costume or alternate and you feel this talking to say it really
easy to happen to you but I've got into business before I get back that
different coming in so the guard came up with a really good way thinking problem
at least told many people recognize this time what the inventor of cookies all
the grandfather of the Wikipedia but also a very major design thinking in
small world very big influence on the early days of programming the whole
patch all Revolution he came up with a metaphor thinking about you said what
we've got is the difference in complexity and our old blades is causing
extra for new features we have any of this as like a debt by taking on this
extra complexity we're taking on the debt and when you take it over there
things you could you cannot keep multiplying the interest which is the
additional possible outcomes through all your kind of the principal was cleaning
them come
that's the trade-off you guys you want to keep interest you want I'll principle
and that also means give us a lot of thinking that how do we deal with some
styling stuff in our complex this module of yellow track bad living areas i think
blue but I'm never going to touch it don't need to enhance it actually
doesn't have very many bugs in some weird reason so the fact that investors
of address it's not exactly very many interests on your time I have to either
but is not but I'm always anything for always touching so I was nothing is more
important to keep it clean
hiya on that principle because otherwise interest and now you want to think about
dealing with the Mexican fields of devices is it was like that principle or
is it worth time I interesting time I don't like the choices we consistency in
my ability to talk about very wrong
there's no way your voice towards you have to play God way or the other
the question is which is the most efficient work and there's nothing is
what makes the technical death metal so useful it's a good way to communicate on
software developers the consequences are crowing design because its greatest get
the side this is the choice we have do we keep going slowly or do we put
selected picking up and looked out and that put some cleaning up isn't
necessarily meaning starworld two months waiting for you . not actually treatment
or almost everything
it's a case of under put the energy to clean up a little bit as i go to put
that into burying that curve the other way so that i can continue w
I don't suppose we start from the beginning regiment we try to always keep
clean and the benefit is able to go quick after we cut that technical debt
system we don't take on so much so technical data for something very
valuable white communicating think about how we deal with cymbalta code but it
doesn't go straight an interesting question which is how the technical debt
here in the first place
why does get message so what exactly is a tablet or a reasonable example thanks
where you've got so very important demanding deadlines gotta hit you could
save yourself
well I can see two ways of tackling what is really clean like it's going to keep
good health code base one is a little messy but I can get there before the
deadline so in some cases can make sense
starting i will take the messy room only was the depth i do not have to either
find interesting
all of the principal later on but I thought about it and it's worth it
because it's really more features in this product before the trade show the
end of the year or whatever time it is but it's not full technical that most
mostest see most of the time it's almost my colleagues time earlier muscle
telling the dead i tend to hear about is always going to some co place that we're
not signal only God these people had no idea
doing is holding his whole mess there are some people who are you had a little
argument about this he said he didn't feel that was really counting steps and
my response was well I still think the value even if you got a whole message by
people who didn't want to do you still love triangle right do what I keep
paying the interest with what Prince what proportion to workout I've still
got my choice of an American value choices there there are differences
camera was closed and that's the most important thing about difference is that
one of those steps was taking on proven so far more about it all of a tray dots
and talk about that anymore
personally I mean I'm let that fix the debt for one big do we all know Morgan
take all the instruments of that recklessly we can pick up government
right haha so just as a financial got reckless including debt in technical
will also got breakfast but it's also another picture looks very interesting
here and that is in the first example vs I can order that you what they were
doing but a lot of messes people don't know I didn't even know ever taking on
with that they just didn't even know how to do design so as we look back without
realizing so we got to this engine reckless imprudence the little
what's the most involved not just gone for the party drinking playing with a
big-ass consultants we can do conference so it's interesting to think about is
what goes in the empty holes right so let's take this easy one reckless that
you want the field but it's a difficult one spot in practice because we're
constantly exhausted to Magnus trade this is the trade-off people say all the
tangles and you don't have to time to ride quality code we've got to go ass
back with sacrificing speed while that handle approved thing but it's more than
recklessly because people have a lot of trade-offs quite light in their mind to
do this how interest rate let's go back to that little girl she really wrong
now the trick of course is in training off the whole point of this proven that
is your training obviously the value i get our shipping two weeks earlier is
going to be more than the cost of little interest of all documents right that's
the true way of thinking about this back-and-forth and a lot of people
screwed out of the recipe costs and perhaps over whatever but the really
interesting things is no reason that
Oh backtrack of only occurs until those lines trust that I remember this is the
design of wine if you're below that line then you gotta struggle but once you're
about that line there is no try
making quality lower will actually slow you down and this is the heart of the
problem when people say think about this is all so we must do design because
that's all the first good cracks except except for those evil managers and
pushing this back as soon as you're thinking about the problem in those
lines your loss program as a loss the customers lost managers across any
models because they're they're sacrificing quality in order to go slow
doesn't seem worthwhile trade your remote design pipeline back that happens
and that's what happens to those things that make you cannot make this Cuban
decision if you training in terms of morality you've lost because you're
fighting the relativistic mechanics always that's the way you've got to wrap
got hold of the economic aspect of this now unfortunately what makes it much
harder you know making measurements right now we're in the financial world
will get that happens easy to measure your money and nice descriptive hope we
might want to do that things are so I fortunately I cannot tell you about
design for news we don't know but from my experience people i've talked to I
would say next weeks not months its one-way accidentally it's amazing how
quickly one long moment and you can blow any benefit you get from speed things up
and it's very easy as you know we call buttons and blow away today two days and
suddenly about next 24 hours world
right has been completely dissipated it also raises another well but when i'm
going back to book one of the things that people settings helping displayed
manages give you the type to be back by and I oh but my answer that laws but
actually don't tell that wasn't strange exactly because of you was it is the
people working in a codebase good one who got the best feel what's going on
mr. right
we are the best people to set costs and trade routes are about his arm if we
choose to go faster by cutting down 40 and anything done by causing more
hostile in the medium-term effectively we're getting bad advice to the people
who are counting on us
good job we're robbing our customers that's happened that's not good thing
that's where the relative distance right it's not good for us
robbing people famous but i think that we have to get nothing overall in
economic terms i think thinking of those of this the bear design is the way to do
that anyway I have a project croons inadvertent debt that sounds I mean if
you think in financial terms are heard some people suggest things I can think
analogy ourselves prune and why's that
take off without realizing doing it and yeah it happens all the time
this is where the analogy doesn't work so that doesn't happen but it was
crystallized to me really well when I was chatting with one of my colleagues
and I are trying to go around to various sizes for words for people do the real
work because you have to make it right tools like this i have to contend that
the only way i'll find out what be talking really do start telling me
what's going on so I was doing anything like them what about the developers
don't manage project if you know last year yourself and the project going
really well this was really happy to build something cold little ship good
smiles all around everyone was happy but I'm until he wasn't really completely
happy with what I've got a probe a little bit unfair
so wassup well-designed anyone about best developers one of the best
architects what did not have believed you will let the design practice and
he's a class act delivered properly it's just like I now know how to build system
I didn't know what started and a lack of steaks because of that but now I know
the year later many people have that sensation everyone right because we
learn as we go so and this is actually the technical that water line when you
talk about we take on this debt because of our lack of knowledge or lack of
understanding the problem often are like another strategy technologies because of
the rapid change bc technologically usually about a year into the project
you say all now I know how i started this that's kinda
and that's Colin and sisters the very best teams in the world will correct
that way we won't anyone talk about building the side electrical system in
the same identical technology to three times except in GG with c- order . but
basically we always take on a certain effect and I've also something buried
behind comes to the vault that because we've already not something that we're
taking whatever we got to be extra careful that so I bunch of stuff written
on the web last about that my blog things they're also revised pulling them
. slick is the last fall i hope you found it useful
thank you got a few minutes for questions and yes anyone anymore
the second question is why are 1 items into third been consuming the answer is
yes but work closure i listen to a tall white paper plate with a tommy actually
really interested in it because one of the things are another mother was also i
didn't talk about is emotionally better source which is by saying when were
stopped by working with the system we it's a useful ideas for every single
thing updates cyclic system and keep that love tank is forever so we can
anytime determine its normal state system
look at how it is also very powerful click on the way out
typically talked about inside it's really treating our base data school
when we get any version crosses I get those every change the exact will have
syphilis is like that needs us
so incredible capabilities we don't get back ability to our customs differently
but when you do we can credibly power and so there's something very much moves
in that kind of viral schools all of these little statement is what i call
the event right amount of course it's built on the idea of the Father lot of
so there's a lot of very interesting things about it but I haven't tried it
and also I don't know anything about what works projects and actually tried
it yet not mind actually it's the 1i think something is really cool but I
don't actually believe in school about seeing at least one preferably three
four one two separate things use it well three movements people tell me
disgusting stuff is good better believe it
so when it's going to ruby in the early days i was using room before anything
else for the wild horses but meanwhile i do running my website is what we do on
our project
there's only when they're that all will be giving them some useful strategies
with our standard side i think he is actually good stuff
now I don't have to do that that's right works for technology right up
it's basically 20 other schools around like we got a secret so they talking
that's really interesting i think that could be really cool but until we've
actually put it into use with the customer trying to production that is
actually cool but are and where is alright to be able to tell me that it's
really interested in this sector loving is a very interesting question ID
actually the previous month separate so what happens when
you bring over the years that has been bad necessarily considered old toms sort
of obsolete technology emerges and it's proven by the better balance a Rudi's
more clustered way many things that sort of makes your hole Kobe obsolete and
nuclear down cluster better you have . technology and management and always
great when done well you can use electrical technology again right
the printing of the principal would be great political system productive
language which is a big place all but about wanting is interesting segment of
the extra cost of working in your existing technology this is what would
be working in technology so again it's illegal trade now I'm excited that have
you computed it's obviously much harder I indifferences difficult
yeah that's that's full of that fundamental trade-off is it worth
continuing the credit artsy movin slow and you could all be the price things
over becomes part of that and that's one of the things that's driving a lot of my
colleagues in increasingly what will we
black line is I try and build systems in terms of more independence smaller
pieces not part of that sort of modularity arguments been going on
forever and always try to crack that public school islands of course memories
have elevated together moving the complexity for preventive moment into
the components connection often carbon spot the one very interesting is if you
buy this components all of lower-priced completely replacing I'm back this is
very interesting in the context of technological tractors
ok let's make it a rewrite more economically feasible now we'll look at
the longer-term I'm saying it's my feelings it's too early to tell but
certainly direction see more people going and that particles exactly it's
just so hard to predict what language used to go with particularly now we're
in a much more fluid and divergence state I back in the nineties the world
was converging on java and for what it's like a choices job decision you have to
make don't have to do like Microsoft that was basically who's never
technically right between jobs that it was people how did you feel about the
least read now there's a huge amount of variety out there and that's making the
decision of a lot more complicated I'm sorry group which is about time that the
good news is never going to be here afterwards or anything
one study questions feel free to come talk to us what happened engine so I
think that simply even thank you so much for coming we do have some logistical
question we're gonna be sending out an email and we'll have some video clips
from tonight's back to mailing was so the expected next time next week with us
feedback parts and try to make it pretty simple green good yellow ok
read ad so you don't want to throw that out that is very helpful to us and help
us find the content of providing i will continually two minutes like this area
so looking for things that keep putting forward and most of all making can take
Martin for taking time out to speak to all of us and appreciate everyone
expense so thank you very much